diff --git a/.claude/commands/design-org.md b/.claude/commands/design-org.md index e8e08a32..723155fb 100644 --- a/.claude/commands/design-org.md +++ b/.claude/commands/design-org.md @@ -169,7 +169,7 @@ Generate the following files in order. After each file, briefly describe what it Follow the pattern in **Appendix C** and `/governance/examples/OptimisticExecution.s.sol`. Also read `/governance/claude/global-environmental-movement/Deploy.s.sol` as a concrete same-folder example. Key rules: - Contract name: `Deploy` -- Use `MAJOR=0, MINOR=1, PATCH=8` for registry lookups +- Use `MAJOR=0, MINOR=1, PATCH = 9` for registry lookups - **Metadata URI**: use the URI supplied by the user as the second argument to the `Powers` constructor. If no URI was provided, use an empty string with a TODO comment: ```solidity new Powers( @@ -885,7 +885,7 @@ Draw on excerpts surfaced by the `search_governance_sources` MCP tool when expla - **Actions script:** `/governance//Actions.s.sol` - **Runners script:** `/governance//Runners.s.sol` - **Test file:** `/governance//Test.t.sol` -- **Mandate version:** MAJOR=0, MINOR=1, PATCH=8 +- **Mandate version:** MAJOR=0, MINOR=1, PATCH = 9 - **Mandate nameDescription strings must match exactly across all four files.** ``` @@ -937,7 +937,7 @@ contract Deploy is DeployHelpers { // Always use these constants — they select the correct version from the registry. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; // ── run() ──────────────────────────────────────────────────────────────── function run() external returns (Powers) { diff --git a/During this Arbitrum Founder OpenHouse - text.txt b/During this Arbitrum Founder OpenHouse - text.txt new file mode 100644 index 00000000..fdc7f18f --- /dev/null +++ b/During this Arbitrum Founder OpenHouse - text.txt @@ -0,0 +1,5 @@ +During this Arbitrum Founder Openhouse we refined our Product Value Proposition and GTM strategy. Specifically, we defined a crypto specific market strategy focused on Powers providing a governance solution that is fit for purpose, in the broader current general recognition that existing solutions are not. Win which e also added a tiered payment structure, introducing the possibility for mandates to be paid. + + + + diff --git a/Pitch Slides - Openhouse.pdf b/Pitch Slides - Openhouse.pdf new file mode 100644 index 00000000..ad687fec Binary files /dev/null and b/Pitch Slides - Openhouse.pdf differ diff --git a/Script for pitch 1 Dao.txt b/Script for pitch 1 Dao.txt new file mode 100644 index 00000000..8364844e --- /dev/null +++ b/Script for pitch 1 Dao.txt @@ -0,0 +1,33 @@ +Script for pitch: 1: +Dao governance is collapsing and is in a total crisis. Billions on dollars have been held in DAO treasuries such as ENS DAO, uniswap, tally... hats protocol even tried to provide another system but this was too rigid ....this graph gathered from data on DeepDAO shows that the infrastructure so far has been not fit for purpose. + +2: 
Our target customers are blockchain startups. They want no headaches , being able to focus on their work. They fear drama, disputes, lack of security. They need something that has easy on boarding, low maintenance cost, flexibility to change things after deployment, and simply works to do what it should do. + +3: 
Powers Protocol is governance infrastructure that provides startups the possibility to create bespoke on-chain governance flows that allows to separate powers, create checks and balances, and encode nested relationships within organisations, and has role-based-access-control for different deliberation channels. + + +4: Until today, that was all not possible in a DAO. This is what a governance flow looks like on our front-end user interface - it is a process made up of individual mandates which are smart contracts that execute activity. Each one is customisable, and you can see that specific actions are tied to specific roles, with checks being made before one step can proceed onto the next step with the governance flow. And on top of that, in our forum each of these steps has its own deliberation channel. + +5: 
so you can have rules that define rights & responsibilities of the roles within your organisation. +1 account = 1 vote + gated access to roles. There’s no token voting here…you can’t buy votes. +Only vote on proposed actions for your roles. +It’s decision making and deliberation side by side, on one interface. +Only discuss actions for your roles. +All actions (including votes) go through this governance system, and so they are logged. +Everything is transparent and time-stamped on-chain. +This could reduce a lot of workload, you could run scripts to analyse data about decisions that you’ve made. You can follow where the money goes. +And lastly, it’s accessible - we have native Account Abstraction support. + +6: +Here are our offerings, separated into 3 tiers. +1: free, with basic access to our catalogue of mandates which would have been pre-audited. To help us build the organisations, which previously took months, we built a Claude skill called /design-org —> it knows all about governance because we used the RAG technique where it retrieves all kinds of info from academic literature such as Elinor Ostrom’s polycentric governance and more. It can even specialise to your jurisdiction, and can pull from specific information such as different types of legal entities in the UK where it would look at legislation such as the the Companies Act 2006. +Tier 2: Having paid for credits, you can have full access to our whole catalogue of mandates where you can build out your organisation’s governance infrastructure and then once built, we won’t charge for running costs but if you do want to reform your organisation at a later date then you’ll need to purchase more credits to continue building. +Tier 3: We are a consultancy who offers bespoke solutions and legal advice on compliance. + +7: Fast, affordable, has liquidity. That brings in lots of founders who are our target customer. + +8: So for crypto startups we bring normal governance to crypto where governance infrastructure is lacking. But this could also be applied to the wider field: We bring crypto trust to governance where social and institutional trust is lacking. + +9: You can go to our website to explore different use-cases for Powers Protocol, view them as example organisations in our front end interface, and read our documentation. + +We hope to hear from you soon! diff --git a/frontend/app/forum/layout.tsx b/frontend/app/forum/layout.tsx index fb9b09d9..967da878 100644 --- a/frontend/app/forum/layout.tsx +++ b/frontend/app/forum/layout.tsx @@ -10,6 +10,7 @@ import { useEffectiveAddress } from "@/hooks/useEffectiveAddress"; import { NavigationDropdownMenu } from './NavigationDropdownMenu'; import { ThemeToggle } from '@/components/ThemeToggle'; +import { ShareQrButton } from '@/components/ShareQrButton'; import { ChevronRightIcon } from "@heroicons/react/24/solid"; import { useAddressDisplay } from "@/hooks/useAddressDisplay"; @@ -110,7 +111,7 @@ export default function ForumLayout({ children }: Readonly<{ children: React.Rea return (
-
+
{ @@ -158,6 +159,7 @@ export default function ForumLayout({ children }: Readonly<{ children: React.Rea NOT CONNECTED } +
@@ -194,7 +196,7 @@ export default function ForumLayout({ children }: Readonly<{ children: React.Rea
{/* Hamburger button - only visible on mobile */} -
+
+ ) : ( + + )} + + +
+

Share this page

+ +
+ + {/* QR code on a fixed white panel so it scans in both light and dark themes */} +
+
+ {url ? ( + + ) : ( +
+ )} +
+
+ + {/* Full URL written out underneath */} +
+

{url}

+
+ + + + + ); +} diff --git a/frontend/components/ThemeColorMeta.tsx b/frontend/components/ThemeColorMeta.tsx index 994d4a5a..08fe7c19 100644 --- a/frontend/components/ThemeColorMeta.tsx +++ b/frontend/components/ThemeColorMeta.tsx @@ -7,11 +7,13 @@ export function ThemeColorMeta() { const { resolvedTheme } = useTheme(); useEffect(() => { - // Remove any existing theme-color meta tags - const existingMeta = document.querySelector('meta[name="theme-color"]'); - if (existingMeta) { - existingMeta.remove(); - } + // Remove any theme-color meta tags this component previously created so we + // never leave duplicates. (The viewport export intentionally does NOT emit a + // theme-color meta — see app/layout.tsx — so these are only our own nodes, + // never React-managed ones.) + document + .querySelectorAll('meta[name="theme-color"]') + .forEach((m) => m.remove()); // Create new meta tag with the appropriate color const meta = document.createElement("meta"); diff --git a/frontend/context/builds/ERC20.json b/frontend/context/builds/ERC20.json index 796b0b8c..b18cc0a6 100644 --- a/frontend/context/builds/ERC20.json +++ b/frontend/context/builds/ERC20.json @@ -1 +1 @@ -{"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.30+commit.73712a01\"},\"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.\",\"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\":\"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\":\"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\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both 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\":\"Returns the value of tokens in existence.\"},\"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"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.30+commit.73712a01"},"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":"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":"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":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both 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":"Returns the value of tokens in existence."},"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":50} \ No newline at end of file +{"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.30+commit.73712a01\"},\"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.\",\"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\":\"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\":\"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\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both 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\":\"Returns the value of tokens in existence.\"},\"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"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.30+commit.73712a01"},"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":"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":"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":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both 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":"Returns the value of tokens in existence."},"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":54} \ No newline at end of file diff --git a/frontend/context/builds/Erc20DelegateElection.json b/frontend/context/builds/Erc20DelegateElection.json index 2f8bea57..912f5b0f 100644 --- a/frontend/context/builds/Erc20DelegateElection.json +++ b/frontend/context/builds/Erc20DelegateElection.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"config","inputs":[],"outputs":[{"name":"token","type":"address","internalType":"contract ERC20Votes"}],"stateMutability":"view"},{"type":"function","name":"getNomineeRanking","inputs":[],"outputs":[{"name":"nomineesArray","type":"address[]","internalType":"address[]"},{"name":"votes","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getNominees","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isNominee","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominate","inputs":[{"name":"nominee","type":"address","internalType":"address"},{"name":"shouldNominate","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nominations","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[{"name":"nominated","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nomineesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeNomination","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"NominationReceived","inputs":[{"name":"nominee","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NominationRevoked","inputs":[{"name":"nominee","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":"0x608060405234801561000f575f5ffd5b50604051610d2e380380610d2e83398101604081905261002e91610126565b338061005457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61005d816100d7565b506001600160a01b0381166100a55760405162461bcd60e51b815260206004820152600e60248201526d1d1bdad95b881c995c5d5a5c995960921b604482015260640161004b565b60408051602081019091526001600160a01b0390911690819052600480546001600160a01b0319169091179055610153565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610136575f5ffd5b81516001600160a01b038116811461014c575f5ffd5b9392505050565b610bce806101605f395ff3fe608060405234801561000f575f5ffd5b50600436106100cf575f3560e01c8063a2064f451161007d578063eec6b91e11610058578063eec6b91e146101c6578063f2fde38b146101d9578063f95baf26146101ec575f5ffd5b8063a2064f451461015c578063affd8db01461019d578063ddcca4e1146101b0575f5ffd5b80638ec67e40116100ad5780638ec67e401461011d5780639636f67c14610130578063980c407914610145575f5ffd5b8063715018a6146100d357806379502c55146100dd5780638da5cb5b1461010d575b5f5ffd5b6100db61020e565b005b6004546100f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f546001600160a01b03166100f0565b6100db61012b3660046109e8565b610221565b610138610236565b6040516101049190610a4b565b61014e60035481565b604051908152602001610104565b61018d61016a3660046109e8565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b6040519015158152602001610104565b6100db6101ab366004610a5d565b610296565b6101b861056c565b604051610104929190610a96565b6100f06101d4366004610aee565b6108f0565b6100db6101e73660046109e8565b610918565b61018d6101fa3660046109e8565b60016020525f908152604090205460ff1681565b610216610952565b61021f5f61097e565b565b610229610952565b610233815f610296565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561028c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161026e575b5050505050905090565b61029e610952565b80156103ac576001600160a01b0382165f9081526001602081905260409091205460ff16151590036103175760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036104175760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e6174656400000000000000000000000000000000000000604482015260640161030e565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b8181101561052a57836001600160a01b03166002828154811061046057610460610b05565b5f918252602090912001546001600160a01b031603610522576002610486600184610b2d565b8154811061049657610496610b05565b5f91825260209091200154600280546001600160a01b0390921691839081106104c1576104c1610b05565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104fd576104fd610b46565b5f8281526020902081015f1990810180546001600160a01b031916905501905561052a565b60010161043b565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b6060805181905f819003610597575050604080515f8082526020820190815281830190925292909150565b5f8167ffffffffffffffff8111156105b1576105b1610b5a565b6040519080825280602002602001820160405280156105da578160200160208202803683370190505b5090505f8267ffffffffffffffff8111156105f7576105f7610b5a565b604051908082528060200260200182016040528015610620578160200160208202803683370190505b5090505f5b838110156107265785818151811061063f5761063f610b05565b602002602001015183828151811061065957610659610b05565b6001600160a01b0392831660209182029290920101526004548751911690639ab24eb09088908490811061068f5761068f610b05565b60200260200101516040518263ffffffff1660e01b81526004016106c291906001600160a01b0391909116815260200190565b602060405180830381865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190610b6e565b82828151811061071357610713610b05565b6020908102919091010152600101610625565b505f5b610734600185610b2d565b8110156108e5575f5b60016107498387610b2d565b6107539190610b2d565b8110156108dc5782610766826001610b85565b8151811061077657610776610b05565b602002602001015183828151811061079057610790610b05565b602002602001015110156108d4575f8382815181106107b1576107b1610b05565b60200260200101519050838260016107c99190610b85565b815181106107d9576107d9610b05565b60200260200101518483815181106107f3576107f3610b05565b6020908102919091010152808461080b846001610b85565b8151811061081b5761081b610b05565b6020026020010181815250505f85838151811061083a5761083a610b05565b60200260200101519050858360016108529190610b85565b8151811061086257610862610b05565b602002602001015186848151811061087c5761087c610b05565b6001600160a01b039092166020928302919091019091015280866108a1856001610b85565b815181106108b1576108b1610b05565b60200260200101906001600160a01b031690816001600160a01b03168152505050505b60010161073d565b50600101610729565b509094909350915050565b600281815481106108ff575f80fd5b5f918252602090912001546001600160a01b0316905081565b610920610952565b6001600160a01b03811661094957604051631e4fbdf760e01b81525f600482015260240161030e565b6102338161097e565b5f546001600160a01b0316331461021f5760405163118cdaa760e01b815233600482015260240161030e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146109e3575f5ffd5b919050565b5f602082840312156109f8575f5ffd5b610a01826109cd565b9392505050565b5f8151808452602084019350602083015f5b82811015610a415781516001600160a01b0316865260209586019590910190600101610a1a565b5093949350505050565b602081525f610a016020830184610a08565b5f5f60408385031215610a6e575f5ffd5b610a77836109cd565b915060208301358015158114610a8b575f5ffd5b809150509250929050565b604081525f610aa86040830185610a08565b82810360208401528084518083526020830191506020860192505f5b81811015610ae2578351835260209384019390920191600101610ac4565b50909695505050505050565b5f60208284031215610afe575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b4057610b40610b19565b92915050565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610b7e575f5ffd5b5051919050565b80820180821115610b4057610b40610b1956fea26469706673582212202b66c76096c6b22974f54d9eec4eb9eb256f9ff5fed7960a8b9285f154be5e6964736f6c634300081e0033","sourceMap":"698:1712:196:-:0;;;876:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;957:10:148;;1269:95:39;;1322:31;;-1:-1:-1;;;1322:31:39;;1350:1;1322:31;;;455:51:227;428:18;;1322:31:39;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;924:26:196;;920:56;;952:24;;-1:-1:-1;;;952:24:196;;719:2:227;952:24:196;;;701:21:227;758:2;738:18;;;731:30;-1:-1:-1;;;777:18:227;;;770:44;831:18;;952:24:196;517:338:227;920:56:196;995:43;;;;;;;;;-1:-1:-1;;;;;995:43:196;;;;;;;986:6;:52;;-1:-1:-1;;;;;;986:52:196;;;;;;698:1712;;2912:187:39;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:39;;;-1:-1:-1;;;;;;3020:17:39;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:227:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:227;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:227:o;517:338::-;698:1712:196;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100cf575f3560e01c8063a2064f451161007d578063eec6b91e11610058578063eec6b91e146101c6578063f2fde38b146101d9578063f95baf26146101ec575f5ffd5b8063a2064f451461015c578063affd8db01461019d578063ddcca4e1146101b0575f5ffd5b80638ec67e40116100ad5780638ec67e401461011d5780639636f67c14610130578063980c407914610145575f5ffd5b8063715018a6146100d357806379502c55146100dd5780638da5cb5b1461010d575b5f5ffd5b6100db61020e565b005b6004546100f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f546001600160a01b03166100f0565b6100db61012b3660046109e8565b610221565b610138610236565b6040516101049190610a4b565b61014e60035481565b604051908152602001610104565b61018d61016a3660046109e8565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b6040519015158152602001610104565b6100db6101ab366004610a5d565b610296565b6101b861056c565b604051610104929190610a96565b6100f06101d4366004610aee565b6108f0565b6100db6101e73660046109e8565b610918565b61018d6101fa3660046109e8565b60016020525f908152604090205460ff1681565b610216610952565b61021f5f61097e565b565b610229610952565b610233815f610296565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561028c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161026e575b5050505050905090565b61029e610952565b80156103ac576001600160a01b0382165f9081526001602081905260409091205460ff16151590036103175760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036104175760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e6174656400000000000000000000000000000000000000604482015260640161030e565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b8181101561052a57836001600160a01b03166002828154811061046057610460610b05565b5f918252602090912001546001600160a01b031603610522576002610486600184610b2d565b8154811061049657610496610b05565b5f91825260209091200154600280546001600160a01b0390921691839081106104c1576104c1610b05565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104fd576104fd610b46565b5f8281526020902081015f1990810180546001600160a01b031916905501905561052a565b60010161043b565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b6060805181905f819003610597575050604080515f8082526020820190815281830190925292909150565b5f8167ffffffffffffffff8111156105b1576105b1610b5a565b6040519080825280602002602001820160405280156105da578160200160208202803683370190505b5090505f8267ffffffffffffffff8111156105f7576105f7610b5a565b604051908082528060200260200182016040528015610620578160200160208202803683370190505b5090505f5b838110156107265785818151811061063f5761063f610b05565b602002602001015183828151811061065957610659610b05565b6001600160a01b0392831660209182029290920101526004548751911690639ab24eb09088908490811061068f5761068f610b05565b60200260200101516040518263ffffffff1660e01b81526004016106c291906001600160a01b0391909116815260200190565b602060405180830381865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190610b6e565b82828151811061071357610713610b05565b6020908102919091010152600101610625565b505f5b610734600185610b2d565b8110156108e5575f5b60016107498387610b2d565b6107539190610b2d565b8110156108dc5782610766826001610b85565b8151811061077657610776610b05565b602002602001015183828151811061079057610790610b05565b602002602001015110156108d4575f8382815181106107b1576107b1610b05565b60200260200101519050838260016107c99190610b85565b815181106107d9576107d9610b05565b60200260200101518483815181106107f3576107f3610b05565b6020908102919091010152808461080b846001610b85565b8151811061081b5761081b610b05565b6020026020010181815250505f85838151811061083a5761083a610b05565b60200260200101519050858360016108529190610b85565b8151811061086257610862610b05565b602002602001015186848151811061087c5761087c610b05565b6001600160a01b039092166020928302919091019091015280866108a1856001610b85565b815181106108b1576108b1610b05565b60200260200101906001600160a01b031690816001600160a01b03168152505050505b60010161073d565b50600101610729565b509094909350915050565b600281815481106108ff575f80fd5b5f918252602090912001546001600160a01b0316905081565b610920610952565b6001600160a01b03811661094957604051631e4fbdf760e01b81525f600482015260240161030e565b6102338161097e565b5f546001600160a01b0316331461021f5760405163118cdaa760e01b815233600482015260240161030e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146109e3575f5ffd5b919050565b5f602082840312156109f8575f5ffd5b610a01826109cd565b9392505050565b5f8151808452602084019350602083015f5b82811015610a415781516001600160a01b0316865260209586019590910190600101610a1a565b5093949350505050565b602081525f610a016020830184610a08565b5f5f60408385031215610a6e575f5ffd5b610a77836109cd565b915060208301358015158114610a8b575f5ffd5b809150509250929050565b604081525f610aa86040830185610a08565b82810360208401528084518083526020830191506020860192505f5b81811015610ae2578351835260209384019390920191600101610ac4565b50909695505050505050565b5f60208284031215610afe575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b4057610b40610b19565b92915050565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610b7e575f5ffd5b5051919050565b80820180821115610b4057610b40610b1956fea26469706673582212202b66c76096c6b22974f54d9eec4eb9eb256f9ff5fed7960a8b9285f154be5e6964736f6c634300081e0033","sourceMap":"698:1712:196:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:101:39;;;:::i;:::-;;849:20:196;;;;;-1:-1:-1;;;;;849:20:196;;;;;;-1:-1:-1;;;;;198:55:227;;;180:74;;168:2;153:18;849:20:196;;;;;;;;1638:85:39;1684:7;1710:6;-1:-1:-1;;;;;1710:6:39;1638:85;;2106:103:148;;;;;;:::i;:::-;;:::i;2244:96::-;;;:::i;:::-;;;;;;;:::i;776:28::-;;;;;;;;;1774:25:227;;;1762:2;1747:18;776:28:148;1628:177:227;2346:117:148;;;;;;:::i;:::-;-1:-1:-1;;;;;2428:20:148;2405:4;2428:20;;;:11;:20;;;;;;;;;;;:28;;;;2346:117;;;;1975:14:227;;1968:22;1950:41;;1938:2;1923:18;2346:117:148;1810:187:227;978:974:148;;;;;;:::i;:::-;;:::i;1105:1303:196:-;;;:::i;:::-;;;;;;;;:::i;745:25:148:-;;;;;;:::i;:::-;;:::i;2543:215:39:-;;;;;;:::i;:::-;;:::i;678:61:148:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2293:101:39;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2106:103:148:-;1531:13:39;:11;:13::i;:::-;2178:24:148::1;2187:7;2196:5;2178:8;:24::i;:::-;2106:103:::0;:::o;2244:96::-;2290:16;2325:8;2318:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2318:15:148;;;;;;;;;;;;;;;;;;;;;;;2244:96;:::o;978:974::-;1531:13:39;:11;:13::i;:::-;1065:14:148::1;1061:885;;;-1:-1:-1::0;;;;;1099:20:148;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;;::::1;;:28;;::::0;;1095:61:::1;;1129:27;::::0;-1:-1:-1;;;1129:27:148;;3529:2:227;1129:27:148::1;::::0;::::1;3511:21:227::0;3568:2;3548:18;;;3541:30;3607:19;3587:18;;;3580:47;3644:18;;1129:27:148::1;;;;;;;;1095:61;-1:-1:-1::0;;;;;1170:20:148;::::1;;::::0;;;1193:4:::1;1170:20;::::0;;;;;;;:27;;-1:-1:-1;;1170:27:148::1;::::0;::::1;::::0;;1211:8:::1;:22:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;1211:22:148::1;::::0;::::1;::::0;;1275:13:::1;:18:::0;;;;::::1;::::0;;;1326:27;::::1;::::0;1170:20;1326:27:::1;978:974:::0;;:::o;1061:885::-:1;-1:-1:-1::0;;;;;1388:20:148;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;:29;;::::0;;1384:58:::1;;1419:23;::::0;-1:-1:-1;;;1419:23:148;;3875:2:227;1419:23:148::1;::::0;::::1;3857:21:227::0;3914:2;3894:18;;;3887:30;3953:15;3933:18;;;3926:43;3986:18;;1419:23:148::1;3673:337:227::0;1384:58:148::1;-1:-1:-1::0;;;;;1456:20:148;::::1;1479:5;1456:20:::0;;;:11:::1;:20;::::0;;;;:28;;-1:-1:-1;;1456:28:148::1;::::0;;1563:8:::1;:15:::0;;1592:225:::1;1612:3;1608:1;:7;1592:225;;;1659:7;-1:-1:-1::0;;;;;1644:22:148::1;:8;1653:1;1644:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;1644:11:148::1;:22:::0;1640:163:::1;;1704:8;1713:7;1719:1;1713:3:::0;:7:::1;:::i;:::-;1704:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;1690:8:::1;:11:::0;;-1:-1:-1;;;;;1704:17:148;;::::1;::::0;1699:1;;1690:11;::::1;;;;;:::i;:::-;;;;;;;;;:31;;;;;-1:-1:-1::0;;;;;1690:31:148::1;;;;;-1:-1:-1::0;;;;;1690:31:148::1;;;;;;1743:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;1743:14:148;;;;;-1:-1:-1;;;;;;1743:14:148::1;::::0;;;;;1779:5:::1;;1640:163;1617:3;;1592:225;;;-1:-1:-1::0;1858:13:148::1;:18:::0;;-1:-1:-1;;1858:18:148;;;1909:26:::1;::::0;-1:-1:-1;;;;;1909:26:148;::::1;::::0;::::1;::::0;1858:13:::1;::::0;1909:26:::1;1370:576;978:974:::0;;:::o;1105:1303:196:-;1157:30;1245:20;;1157:30;;1223:19;1279:16;;;1275:65;;-1:-1:-1;;1305:16:196;;;1319:1;1305:16;;;;;;1323;;;;;;;;;1305;;;-1:-1:-1;1105:1303:196:o;1275:65::-;1351:29;1397:11;1383:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1383:26:196;;1351:58;;1419:26;1462:11;1448:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1448:26:196;;1419:55;;1531:9;1526:165;1546:11;1542:1;:15;1526:165;;;1596:13;1610:1;1596:16;;;;;;;;:::i;:::-;;;;;;;1578:12;1591:1;1578:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1578:34:196;;;:15;;;;;;;;;:34;1641:6;:12;1663:16;;1641:12;;;:21;;1663:13;;1677:1;;1663:16;;;;;;:::i;:::-;;;;;;;1641:39;;;;;;;;;;;;;;-1:-1:-1;;;;;198:55:227;;;;180:74;;168:2;153:18;;14:246;1641:39:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1626:9;1636:1;1626:12;;;;;;;;:::i;:::-;;;;;;;;;;:54;1559:3;;1526:165;;;;1763:9;1758:601;1778:15;1792:1;1778:11;:15;:::i;:::-;1774:1;:19;1758:601;;;1819:9;1814:535;1852:1;1834:15;1848:1;1834:11;:15;:::i;:::-;:19;;;;:::i;:::-;1830:1;:23;1814:535;;;1897:9;1907:5;:1;1911;1907:5;:::i;:::-;1897:16;;;;;;;;:::i;:::-;;;;;;;1882:9;1892:1;1882:12;;;;;;;;:::i;:::-;;;;;;;:31;1878:457;;;1971:17;1991:9;2001:1;1991:12;;;;;;;;:::i;:::-;;;;;;;1971:32;;2040:9;2050:1;2054;2050:5;;;;:::i;:::-;2040:16;;;;;;;;:::i;:::-;;;;;;;2025:9;2035:1;2025:12;;;;;;;;:::i;:::-;;;;;;;;;;:31;2097:9;2078;2088:5;:1;2092;2088:5;:::i;:::-;2078:16;;;;;;;;:::i;:::-;;;;;;:28;;;;;2165:19;2187:12;2200:1;2187:15;;;;;;;;:::i;:::-;;;;;;;2165:37;;2242:12;2255:1;2259;2255:5;;;;:::i;:::-;2242:19;;;;;;;;:::i;:::-;;;;;;;2224:12;2237:1;2224:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2224:37:196;;;:15;;;;;;;;;;;:37;2305:11;2283:12;2296:5;:1;2300;2296:5;:::i;:::-;2283:19;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;2283:33:196;;;-1:-1:-1;;;;;2283:33:196;;;;;1915:420;;1878:457;1855:3;;1814:535;;;-1:-1:-1;1795:3:196;;1758:601;;;-1:-1:-1;2377:12:196;;2391:9;;-1:-1:-1;1105:1303:196;-1:-1:-1;;1105:1303:196:o;745:25:148:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;745:25:148;;-1:-1:-1;745:25:148;:::o;2543:215:39:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:39;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:39;;2700:1:::1;2672:31;::::0;::::1;180:74:227::0;153:18;;2672:31:39::1;14:246:227::0;2623:91:39::1;2723:28;2742:8;2723:18;:28::i;1796:162::-:0;1684:7;1710:6;-1:-1:-1;;;;;1710:6:39;735:10:76;1855:23:39;1851:101;;1901:40;;-1:-1:-1;;;1901:40:39;;735:10:76;1901:40:39;;;180:74:227;153:18;;1901:40:39;14:246:227;2912:187:39;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:39;;;-1:-1:-1;;;;;;3020:17:39;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;496:196:227:-;564:20;;-1:-1:-1;;;;;613:54:227;;603:65;;593:93;;682:1;679;672:12;593:93;496:196;;;:::o;697:186::-;756:6;809:2;797:9;788:7;784:23;780:32;777:52;;;825:1;822;815:12;777:52;848:29;867:9;848:29;:::i;:::-;838:39;697:186;-1:-1:-1;;;697:186:227:o;888:469::-;941:3;979:5;973:12;1006:6;1001:3;994:19;1038:4;1033:3;1029:14;1022:21;;1077:4;1070:5;1066:16;1100:1;1110:222;1124:6;1121:1;1118:13;1110:222;;;1189:13;;-1:-1:-1;;;;;1185:62:227;1173:75;;1277:4;1268:14;;;;1305:17;;;;1146:1;1139:9;1110:222;;;-1:-1:-1;1348:3:227;;888:469;-1:-1:-1;;;;888:469:227:o;1362:261::-;1541:2;1530:9;1523:21;1504:4;1561:56;1613:2;1602:9;1598:18;1590:6;1561:56;:::i;2002:347::-;2067:6;2075;2128:2;2116:9;2107:7;2103:23;2099:32;2096:52;;;2144:1;2141;2134:12;2096:52;2167:29;2186:9;2167:29;:::i;:::-;2157:39;;2246:2;2235:9;2231:18;2218:32;2293:5;2286:13;2279:21;2272:5;2269:32;2259:60;;2315:1;2312;2305:12;2259:60;2338:5;2328:15;;;2002:347;;;;;:::o;2354:783::-;2611:2;2600:9;2593:21;2574:4;2637:56;2689:2;2678:9;2674:18;2666:6;2637:56;:::i;:::-;2741:9;2733:6;2729:22;2724:2;2713:9;2709:18;2702:50;2772:6;2807;2801:13;2838:6;2830;2823:22;2873:2;2865:6;2861:15;2854:22;;2911:2;2903:6;2899:15;2885:29;;2932:1;2942:169;2956:6;2953:1;2950:13;2942:169;;;3017:13;;3005:26;;3060:2;3086:15;;;;3051:12;;;;2978:1;2971:9;2942:169;;;-1:-1:-1;3128:3:227;;2354:783;-1:-1:-1;;;;;;2354:783:227:o;3142:180::-;3201:6;3254:2;3242:9;3233:7;3229:23;3225:32;3222:52;;;3270:1;3267;3260:12;3222:52;-1:-1:-1;3293:23:227;;3142:180;-1:-1:-1;3142:180:227:o;4015:127::-;4076:10;4071:3;4067:20;4064:1;4057:31;4107:4;4104:1;4097:15;4131:4;4128:1;4121:15;4147:127;4208:10;4203:3;4199:20;4196:1;4189:31;4239:4;4236:1;4229:15;4263:4;4260:1;4253:15;4279:128;4346:9;;;4367:11;;;4364:37;;;4381:18;;:::i;:::-;4279:128;;;;:::o;4412:127::-;4473:10;4468:3;4464:20;4461:1;4454:31;4504:4;4501:1;4494:15;4528:4;4525:1;4518:15;4544:127;4605:10;4600:3;4596:20;4593:1;4586:31;4636:4;4633:1;4626:15;4660:4;4657:1;4650:15;4676:184;4746:6;4799:2;4787:9;4778:7;4774:23;4770:32;4767:52;;;4815:1;4812;4805:12;4767:52;-1:-1:-1;4838:16:227;;4676:184;-1:-1:-1;4676:184:227:o;4865:125::-;4930:9;;;4951:10;;;4948:36;;;4964:18;;:::i","linkReferences":{}},"methodIdentifiers":{"config()":"79502c55","getNomineeRanking()":"ddcca4e1","getNominees()":"9636f67c","isNominee(address)":"a2064f45","nominate(address,bool)":"affd8db0","nominations(address)":"f95baf26","nominees(uint256)":"eec6b91e","nomineesCount()":"980c4079","owner()":"8da5cb5b","renounceOwnership()":"715018a6","revokeNomination(address)":"8ec67e40","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationRevoked\",\"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\":\"config\",\"outputs\":[{\"internalType\":\"contract ERC20Votes\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNomineeRanking\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"nomineesArray\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"votes\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNominees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isNominee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"shouldNominate\",\"type\":\"bool\"}],\"name\":\"nominate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"nominations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"nominated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nominees\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nomineesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"revokeNomination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Erc20DelegateElection (standalone)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple, standalone contract combining self-nomination and delegate-based selection. - Accounts can nominate or revoke themselves as candidates. - An election selects up to `maxRoleHolders` nominees with highest delegated votes (`ERC20Votes.getVotes`). - No Powers/Mandate integration. Pure storage and helper utilities.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/Erc20DelegateElection.sol\":\"Erc20DelegateElection\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee\",\"dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7\",\"dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578\",\"dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435\",\"dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a\",\"dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99\",\"dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4\",\"dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6\",\"dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256\",\"dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc\"]},\"src/core/helpers/Nominees.sol\":{\"keccak256\":\"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13\",\"dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u\"]},\"test/mocks/Erc20DelegateElection.sol\":{\"keccak256\":\"0xe79b7c618e8cdacc187e48b3930086cda5d3bd11177633e815cf5483230a7dc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4352ea39301f61aef4cb2a958a72b9e5b99e210604b4c5cb7ee1b2ca5415d35e\",\"dweb:/ipfs/QmWsoi3EFpmEUrTYdHTu5WXXg8yTSZ1yx2Tcc4oYKEZv3i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationRevoked","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":"view","type":"function","name":"config","outputs":[{"internalType":"contract ERC20Votes","name":"token","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNomineeRanking","outputs":[{"internalType":"address[]","name":"nomineesArray","type":"address[]"},{"internalType":"uint256[]","name":"votes","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNominees","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isNominee","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"nominee","type":"address"},{"internalType":"bool","name":"shouldNominate","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"nominate"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"view","type":"function","name":"nominations","outputs":[{"internalType":"bool","name":"nominated","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"nominees","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nomineesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeNomination"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/Erc20DelegateElection.sol":"Erc20DelegateElection"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol":{"keccak256":"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6","urls":["bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee","dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol":{"keccak256":"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7","urls":["bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7","dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol":{"keccak256":"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd","urls":["bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578","dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol":{"keccak256":"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6","urls":["bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435","dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol":{"keccak256":"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a","urls":["bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a","dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"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/Nonces.sol":{"keccak256":"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f","urls":["bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e","dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c","urls":["bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99","dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4","urls":["bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4","dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77","urls":["bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6","dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05","urls":["bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256","dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc"],"license":"MIT"},"src/core/helpers/Nominees.sol":{"keccak256":"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7","urls":["bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13","dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u"],"license":"MIT"},"test/mocks/Erc20DelegateElection.sol":{"keccak256":"0xe79b7c618e8cdacc187e48b3930086cda5d3bd11177633e815cf5483230a7dc2","urls":["bzz-raw://4352ea39301f61aef4cb2a958a72b9e5b99e210604b4c5cb7ee1b2ca5415d35e","dweb:/ipfs/QmWsoi3EFpmEUrTYdHTu5WXXg8yTSZ1yx2Tcc4oYKEZv3i"],"license":"MIT"}},"version":1},"id":196} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"config","inputs":[],"outputs":[{"name":"token","type":"address","internalType":"contract ERC20Votes"}],"stateMutability":"view"},{"type":"function","name":"getNomineeRanking","inputs":[],"outputs":[{"name":"nomineesArray","type":"address[]","internalType":"address[]"},{"name":"votes","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getNominees","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isNominee","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominate","inputs":[{"name":"nominee","type":"address","internalType":"address"},{"name":"shouldNominate","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nominations","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[{"name":"nominated","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nomineesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeNomination","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"NominationReceived","inputs":[{"name":"nominee","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NominationRevoked","inputs":[{"name":"nominee","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":"0x608060405234801561000f575f5ffd5b50604051610d2e380380610d2e83398101604081905261002e91610126565b338061005457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61005d816100d7565b506001600160a01b0381166100a55760405162461bcd60e51b815260206004820152600e60248201526d1d1bdad95b881c995c5d5a5c995960921b604482015260640161004b565b60408051602081019091526001600160a01b0390911690819052600480546001600160a01b0319169091179055610153565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610136575f5ffd5b81516001600160a01b038116811461014c575f5ffd5b9392505050565b610bce806101605f395ff3fe608060405234801561000f575f5ffd5b50600436106100cf575f3560e01c8063a2064f451161007d578063eec6b91e11610058578063eec6b91e146101c6578063f2fde38b146101d9578063f95baf26146101ec575f5ffd5b8063a2064f451461015c578063affd8db01461019d578063ddcca4e1146101b0575f5ffd5b80638ec67e40116100ad5780638ec67e401461011d5780639636f67c14610130578063980c407914610145575f5ffd5b8063715018a6146100d357806379502c55146100dd5780638da5cb5b1461010d575b5f5ffd5b6100db61020e565b005b6004546100f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f546001600160a01b03166100f0565b6100db61012b3660046109e8565b610221565b610138610236565b6040516101049190610a4b565b61014e60035481565b604051908152602001610104565b61018d61016a3660046109e8565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b6040519015158152602001610104565b6100db6101ab366004610a5d565b610296565b6101b861056c565b604051610104929190610a96565b6100f06101d4366004610aee565b6108f0565b6100db6101e73660046109e8565b610918565b61018d6101fa3660046109e8565b60016020525f908152604090205460ff1681565b610216610952565b61021f5f61097e565b565b610229610952565b610233815f610296565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561028c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161026e575b5050505050905090565b61029e610952565b80156103ac576001600160a01b0382165f9081526001602081905260409091205460ff16151590036103175760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036104175760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e6174656400000000000000000000000000000000000000604482015260640161030e565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b8181101561052a57836001600160a01b03166002828154811061046057610460610b05565b5f918252602090912001546001600160a01b031603610522576002610486600184610b2d565b8154811061049657610496610b05565b5f91825260209091200154600280546001600160a01b0390921691839081106104c1576104c1610b05565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104fd576104fd610b46565b5f8281526020902081015f1990810180546001600160a01b031916905501905561052a565b60010161043b565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b6060805181905f819003610597575050604080515f8082526020820190815281830190925292909150565b5f8167ffffffffffffffff8111156105b1576105b1610b5a565b6040519080825280602002602001820160405280156105da578160200160208202803683370190505b5090505f8267ffffffffffffffff8111156105f7576105f7610b5a565b604051908082528060200260200182016040528015610620578160200160208202803683370190505b5090505f5b838110156107265785818151811061063f5761063f610b05565b602002602001015183828151811061065957610659610b05565b6001600160a01b0392831660209182029290920101526004548751911690639ab24eb09088908490811061068f5761068f610b05565b60200260200101516040518263ffffffff1660e01b81526004016106c291906001600160a01b0391909116815260200190565b602060405180830381865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190610b6e565b82828151811061071357610713610b05565b6020908102919091010152600101610625565b505f5b610734600185610b2d565b8110156108e5575f5b60016107498387610b2d565b6107539190610b2d565b8110156108dc5782610766826001610b85565b8151811061077657610776610b05565b602002602001015183828151811061079057610790610b05565b602002602001015110156108d4575f8382815181106107b1576107b1610b05565b60200260200101519050838260016107c99190610b85565b815181106107d9576107d9610b05565b60200260200101518483815181106107f3576107f3610b05565b6020908102919091010152808461080b846001610b85565b8151811061081b5761081b610b05565b6020026020010181815250505f85838151811061083a5761083a610b05565b60200260200101519050858360016108529190610b85565b8151811061086257610862610b05565b602002602001015186848151811061087c5761087c610b05565b6001600160a01b039092166020928302919091019091015280866108a1856001610b85565b815181106108b1576108b1610b05565b60200260200101906001600160a01b031690816001600160a01b03168152505050505b60010161073d565b50600101610729565b509094909350915050565b600281815481106108ff575f80fd5b5f918252602090912001546001600160a01b0316905081565b610920610952565b6001600160a01b03811661094957604051631e4fbdf760e01b81525f600482015260240161030e565b6102338161097e565b5f546001600160a01b0316331461021f5760405163118cdaa760e01b815233600482015260240161030e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146109e3575f5ffd5b919050565b5f602082840312156109f8575f5ffd5b610a01826109cd565b9392505050565b5f8151808452602084019350602083015f5b82811015610a415781516001600160a01b0316865260209586019590910190600101610a1a565b5093949350505050565b602081525f610a016020830184610a08565b5f5f60408385031215610a6e575f5ffd5b610a77836109cd565b915060208301358015158114610a8b575f5ffd5b809150509250929050565b604081525f610aa86040830185610a08565b82810360208401528084518083526020830191506020860192505f5b81811015610ae2578351835260209384019390920191600101610ac4565b50909695505050505050565b5f60208284031215610afe575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b4057610b40610b19565b92915050565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610b7e575f5ffd5b5051919050565b80820180821115610b4057610b40610b1956fea2646970667358221220e953e73453e8306807674ac4dfd130f5dc4de948d375bcca0102f0e8469adcce64736f6c634300081e0033","sourceMap":"698:1712:178:-:0;;;876:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;957:10:133;;1269:95:27;;1322:31;;-1:-1:-1;;;1322:31:27;;1350:1;1322:31;;;455:51:188;428:18;;1322:31:27;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;924:26:178;;920:56;;952:24;;-1:-1:-1;;;952:24:178;;719:2:188;952:24:178;;;701:21:188;758:2;738:18;;;731:30;-1:-1:-1;;;777:18:188;;;770:44;831:18;;952:24:178;517:338:188;920:56:178;995:43;;;;;;;;;-1:-1:-1;;;;;995:43:178;;;;;;;986:6;:52;;-1:-1:-1;;;;;;986:52:178;;;;;;698:1712;;2912:187:27;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:27;;;-1:-1:-1;;;;;;3020:17:27;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:188:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:188;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:188:o;517:338::-;698:1712:178;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100cf575f3560e01c8063a2064f451161007d578063eec6b91e11610058578063eec6b91e146101c6578063f2fde38b146101d9578063f95baf26146101ec575f5ffd5b8063a2064f451461015c578063affd8db01461019d578063ddcca4e1146101b0575f5ffd5b80638ec67e40116100ad5780638ec67e401461011d5780639636f67c14610130578063980c407914610145575f5ffd5b8063715018a6146100d357806379502c55146100dd5780638da5cb5b1461010d575b5f5ffd5b6100db61020e565b005b6004546100f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f546001600160a01b03166100f0565b6100db61012b3660046109e8565b610221565b610138610236565b6040516101049190610a4b565b61014e60035481565b604051908152602001610104565b61018d61016a3660046109e8565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b6040519015158152602001610104565b6100db6101ab366004610a5d565b610296565b6101b861056c565b604051610104929190610a96565b6100f06101d4366004610aee565b6108f0565b6100db6101e73660046109e8565b610918565b61018d6101fa3660046109e8565b60016020525f908152604090205460ff1681565b610216610952565b61021f5f61097e565b565b610229610952565b610233815f610296565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561028c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161026e575b5050505050905090565b61029e610952565b80156103ac576001600160a01b0382165f9081526001602081905260409091205460ff16151590036103175760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036104175760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e6174656400000000000000000000000000000000000000604482015260640161030e565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b8181101561052a57836001600160a01b03166002828154811061046057610460610b05565b5f918252602090912001546001600160a01b031603610522576002610486600184610b2d565b8154811061049657610496610b05565b5f91825260209091200154600280546001600160a01b0390921691839081106104c1576104c1610b05565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104fd576104fd610b46565b5f8281526020902081015f1990810180546001600160a01b031916905501905561052a565b60010161043b565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b6060805181905f819003610597575050604080515f8082526020820190815281830190925292909150565b5f8167ffffffffffffffff8111156105b1576105b1610b5a565b6040519080825280602002602001820160405280156105da578160200160208202803683370190505b5090505f8267ffffffffffffffff8111156105f7576105f7610b5a565b604051908082528060200260200182016040528015610620578160200160208202803683370190505b5090505f5b838110156107265785818151811061063f5761063f610b05565b602002602001015183828151811061065957610659610b05565b6001600160a01b0392831660209182029290920101526004548751911690639ab24eb09088908490811061068f5761068f610b05565b60200260200101516040518263ffffffff1660e01b81526004016106c291906001600160a01b0391909116815260200190565b602060405180830381865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190610b6e565b82828151811061071357610713610b05565b6020908102919091010152600101610625565b505f5b610734600185610b2d565b8110156108e5575f5b60016107498387610b2d565b6107539190610b2d565b8110156108dc5782610766826001610b85565b8151811061077657610776610b05565b602002602001015183828151811061079057610790610b05565b602002602001015110156108d4575f8382815181106107b1576107b1610b05565b60200260200101519050838260016107c99190610b85565b815181106107d9576107d9610b05565b60200260200101518483815181106107f3576107f3610b05565b6020908102919091010152808461080b846001610b85565b8151811061081b5761081b610b05565b6020026020010181815250505f85838151811061083a5761083a610b05565b60200260200101519050858360016108529190610b85565b8151811061086257610862610b05565b602002602001015186848151811061087c5761087c610b05565b6001600160a01b039092166020928302919091019091015280866108a1856001610b85565b815181106108b1576108b1610b05565b60200260200101906001600160a01b031690816001600160a01b03168152505050505b60010161073d565b50600101610729565b509094909350915050565b600281815481106108ff575f80fd5b5f918252602090912001546001600160a01b0316905081565b610920610952565b6001600160a01b03811661094957604051631e4fbdf760e01b81525f600482015260240161030e565b6102338161097e565b5f546001600160a01b0316331461021f5760405163118cdaa760e01b815233600482015260240161030e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146109e3575f5ffd5b919050565b5f602082840312156109f8575f5ffd5b610a01826109cd565b9392505050565b5f8151808452602084019350602083015f5b82811015610a415781516001600160a01b0316865260209586019590910190600101610a1a565b5093949350505050565b602081525f610a016020830184610a08565b5f5f60408385031215610a6e575f5ffd5b610a77836109cd565b915060208301358015158114610a8b575f5ffd5b809150509250929050565b604081525f610aa86040830185610a08565b82810360208401528084518083526020830191506020860192505f5b81811015610ae2578351835260209384019390920191600101610ac4565b50909695505050505050565b5f60208284031215610afe575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b4057610b40610b19565b92915050565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610b7e575f5ffd5b5051919050565b80820180821115610b4057610b40610b1956fea2646970667358221220e953e73453e8306807674ac4dfd130f5dc4de948d375bcca0102f0e8469adcce64736f6c634300081e0033","sourceMap":"698:1712:178:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:101:27;;;:::i;:::-;;849:20:178;;;;;-1:-1:-1;;;;;849:20:178;;;;;;-1:-1:-1;;;;;198:55:188;;;180:74;;168:2;153:18;849:20:178;;;;;;;;1638:85:27;1684:7;1710:6;-1:-1:-1;;;;;1710:6:27;1638:85;;2106:103:133;;;;;;:::i;:::-;;:::i;2244:96::-;;;:::i;:::-;;;;;;;:::i;776:28::-;;;;;;;;;1774:25:188;;;1762:2;1747:18;776:28:133;1628:177:188;2346:117:133;;;;;;:::i;:::-;-1:-1:-1;;;;;2428:20:133;2405:4;2428:20;;;:11;:20;;;;;;;;;;;:28;;;;2346:117;;;;1975:14:188;;1968:22;1950:41;;1938:2;1923:18;2346:117:133;1810:187:188;978:974:133;;;;;;:::i;:::-;;:::i;1105:1303:178:-;;;:::i;:::-;;;;;;;;:::i;745:25:133:-;;;;;;:::i;:::-;;:::i;2543:215:27:-;;;;;;:::i;:::-;;:::i;678:61:133:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2293:101:27;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2106:103:133:-;1531:13:27;:11;:13::i;:::-;2178:24:133::1;2187:7;2196:5;2178:8;:24::i;:::-;2106:103:::0;:::o;2244:96::-;2290:16;2325:8;2318:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2318:15:133;;;;;;;;;;;;;;;;;;;;;;;2244:96;:::o;978:974::-;1531:13:27;:11;:13::i;:::-;1065:14:133::1;1061:885;;;-1:-1:-1::0;;;;;1099:20:133;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;;::::1;;:28;;::::0;;1095:61:::1;;1129:27;::::0;-1:-1:-1;;;1129:27:133;;3529:2:188;1129:27:133::1;::::0;::::1;3511:21:188::0;3568:2;3548:18;;;3541:30;3607:19;3587:18;;;3580:47;3644:18;;1129:27:133::1;;;;;;;;1095:61;-1:-1:-1::0;;;;;1170:20:133;::::1;;::::0;;;1193:4:::1;1170:20;::::0;;;;;;;:27;;-1:-1:-1;;1170:27:133::1;::::0;::::1;::::0;;1211:8:::1;:22:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;1211:22:133::1;::::0;::::1;::::0;;1275:13:::1;:18:::0;;;;::::1;::::0;;;1326:27;::::1;::::0;1170:20;1326:27:::1;978:974:::0;;:::o;1061:885::-:1;-1:-1:-1::0;;;;;1388:20:133;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;:29;;::::0;;1384:58:::1;;1419:23;::::0;-1:-1:-1;;;1419:23:133;;3875:2:188;1419:23:133::1;::::0;::::1;3857:21:188::0;3914:2;3894:18;;;3887:30;3953:15;3933:18;;;3926:43;3986:18;;1419:23:133::1;3673:337:188::0;1384:58:133::1;-1:-1:-1::0;;;;;1456:20:133;::::1;1479:5;1456:20:::0;;;:11:::1;:20;::::0;;;;:28;;-1:-1:-1;;1456:28:133::1;::::0;;1563:8:::1;:15:::0;;1592:225:::1;1612:3;1608:1;:7;1592:225;;;1659:7;-1:-1:-1::0;;;;;1644:22:133::1;:8;1653:1;1644:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;1644:11:133::1;:22:::0;1640:163:::1;;1704:8;1713:7;1719:1;1713:3:::0;:7:::1;:::i;:::-;1704:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;1690:8:::1;:11:::0;;-1:-1:-1;;;;;1704:17:133;;::::1;::::0;1699:1;;1690:11;::::1;;;;;:::i;:::-;;;;;;;;;:31;;;;;-1:-1:-1::0;;;;;1690:31:133::1;;;;;-1:-1:-1::0;;;;;1690:31:133::1;;;;;;1743:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;1743:14:133;;;;;-1:-1:-1;;;;;;1743:14:133::1;::::0;;;;;1779:5:::1;;1640:163;1617:3;;1592:225;;;-1:-1:-1::0;1858:13:133::1;:18:::0;;-1:-1:-1;;1858:18:133;;;1909:26:::1;::::0;-1:-1:-1;;;;;1909:26:133;::::1;::::0;::::1;::::0;1858:13:::1;::::0;1909:26:::1;1370:576;978:974:::0;;:::o;1105:1303:178:-;1157:30;1245:20;;1157:30;;1223:19;1279:16;;;1275:65;;-1:-1:-1;;1305:16:178;;;1319:1;1305:16;;;;;;1323;;;;;;;;;1305;;;-1:-1:-1;1105:1303:178:o;1275:65::-;1351:29;1397:11;1383:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1383:26:178;;1351:58;;1419:26;1462:11;1448:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1448:26:178;;1419:55;;1531:9;1526:165;1546:11;1542:1;:15;1526:165;;;1596:13;1610:1;1596:16;;;;;;;;:::i;:::-;;;;;;;1578:12;1591:1;1578:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1578:34:178;;;:15;;;;;;;;;:34;1641:6;:12;1663:16;;1641:12;;;:21;;1663:13;;1677:1;;1663:16;;;;;;:::i;:::-;;;;;;;1641:39;;;;;;;;;;;;;;-1:-1:-1;;;;;198:55:188;;;;180:74;;168:2;153:18;;14:246;1641:39:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1626:9;1636:1;1626:12;;;;;;;;:::i;:::-;;;;;;;;;;:54;1559:3;;1526:165;;;;1763:9;1758:601;1778:15;1792:1;1778:11;:15;:::i;:::-;1774:1;:19;1758:601;;;1819:9;1814:535;1852:1;1834:15;1848:1;1834:11;:15;:::i;:::-;:19;;;;:::i;:::-;1830:1;:23;1814:535;;;1897:9;1907:5;:1;1911;1907:5;:::i;:::-;1897:16;;;;;;;;:::i;:::-;;;;;;;1882:9;1892:1;1882:12;;;;;;;;:::i;:::-;;;;;;;:31;1878:457;;;1971:17;1991:9;2001:1;1991:12;;;;;;;;:::i;:::-;;;;;;;1971:32;;2040:9;2050:1;2054;2050:5;;;;:::i;:::-;2040:16;;;;;;;;:::i;:::-;;;;;;;2025:9;2035:1;2025:12;;;;;;;;:::i;:::-;;;;;;;;;;:31;2097:9;2078;2088:5;:1;2092;2088:5;:::i;:::-;2078:16;;;;;;;;:::i;:::-;;;;;;:28;;;;;2165:19;2187:12;2200:1;2187:15;;;;;;;;:::i;:::-;;;;;;;2165:37;;2242:12;2255:1;2259;2255:5;;;;:::i;:::-;2242:19;;;;;;;;:::i;:::-;;;;;;;2224:12;2237:1;2224:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2224:37:178;;;:15;;;;;;;;;;;:37;2305:11;2283:12;2296:5;:1;2300;2296:5;:::i;:::-;2283:19;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;2283:33:178;;;-1:-1:-1;;;;;2283:33:178;;;;;1915:420;;1878:457;1855:3;;1814:535;;;-1:-1:-1;1795:3:178;;1758:601;;;-1:-1:-1;2377:12:178;;2391:9;;-1:-1:-1;1105:1303:178;-1:-1:-1;;1105:1303:178:o;745:25:133:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;745:25:133;;-1:-1:-1;745:25:133;:::o;2543:215:27:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:27;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:27;;2700:1:::1;2672:31;::::0;::::1;180:74:188::0;153:18;;2672:31:27::1;14:246:188::0;2623:91:27::1;2723:28;2742:8;2723:18;:28::i;1796:162::-:0;1684:7;1710:6;-1:-1:-1;;;;;1710:6:27;735:10:64;1855:23:27;1851:101;;1901:40;;-1:-1:-1;;;1901:40:27;;735:10:64;1901:40:27;;;180:74:188;153:18;;1901:40:27;14:246:188;2912:187:27;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:27;;;-1:-1:-1;;;;;;3020:17:27;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;496:196:188:-;564:20;;-1:-1:-1;;;;;613:54:188;;603:65;;593:93;;682:1;679;672:12;593:93;496:196;;;:::o;697:186::-;756:6;809:2;797:9;788:7;784:23;780:32;777:52;;;825:1;822;815:12;777:52;848:29;867:9;848:29;:::i;:::-;838:39;697:186;-1:-1:-1;;;697:186:188:o;888:469::-;941:3;979:5;973:12;1006:6;1001:3;994:19;1038:4;1033:3;1029:14;1022:21;;1077:4;1070:5;1066:16;1100:1;1110:222;1124:6;1121:1;1118:13;1110:222;;;1189:13;;-1:-1:-1;;;;;1185:62:188;1173:75;;1277:4;1268:14;;;;1305:17;;;;1146:1;1139:9;1110:222;;;-1:-1:-1;1348:3:188;;888:469;-1:-1:-1;;;;888:469:188:o;1362:261::-;1541:2;1530:9;1523:21;1504:4;1561:56;1613:2;1602:9;1598:18;1590:6;1561:56;:::i;2002:347::-;2067:6;2075;2128:2;2116:9;2107:7;2103:23;2099:32;2096:52;;;2144:1;2141;2134:12;2096:52;2167:29;2186:9;2167:29;:::i;:::-;2157:39;;2246:2;2235:9;2231:18;2218:32;2293:5;2286:13;2279:21;2272:5;2269:32;2259:60;;2315:1;2312;2305:12;2259:60;2338:5;2328:15;;;2002:347;;;;;:::o;2354:783::-;2611:2;2600:9;2593:21;2574:4;2637:56;2689:2;2678:9;2674:18;2666:6;2637:56;:::i;:::-;2741:9;2733:6;2729:22;2724:2;2713:9;2709:18;2702:50;2772:6;2807;2801:13;2838:6;2830;2823:22;2873:2;2865:6;2861:15;2854:22;;2911:2;2903:6;2899:15;2885:29;;2932:1;2942:169;2956:6;2953:1;2950:13;2942:169;;;3017:13;;3005:26;;3060:2;3086:15;;;;3051:12;;;;2978:1;2971:9;2942:169;;;-1:-1:-1;3128:3:188;;2354:783;-1:-1:-1;;;;;;2354:783:188:o;3142:180::-;3201:6;3254:2;3242:9;3233:7;3229:23;3225:32;3222:52;;;3270:1;3267;3260:12;3222:52;-1:-1:-1;3293:23:188;;3142:180;-1:-1:-1;3142:180:188:o;4015:127::-;4076:10;4071:3;4067:20;4064:1;4057:31;4107:4;4104:1;4097:15;4131:4;4128:1;4121:15;4147:127;4208:10;4203:3;4199:20;4196:1;4189:31;4239:4;4236:1;4229:15;4263:4;4260:1;4253:15;4279:128;4346:9;;;4367:11;;;4364:37;;;4381:18;;:::i;:::-;4279:128;;;;:::o;4412:127::-;4473:10;4468:3;4464:20;4461:1;4454:31;4504:4;4501:1;4494:15;4528:4;4525:1;4518:15;4544:127;4605:10;4600:3;4596:20;4593:1;4586:31;4636:4;4633:1;4626:15;4660:4;4657:1;4650:15;4676:184;4746:6;4799:2;4787:9;4778:7;4774:23;4770:32;4767:52;;;4815:1;4812;4805:12;4767:52;-1:-1:-1;4838:16:188;;4676:184;-1:-1:-1;4676:184:188:o;4865:125::-;4930:9;;;4951:10;;;4948:36;;;4964:18;;:::i","linkReferences":{}},"methodIdentifiers":{"config()":"79502c55","getNomineeRanking()":"ddcca4e1","getNominees()":"9636f67c","isNominee(address)":"a2064f45","nominate(address,bool)":"affd8db0","nominations(address)":"f95baf26","nominees(uint256)":"eec6b91e","nomineesCount()":"980c4079","owner()":"8da5cb5b","renounceOwnership()":"715018a6","revokeNomination(address)":"8ec67e40","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationRevoked\",\"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\":\"config\",\"outputs\":[{\"internalType\":\"contract ERC20Votes\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNomineeRanking\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"nomineesArray\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"votes\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNominees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isNominee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"shouldNominate\",\"type\":\"bool\"}],\"name\":\"nominate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"nominations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"nominated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nominees\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nomineesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"revokeNomination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Erc20DelegateElection (standalone)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple, standalone contract combining self-nomination and delegate-based selection. - Accounts can nominate or revoke themselves as candidates. - An election selects up to `maxRoleHolders` nominees with highest delegated votes (`ERC20Votes.getVotes`). - No Powers/Mandate integration. Pure storage and helper utilities.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/Erc20DelegateElection.sol\":\"Erc20DelegateElection\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee\",\"dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7\",\"dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578\",\"dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435\",\"dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a\",\"dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99\",\"dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4\",\"dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6\",\"dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256\",\"dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc\"]},\"src/core/helpers/Nominees.sol\":{\"keccak256\":\"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13\",\"dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u\"]},\"test/mocks/Erc20DelegateElection.sol\":{\"keccak256\":\"0xe79b7c618e8cdacc187e48b3930086cda5d3bd11177633e815cf5483230a7dc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4352ea39301f61aef4cb2a958a72b9e5b99e210604b4c5cb7ee1b2ca5415d35e\",\"dweb:/ipfs/QmWsoi3EFpmEUrTYdHTu5WXXg8yTSZ1yx2Tcc4oYKEZv3i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationRevoked","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":"view","type":"function","name":"config","outputs":[{"internalType":"contract ERC20Votes","name":"token","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNomineeRanking","outputs":[{"internalType":"address[]","name":"nomineesArray","type":"address[]"},{"internalType":"uint256[]","name":"votes","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNominees","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isNominee","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"nominee","type":"address"},{"internalType":"bool","name":"shouldNominate","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"nominate"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"view","type":"function","name":"nominations","outputs":[{"internalType":"bool","name":"nominated","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"nominees","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nomineesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeNomination"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/Erc20DelegateElection.sol":"Erc20DelegateElection"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol":{"keccak256":"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6","urls":["bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee","dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol":{"keccak256":"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7","urls":["bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7","dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol":{"keccak256":"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd","urls":["bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578","dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol":{"keccak256":"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6","urls":["bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435","dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol":{"keccak256":"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a","urls":["bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a","dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"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/Nonces.sol":{"keccak256":"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f","urls":["bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e","dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c","urls":["bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99","dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4","urls":["bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4","dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77","urls":["bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6","dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05","urls":["bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256","dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc"],"license":"MIT"},"src/core/helpers/Nominees.sol":{"keccak256":"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7","urls":["bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13","dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u"],"license":"MIT"},"test/mocks/Erc20DelegateElection.sol":{"keccak256":"0xe79b7c618e8cdacc187e48b3930086cda5d3bd11177633e815cf5483230a7dc2","urls":["bzz-raw://4352ea39301f61aef4cb2a958a72b9e5b99e210604b4c5cb7ee1b2ca5415d35e","dweb:/ipfs/QmWsoi3EFpmEUrTYdHTu5WXXg8yTSZ1yx2Tcc4oYKEZv3i"],"license":"MIT"}},"version":1},"id":178} \ No newline at end of file diff --git a/frontend/context/builds/Erc20Taxed.json b/frontend/context/builds/Erc20Taxed.json index 6df7c22f..179514ba 100644 --- a/frontend/context/builds/Erc20Taxed.json +++ b/frontend/context/builds/Erc20Taxed.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"AMOUNT_FAUCET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"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":"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":"burn","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeTaxRate","inputs":[{"name":"newTaxRate","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"faucet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"faucetPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getTaxLogs","inputs":[{"name":"blockNumber","type":"uint48","internalType":"uint48"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"taxPaid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"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":"pauseFaucet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"taxLogs","inputs":[{"name":"epoch","type":"uint48","internalType":"uint48"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"taxPaid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"taxRate","inputs":[],"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":"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":"Erc20Taxed__FaucetPaused","inputs":[]},{"type":"error","name":"Erc20Taxed__InsufficientBalanceForTax","inputs":[]},{"type":"error","name":"Erc20Taxed__NoZeroAmount","inputs":[]},{"type":"error","name":"Erc20Taxed__TaxRateOverflow","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60e0604052670de0b6b3a764000060805234801561001b575f5ffd5b50336040518060400160405280600581526020016415185e195960da1b815250604051806040016040528060038152602001620a882b60eb1b815250816003908161006691906104ca565b50600461007382826104ca565b5050506001600160a01b0381166100a457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100ad816100d5565b50600a600655606460a05261038460c0526100d033670de0b6b3a7640000610126565b61061a565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661014f5760405163ec442f0560e01b81525f600482015260240161009b565b61015a5f838361015e565b5050565b6005546001600160a01b0384811691161480159061018a57506005546001600160a01b03838116911614155b801561019e57506001600160a01b03831615155b80156101b257506001600160a01b03821615155b80156101bd57508015155b156102a0575f60a05160ff16600654836101d79190610598565b6101e191906105c9565b90505f610202856001600160a01b03165f9081526020819052604090205490565b905061020e82846105dc565b81101561022d57604051623b0e3960e51b815260040160405180910390fd5b610249856102436005546001600160a01b031690565b846102b0565b5f60c0514361025891906105ef565b65ffffffffffff81165f9081526008602090815260408083206001600160a01b038b1684529091528120805492935085929091906102979084906105dc565b90915550505050505b6102ab83838361030d565b505050565b6001600160a01b0383166102d957604051634b637e8f60e11b81525f600482015260240161009b565b6001600160a01b0382166103025760405163ec442f0560e01b81525f600482015260240161009b565b6102ab83838361015e565b6001600160a01b038316610337578060025f82825461032c91906105dc565b909155506103a79050565b6001600160a01b0383165f90815260208190526040902054818110156103895760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161009b565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166103c3576002805482900390556103e1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161042691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061045b57607f821691505b60208210810361047957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102ab57805f5260205f20601f840160051c810160208510156104a45750805b601f840160051c820191505b818110156104c3575f81556001016104b0565b5050505050565b81516001600160401b038111156104e3576104e3610433565b6104f7816104f18454610447565b8461047f565b6020601f821160018114610529575f83156105125750848201515b5f19600385901b1c1916600184901b1784556104c3565b5f84815260208120601f198516915b828110156105585787850151825560209485019460019092019101610538565b508482101561057557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105af576105af610584565b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f826105d7576105d76105b5565b500490565b808201808211156105af576105af610584565b5f65ffffffffffff831680610606576106066105b5565b8065ffffffffffff84160491505092915050565b60805160a05160c051610e646106675f395f8181610311015281816105110152610a7401525f81816102cf0152818161062701526109cc01525f81816101e301526105f40152610e645ff3fe608060405234801561000f575f5ffd5b506004361061018f575f3560e01c80637858dcd6116100dd578063a9059cbb11610088578063de5f72fd11610063578063de5f72fd146103bf578063eb9943d9146103c7578063f2fde38b146103da575f5ffd5b8063a9059cbb1461034a578063dc731c401461035d578063dd62ed3e14610387575f5ffd5b806395d89b41116100b857806395d89b41146102f1578063a0712d68146102f9578063a70b9f0c1461030c575f5ffd5b80637858dcd6146102a25780638da5cb5b146102af578063918f8674146102ca575f5ffd5b8063313ce5671161013d57806370d38b0a1161011857806370d38b0a1461027e578063715018a614610291578063771a3a1d14610299575f5ffd5b8063313ce5671461022e57806342966c681461024357806370a0823114610256575f5ffd5b80630eb2dbf41161016d5780630eb2dbf4146101de57806318160ddd1461021357806323b872dd1461021b575f5ffd5b8063057d7a621461019357806306fdde031461019d578063095ea7b3146101bb575b5f5ffd5b61019b6103ed565b005b6101a5610409565b6040516101b29190610c0d565b60405180910390f35b6101ce6101c9366004610c5d565b610499565b60405190151581526020016101b2565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b600254610205565b6101ce610229366004610c85565b6104b2565b60125b60405160ff90911681526020016101b2565b61019b610251366004610cbf565b6104d5565b610205610264366004610cd6565b6001600160a01b03165f9081526020819052604090205490565b61020561028c366004610cf6565b61050a565b61019b610569565b61020560065481565b6007546101ce9060ff1681565b6005546040516001600160a01b0390911681526020016101b2565b6102317f000000000000000000000000000000000000000000000000000000000000000081565b6101a561057c565b61019b610307366004610cbf565b61058b565b6103337f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff90911681526020016101b2565b6101ce610358366004610c5d565b6105bd565b61020561036b366004610cf6565b600860209081525f928352604080842090915290825290205481565b610205610395366004610d33565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61019b6105ca565b61019b6103d5366004610cbf565b610618565b61019b6103e8366004610cd6565b610672565b6103f56106b1565b6007805460ff19811660ff90911615179055565b60606003805461041890610d4d565b80601f016020809104026020016040519081016040528092919081815260200182805461044490610d4d565b801561048f5780601f106104665761010080835404028352916020019161048f565b820191905f5260205f20905b81548152906001019060200180831161047257829003601f168201915b5050505050905090565b5f336104a68185856106de565b60019150505b92915050565b5f336104bf8582856106f0565b6104ca85858561076c565b506001949350505050565b6104dd6106b1565b805f036104fd5760405163a429762760e01b815260040160405180910390fd5b61050733826107c9565b50565b5f806105367f000000000000000000000000000000000000000000000000000000000000000085610dad565b65ffffffffffff165f9081526008602090815260408083206001600160a01b038716845290915290205491505092915050565b6105716106b1565b61057a5f610801565b565b60606004805461041890610d4d565b6105936106b1565b805f036105b35760405163a429762760e01b815260040160405180910390fd5b610507338261085f565b5f336104a681858561076c565b60075460ff16156105ee57604051633a159b8d60e01b815260040160405180910390fd5b61057a337f000000000000000000000000000000000000000000000000000000000000000061085f565b6106206106b1565b61064b60017f0000000000000000000000000000000000000000000000000000000000000000610dd8565b60ff16811061066d57604051636303781560e11b815260040160405180910390fd5b600655565b61067a6106b1565b6001600160a01b0381166106a857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61050781610801565b6005546001600160a01b0316331461057a5760405163118cdaa760e01b815233600482015260240161069f565b6106eb8383836001610893565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610766578181101561075857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161069f565b61076684848484035f610893565b50505050565b6001600160a01b03831661079557604051634b637e8f60e11b81525f600482015260240161069f565b6001600160a01b0382166107be5760405163ec442f0560e01b81525f600482015260240161069f565b6106eb838383610965565b6001600160a01b0382166107f257604051634b637e8f60e11b81525f600482015260240161069f565b6107fd825f83610965565b5050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166108885760405163ec442f0560e01b81525f600482015260240161069f565b6107fd5f8383610965565b6001600160a01b0384166108bc5760405163e602df0560e01b81525f600482015260240161069f565b6001600160a01b0383166108e557604051634a1406b160e11b81525f600482015260240161069f565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561076657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161095791815260200190565b60405180910390a350505050565b6005546001600160a01b0384811691161480159061099157506005546001600160a01b03838116911614155b80156109a557506001600160a01b03831615155b80156109b957506001600160a01b03821615155b80156109c457508015155b15610ae1575f7f000000000000000000000000000000000000000000000000000000000000000060ff16600654836109fc9190610df1565b610a069190610e08565b90505f610a27856001600160a01b03165f9081526020819052604090205490565b9050610a338284610e1b565b811015610a5257604051623b0e3960e51b815260040160405180910390fd5b610a6e85610a686005546001600160a01b031690565b8461076c565b5f610a997f000000000000000000000000000000000000000000000000000000000000000043610dad565b65ffffffffffff81165f9081526008602090815260408083206001600160a01b038b168452909152812080549293508592909190610ad8908490610e1b565b90915550505050505b6106eb8383836001600160a01b038316610b11578060025f828254610b069190610e1b565b90915550610b819050565b6001600160a01b0383165f9081526020819052604090205481811015610b635760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161069f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610b9d57600280548290039055610bbb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0091815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610c58575f5ffd5b919050565b5f5f60408385031215610c6e575f5ffd5b610c7783610c42565b946020939093013593505050565b5f5f5f60608486031215610c97575f5ffd5b610ca084610c42565b9250610cae60208501610c42565b929592945050506040919091013590565b5f60208284031215610ccf575f5ffd5b5035919050565b5f60208284031215610ce6575f5ffd5b610cef82610c42565b9392505050565b5f5f60408385031215610d07575f5ffd5b823565ffffffffffff81168114610d1c575f5ffd5b9150610d2a60208401610c42565b90509250929050565b5f5f60408385031215610d44575f5ffd5b610d1c83610c42565b600181811c90821680610d6157607f821691505b602082108103610d7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f65ffffffffffff831680610dc457610dc4610d85565b8065ffffffffffff84160491505092915050565b60ff82811682821603908111156104ac576104ac610d99565b80820281158282048414176104ac576104ac610d99565b5f82610e1657610e16610d85565b500490565b808201808211156104ac576104ac610d9956fea26469706673582212207b4095f27619543765720dfb8023597562c082ea2b0deb47f03598b7d1686c6064736f6c634300081e0033","sourceMap":"228:3623:197:-:0;;;540:12;499:53;;732:365;;;;;;;;;;776:10;1582:113:62;;;;;;;;;;;;;-1:-1:-1;;;1582:113:62;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:113:62;;;1656:5;1648;:13;;;;;;:::i;:::-;-1:-1:-1;1671:7:62;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:39;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:39;;1350:1;1322:31;;;2801:51:227;2774:18;;1322:31:39;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;856:2:197::2;846:7;:12:::0;882:3:::2;868:17;::::0;912:3:::2;895:20;::::0;1025:31:::2;1031:10;1043:12;1025:5;:31::i;:::-;228:3623:::0;;2912:187:39;3004:6;;;-1:-1:-1;;;;;3020:17:39;;;-1:-1:-1;;;;;;3020:17:39;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;7362:208:62:-;-1:-1:-1;;;;;7432:21:62;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:62;;7505:1;7476:32;;;2801:51:227;2774:18;;7476:32:62;2655:203:227;7428:91:62;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;2131:1040:197:-;1710:6:39;;-1:-1:-1;;;;;2486:15:197;;;1710:6:39;;2486:15:197;;;;:32;;-1:-1:-1;1710:6:39;;-1:-1:-1;;;;;2505:13:197;;;1710:6:39;;2505:13:197;;2486:32;:54;;;;-1:-1:-1;;;;;;2522:18:197;;;;2486:54;:74;;;;-1:-1:-1;;;;;;2544:16:197;;;;2486:74;:88;;;;-1:-1:-1;2564:10:197;;;2486:88;2482:592;;;2590:11;2624;;2604:31;;2613:7;;2605:5;:15;;;;:::i;:::-;2604:31;;;;:::i;:::-;2590:45;-1:-1:-1;2649:19:197;2671:15;2681:4;-1:-1:-1;;;;;3024:18:62;2998:7;3024:18;;;;;;;;;;;;2933:116;2671:15:197;2649:37;-1:-1:-1;2719:11:197;2727:3;2719:5;:11;:::i;:::-;2705;:25;2701:110;;;2757:39;;-1:-1:-1;;;2757:39:197;;;;;;;;;;;2701:110;2871:29;2881:4;2887:7;1710:6:39;;-1:-1:-1;;;;;1710:6:39;;1638:85;2887:7:197;2896:3;2871:9;:29::i;:::-;2956:19;3001:14;;2985:12;2978:37;;;;:::i;:::-;3029:21;;;;;;;:7;:21;;;;;;;;-1:-1:-1;;;;;3029:27:197;;;;;;;;;:34;;2956:59;;-1:-1:-1;3060:3:197;;3029:27;;:21;:34;;3060:3;;3029:34;:::i;:::-;;;;-1:-1:-1;;;;;2482:592:197;3134:30;3148:4;3154:2;3158:5;3134:13;:30::i;:::-;2131:1040;;;:::o;5297:300:62:-;-1:-1:-1;;;;;5380:18:62;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:62;;5448:1;5421:30;;;2801:51:227;2774:18;;5421:30:62;2655:203:227;5376:86:62;-1:-1:-1;;;;;5475:16:62;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:62;;5543:1;5514:32;;;2801:51:227;2774:18;;5514:32:62;2655:203:227;5471:86:62;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;5912:1107::-;-1:-1:-1;;;;;6001:18:62;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:62;;-1:-1:-1;5997:540:62;;-1:-1:-1;;;;;6211:15:62;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:62;;-1:-1:-1;;;;;3966:32:227;;6290:50:62;;;3948:51:227;4015:18;;;4008:34;;;4058:18;;;4051:34;;;3921:18;;6290:50:62;3746:345:227;6240:115:62;-1:-1:-1;;;;;6475:15:62;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:62;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:62;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:62;6996:4;-1:-1:-1;;;;;6987:25:62;;7006:5;6987:25;;;;4242::227;;4230:2;4215:18;;4096:177;6987:25:62;;;;;;;;5912:1107;;;:::o;14:127:227:-;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:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:227;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;;1082:3;;657:518;;;:::o;1351:1299::-;1471:10;;-1:-1:-1;;;;;1493:30:227;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1701:4;1732:2;1721:14;;1749:1;1744:649;;;;2437:1;2454:6;2451:89;;;-1:-1:-1;2506:19:227;;;2500:26;2451:89;-1:-1:-1;;1308:1:227;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2553:81;;1714:930;;1744:649;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1780:20:227;;;1898:222;1912:7;1909:1;1906:14;1898:222;;;1994:19;;;1988:26;1973:42;;2101:4;2086:20;;;;2054:1;2042:14;;;;1928:12;1898:222;;;1902:3;2148:6;2139:7;2136:19;2133:201;;;2209:19;;;2203:26;-1:-1:-1;;2292:1:227;2288:14;;;2304:3;2284:24;2280:37;2276:42;2261:58;2246:74;;2133:201;-1:-1:-1;;;;2380:1:227;2364:14;;;2360:22;2347:36;;-1:-1:-1;1351:1299:227:o;2863:127::-;2924:10;2919:3;2915:20;2912:1;2905:31;2955:4;2952:1;2945:15;2979:4;2976:1;2969:15;2995:168;3068:9;;;3099;;3116:15;;;3110:22;;3096:37;3086:71;;3137:18;;:::i;:::-;2995:168;;;;:::o;3168:127::-;3229:10;3224:3;3220:20;3217:1;3210:31;3260:4;3257:1;3250:15;3284:4;3281:1;3274:15;3300:120;3340:1;3366;3356:35;;3371:18;;:::i;:::-;-1:-1:-1;3405:9:227;;3300:120::o;3425:125::-;3490:9;;;3511:10;;;3508:36;;;3524:18;;:::i;3555:186::-;3594:1;3628:14;3625:1;3621:22;3662:3;3652:37;;3669:18;;:::i;:::-;3731:3;3714:14;3711:1;3707:22;3703:32;3698:37;;;3555:186;;;;:::o;4096:177::-;228:3623:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061018f575f3560e01c80637858dcd6116100dd578063a9059cbb11610088578063de5f72fd11610063578063de5f72fd146103bf578063eb9943d9146103c7578063f2fde38b146103da575f5ffd5b8063a9059cbb1461034a578063dc731c401461035d578063dd62ed3e14610387575f5ffd5b806395d89b41116100b857806395d89b41146102f1578063a0712d68146102f9578063a70b9f0c1461030c575f5ffd5b80637858dcd6146102a25780638da5cb5b146102af578063918f8674146102ca575f5ffd5b8063313ce5671161013d57806370d38b0a1161011857806370d38b0a1461027e578063715018a614610291578063771a3a1d14610299575f5ffd5b8063313ce5671461022e57806342966c681461024357806370a0823114610256575f5ffd5b80630eb2dbf41161016d5780630eb2dbf4146101de57806318160ddd1461021357806323b872dd1461021b575f5ffd5b8063057d7a621461019357806306fdde031461019d578063095ea7b3146101bb575b5f5ffd5b61019b6103ed565b005b6101a5610409565b6040516101b29190610c0d565b60405180910390f35b6101ce6101c9366004610c5d565b610499565b60405190151581526020016101b2565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b600254610205565b6101ce610229366004610c85565b6104b2565b60125b60405160ff90911681526020016101b2565b61019b610251366004610cbf565b6104d5565b610205610264366004610cd6565b6001600160a01b03165f9081526020819052604090205490565b61020561028c366004610cf6565b61050a565b61019b610569565b61020560065481565b6007546101ce9060ff1681565b6005546040516001600160a01b0390911681526020016101b2565b6102317f000000000000000000000000000000000000000000000000000000000000000081565b6101a561057c565b61019b610307366004610cbf565b61058b565b6103337f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff90911681526020016101b2565b6101ce610358366004610c5d565b6105bd565b61020561036b366004610cf6565b600860209081525f928352604080842090915290825290205481565b610205610395366004610d33565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61019b6105ca565b61019b6103d5366004610cbf565b610618565b61019b6103e8366004610cd6565b610672565b6103f56106b1565b6007805460ff19811660ff90911615179055565b60606003805461041890610d4d565b80601f016020809104026020016040519081016040528092919081815260200182805461044490610d4d565b801561048f5780601f106104665761010080835404028352916020019161048f565b820191905f5260205f20905b81548152906001019060200180831161047257829003601f168201915b5050505050905090565b5f336104a68185856106de565b60019150505b92915050565b5f336104bf8582856106f0565b6104ca85858561076c565b506001949350505050565b6104dd6106b1565b805f036104fd5760405163a429762760e01b815260040160405180910390fd5b61050733826107c9565b50565b5f806105367f000000000000000000000000000000000000000000000000000000000000000085610dad565b65ffffffffffff165f9081526008602090815260408083206001600160a01b038716845290915290205491505092915050565b6105716106b1565b61057a5f610801565b565b60606004805461041890610d4d565b6105936106b1565b805f036105b35760405163a429762760e01b815260040160405180910390fd5b610507338261085f565b5f336104a681858561076c565b60075460ff16156105ee57604051633a159b8d60e01b815260040160405180910390fd5b61057a337f000000000000000000000000000000000000000000000000000000000000000061085f565b6106206106b1565b61064b60017f0000000000000000000000000000000000000000000000000000000000000000610dd8565b60ff16811061066d57604051636303781560e11b815260040160405180910390fd5b600655565b61067a6106b1565b6001600160a01b0381166106a857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61050781610801565b6005546001600160a01b0316331461057a5760405163118cdaa760e01b815233600482015260240161069f565b6106eb8383836001610893565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610766578181101561075857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161069f565b61076684848484035f610893565b50505050565b6001600160a01b03831661079557604051634b637e8f60e11b81525f600482015260240161069f565b6001600160a01b0382166107be5760405163ec442f0560e01b81525f600482015260240161069f565b6106eb838383610965565b6001600160a01b0382166107f257604051634b637e8f60e11b81525f600482015260240161069f565b6107fd825f83610965565b5050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166108885760405163ec442f0560e01b81525f600482015260240161069f565b6107fd5f8383610965565b6001600160a01b0384166108bc5760405163e602df0560e01b81525f600482015260240161069f565b6001600160a01b0383166108e557604051634a1406b160e11b81525f600482015260240161069f565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561076657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161095791815260200190565b60405180910390a350505050565b6005546001600160a01b0384811691161480159061099157506005546001600160a01b03838116911614155b80156109a557506001600160a01b03831615155b80156109b957506001600160a01b03821615155b80156109c457508015155b15610ae1575f7f000000000000000000000000000000000000000000000000000000000000000060ff16600654836109fc9190610df1565b610a069190610e08565b90505f610a27856001600160a01b03165f9081526020819052604090205490565b9050610a338284610e1b565b811015610a5257604051623b0e3960e51b815260040160405180910390fd5b610a6e85610a686005546001600160a01b031690565b8461076c565b5f610a997f000000000000000000000000000000000000000000000000000000000000000043610dad565b65ffffffffffff81165f9081526008602090815260408083206001600160a01b038b168452909152812080549293508592909190610ad8908490610e1b565b90915550505050505b6106eb8383836001600160a01b038316610b11578060025f828254610b069190610e1b565b90915550610b819050565b6001600160a01b0383165f9081526020819052604090205481811015610b635760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161069f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610b9d57600280548290039055610bbb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0091815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610c58575f5ffd5b919050565b5f5f60408385031215610c6e575f5ffd5b610c7783610c42565b946020939093013593505050565b5f5f5f60608486031215610c97575f5ffd5b610ca084610c42565b9250610cae60208501610c42565b929592945050506040919091013590565b5f60208284031215610ccf575f5ffd5b5035919050565b5f60208284031215610ce6575f5ffd5b610cef82610c42565b9392505050565b5f5f60408385031215610d07575f5ffd5b823565ffffffffffff81168114610d1c575f5ffd5b9150610d2a60208401610c42565b90509250929050565b5f5f60408385031215610d44575f5ffd5b610d1c83610c42565b600181811c90821680610d6157607f821691505b602082108103610d7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f65ffffffffffff831680610dc457610dc4610d85565b8065ffffffffffff84160491505092915050565b60ff82811682821603908111156104ac576104ac610d99565b80820281158282048414176104ac576104ac610d99565b5f82610e1657610e16610d85565b500490565b808201808211156104ac576104ac610d9956fea26469706673582212207b4095f27619543765720dfb8023597562c082ea2b0deb47f03598b7d1686c6064736f6c634300081e0033","sourceMap":"228:3623:197:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1746:85;;;:::i;:::-;;1760:89:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;:::i;:::-;;:::i;:::-;;;1108:14:227;;1101:22;1083:41;;1071:2;1056:18;3902:186:62;943:187:227;499:53:197;;;;;;;;1281:25:227;;;1269:2;1254:18;499:53:197;1135:177:227;2803:97:62;2881:12;;2803:97;;4680:244;;;;;;:::i;:::-;;:::i;2688:82::-;2761:2;2688:82;;;1868:4:227;1856:17;;;1838:36;;1826:2;1811:18;2688:82:62;1696:184:227;1282:173:197;;;;;;:::i;:::-;;:::i;2933:116:62:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:62;2998:7;3024:18;;;;;;;;;;;;2933:116;3325:197:197;;;;;;:::i;:::-;;:::i;2293:101:39:-;;;:::i;441:22:197:-;;;;;;469:24;;;;;;;;;1638:85:39;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:39;;;2812:74:227;;2800:2;2785:18;1638:85:39;2666:226:227;558:34:197;;;;;1962:93:62;;;:::i;1103:173:197:-;;;;;;:::i;:::-;;:::i;598:38::-;;;;;;;;3071:14:227;3059:27;;;3041:46;;3029:2;3014:18;598:38:197;2897:196:227;3244:178:62;;;;;;:::i;:::-;;:::i;642:83:197:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3455:140:62;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:62;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;1581:159:197;;;:::i;1837:202::-;;;;;;:::i;:::-;;:::i;2543:215:39:-;;;;;;:::i;:::-;;:::i;1746:85:197:-;1531:13:39;:11;:13::i;:::-;1812:12:197::1;::::0;;-1:-1:-1;;1796:28:197;::::1;1812:12;::::0;;::::1;1811:13;1796:28;::::0;;1746:85::o;1760:89:62:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:76;4029:31:62;735:10:76;4045:7:62;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;;:::o;4680:244::-;4767:4;735:10:76;4823:37:62;4839:4;735:10:76;4854:5:62;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:62;;4680:244;-1:-1:-1;;;;4680:244:62:o;1282:173:197:-;1531:13:39;:11;:13::i;:::-;1343:6:197::1;1353:1;1343:11:::0;1339:75:::1;;1377:26;;-1:-1:-1::0;;;1377:26:197::1;;;;;;;;;;;1339:75;1423:25;1429:10;1441:6;1423:5;:25::i;:::-;1282:173:::0;:::o;3325:197::-;3405:15;;3447:28;3461:14;3447:11;:28;:::i;:::-;3492:14;;;;;;:7;:14;;;;;;;;-1:-1:-1;;;;;3492:23:197;;;;;;;;;;;-1:-1:-1;;3325:197:197;;;;:::o;2293:101:39:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1962:93:62:-;2009:13;2041:7;2034:14;;;;;:::i;1103:173:197:-;1531:13:39;:11;:13::i;:::-;1164:6:197::1;1174:1;1164:11:::0;1160:75:::1;;1198:26;;-1:-1:-1::0;;;1198:26:197::1;;;;;;;;;;;1160:75;1244:25;1250:10;1262:6;1244:5;:25::i;3244:178:62:-:0;3313:4;735:10:76;3367:27:62;735:10:76;3384:2:62;3388:5;3367:9;:27::i;1581:159:197:-;1620:12;;;;1616:76;;;1655:26;;-1:-1:-1;;;1655:26:197;;;;;;;;;;;1616:76;1701:32;1707:10;1719:13;1701:5;:32::i;1837:202::-;1531:13:39;:11;:13::i;:::-;1925:15:197::1;1939:1;1925:11;:15;:::i;:::-;1911:29;;:10;:29;1907:96;;1963:29;;-1:-1:-1::0;;;1963:29:197::1;;;;;;;;;;;1907:96;2012:7;:20:::0;1837:202::o;2543:215:39:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:39;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:39;;2700:1:::1;2672:31;::::0;::::1;2812:74:227::0;2785:18;;2672:31:39::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;1796:162::-:0;1710:6;;-1:-1:-1;;;;;1710:6:39;735:10:76;1855:23:39;1851:101;;1901:40;;-1:-1:-1;;;1901:40:39;;735:10:76;1901:40:39;;;2812:74:227;2785:18;;1901:40:39;2666:226:227;8630:128:62;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;-1:-1:-1;;;;;3561:18:62;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:62;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10593:60;;-1:-1:-1;;;10593:60:62;;-1:-1:-1;;;;;4579:55:227;;10593:60:62;;;4561:74:227;4651:18;;;4644:34;;;4694:18;;;4687:34;;;4534:18;;10593:60:62;4359:368:227;10538:130:62;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:62;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:62;;5448:1;5421:30;;;2812:74:227;2785:18;;5421:30:62;2666:226:227;5376:86:62;-1:-1:-1;;;;;5475:16:62;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:62;;5543:1;5514:32;;;2812:74:227;2785:18;;5514:32:62;2666:226:227;5471:86:62;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;7888:206::-;-1:-1:-1;;;;;7958:21:62;;7954:89;;8002:30;;-1:-1:-1;;;8002:30:62;;8029:1;8002:30;;;2812:74:227;2785:18;;8002:30:62;2666:226:227;7954:89:62;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;:::-;7888:206;;:::o;2912:187:39:-;3004:6;;;-1:-1:-1;;;;;3020:17:39;;;-1:-1:-1;;3020:17:39;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;7362:208:62:-;-1:-1:-1;;;;;7432:21:62;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:62;;7505:1;7476:32;;;2812:74:227;2785:18;;7476:32:62;2666:226:227;7428:91:62;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;9607:432::-;-1:-1:-1;;;;;9719:19:62;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:62;;9790:1;9761:32;;;2812:74:227;2785:18;;9761:32:62;2666:226:227;9715:89:62;-1:-1:-1;;;;;9817:21:62;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:62;;9889:1;9861:31;;;2812:74:227;2785:18;;9861:31:62;2666:226:227;9813:90:62;-1:-1:-1;;;;;9912:18:62;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:62;10000:5;-1:-1:-1;;;;;9991:31:62;;10016:5;9991:31;;;;1281:25:227;;1269:2;1254:18;;1135:177;9991:31:62;;;;;;;;9607:432;;;;:::o;2131:1040:197:-;1710:6:39;;-1:-1:-1;;;;;2486:15:197;;;1710:6:39;;2486:15:197;;;;:32;;-1:-1:-1;1710:6:39;;-1:-1:-1;;;;;2505:13:197;;;1710:6:39;;2505:13:197;;2486:32;:54;;;;-1:-1:-1;;;;;;2522:18:197;;;;2486:54;:74;;;;-1:-1:-1;;;;;;2544:16:197;;;;2486:74;:88;;;;-1:-1:-1;2564:10:197;;;2486:88;2482:592;;;2590:11;2624;2604:31;;2613:7;;2605:5;:15;;;;:::i;:::-;2604:31;;;;:::i;:::-;2590:45;;2649:19;2671:15;2681:4;-1:-1:-1;;;;;3024:18:62;2998:7;3024:18;;;;;;;;;;;;2933:116;2671:15:197;2649:37;-1:-1:-1;2719:11:197;2727:3;2719:5;:11;:::i;:::-;2705;:25;2701:110;;;2757:39;;-1:-1:-1;;;2757:39:197;;;;;;;;;;;2701:110;2871:29;2881:4;2887:7;1710:6:39;;-1:-1:-1;;;;;1710:6:39;;1638:85;2887:7:197;2896:3;2871:9;:29::i;:::-;2956:19;2978:37;3001:14;2985:12;2978:37;:::i;:::-;3029:21;;;;;;;:7;:21;;;;;;;;-1:-1:-1;;;;;3029:27:197;;;;;;;;;:34;;2956:59;;-1:-1:-1;3060:3:197;;3029:27;;:21;:34;;3060:3;;3029:34;:::i;:::-;;;;-1:-1:-1;;;;;2482:592:197;3134:30;3148:4;3154:2;3158:5;-1:-1:-1;;;;;6001:18:62;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:62;;-1:-1:-1;5997:540:62;;-1:-1:-1;;;;;6211:15:62;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:62;;-1:-1:-1;;;;;4579:55:227;;6290:50:62;;;4561:74:227;4651:18;;;4644:34;;;4694:18;;;4687:34;;;4534:18;;6290:50:62;4359:368:227;6240:115:62;-1:-1:-1;;;;;6475:15:62;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:62;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:62;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:62;6996:4;-1:-1:-1;;;;;6987:25:62;;7006:5;6987:25;;;;1281::227;;1269:2;1254:18;;1135:177;6987:25:62;;;;;;;;5912:1107;;;:::o;14:418:227:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:196::-;505:20;;-1:-1:-1;;;;;554:54:227;;544:65;;534:93;;623:1;620;613:12;534:93;437:196;;;:::o;638:300::-;706:6;714;767:2;755:9;746:7;742:23;738:32;735:52;;;783:1;780;773:12;735:52;806:29;825:9;806:29;:::i;:::-;796:39;904:2;889:18;;;;876:32;;-1:-1:-1;;;638:300:227:o;1317:374::-;1394:6;1402;1410;1463:2;1451:9;1442:7;1438:23;1434:32;1431:52;;;1479:1;1476;1469:12;1431:52;1502:29;1521:9;1502:29;:::i;:::-;1492:39;;1550:38;1584:2;1573:9;1569:18;1550:38;:::i;:::-;1317:374;;1540:48;;-1:-1:-1;;;1657:2:227;1642:18;;;;1629:32;;1317:374::o;1885:226::-;1944:6;1997:2;1985:9;1976:7;1972:23;1968:32;1965:52;;;2013:1;2010;2003:12;1965:52;-1:-1:-1;2058:23:227;;1885:226;-1:-1:-1;1885:226:227:o;2116:186::-;2175:6;2228:2;2216:9;2207:7;2203:23;2199:32;2196:52;;;2244:1;2241;2234:12;2196:52;2267:29;2286:9;2267:29;:::i;:::-;2257:39;2116:186;-1:-1:-1;;;2116:186:227:o;2307:354::-;2374:6;2382;2435:2;2423:9;2414:7;2410:23;2406:32;2403:52;;;2451:1;2448;2441:12;2403:52;2490:9;2477:23;2540:14;2533:5;2529:26;2522:5;2519:37;2509:65;;2570:1;2567;2560:12;2509:65;2593:5;-1:-1:-1;2617:38:227;2651:2;2636:18;;2617:38;:::i;:::-;2607:48;;2307:354;;;;;:::o;3098:260::-;3166:6;3174;3227:2;3215:9;3206:7;3202:23;3198:32;3195:52;;;3243:1;3240;3233:12;3195:52;3266:29;3285:9;3266:29;:::i;3363:380::-;3442:1;3438:12;;;;3485;;;3506:61;;3560:4;3552:6;3548:17;3538:27;;3506:61;3613:2;3605:6;3602:14;3582:18;3579:38;3576:161;;3659:10;3654:3;3650:20;3647:1;3640:31;3694:4;3691:1;3684:15;3722:4;3719:1;3712:15;3576:161;;3363:380;;;:::o;3748:127::-;3809:10;3804:3;3800:20;3797:1;3790:31;3840:4;3837:1;3830:15;3864:4;3861:1;3854:15;3880:127;3941:10;3936:3;3932:20;3929:1;3922:31;3972:4;3969:1;3962:15;3996:4;3993:1;3986:15;4012:186;4051:1;4085:14;4082:1;4078:22;4119:3;4109:37;;4126:18;;:::i;:::-;4188:3;4171:14;4168:1;4164:22;4160:32;4155:37;;;4012:186;;;;:::o;4203:151::-;4293:4;4286:12;;;4272;;;4268:31;;4311:14;;4308:40;;;4328:18;;:::i;4732:168::-;4805:9;;;4836;;4853:15;;;4847:22;;4833:37;4823:71;;4874:18;;:::i;4905:120::-;4945:1;4971;4961:35;;4976:18;;:::i;:::-;-1:-1:-1;5010:9:227;;4905:120::o;5030:125::-;5095:9;;;5116:10;;;5113:36;;;5129:18;;:::i","linkReferences":{},"immutableReferences":{"110090":[{"start":483,"length":32},{"start":1524,"length":32}],"110092":[{"start":719,"length":32},{"start":1575,"length":32},{"start":2508,"length":32}],"110094":[{"start":785,"length":32},{"start":1297,"length":32},{"start":2676,"length":32}]}},"methodIdentifiers":{"AMOUNT_FAUCET()":"0eb2dbf4","DENOMINATOR()":"918f8674","EPOCH_DURATION()":"a70b9f0c","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","changeTaxRate(uint256)":"eb9943d9","decimals()":"313ce567","faucet()":"de5f72fd","faucetPaused()":"7858dcd6","getTaxLogs(uint48,address)":"70d38b0a","mint(uint256)":"a0712d68","name()":"06fdde03","owner()":"8da5cb5b","pauseFaucet()":"057d7a62","renounceOwnership()":"715018a6","symbol()":"95d89b41","taxLogs(uint48,address)":"dc731c40","taxRate()":"771a3a1d","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":[],\"name\":\"Erc20Taxed__FaucetPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Taxed__InsufficientBalanceForTax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Taxed__NoZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Taxed__TaxRateOverflow\",\"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\":[],\"name\":\"AMOUNT_FAUCET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"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\":\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTaxRate\",\"type\":\"uint256\"}],\"name\":\"changeTaxRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"faucetPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"blockNumber\",\"type\":\"uint48\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getTaxLogs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taxPaid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"pauseFaucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"epoch\",\"type\":\"uint48\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"taxLogs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taxPaid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taxRate\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"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.\"}}],\"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\":\"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\":\"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\":\"Returns the value of tokens owned by `account`.\"},\"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.\"},\"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\":\"Returns the value of tokens in existence.\"},\"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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\":{\"compilationTarget\":{\"test/mocks/Erc20Taxed.sol\":\"Erc20Taxed\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"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\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/mocks/Erc20Taxed.sol\":{\"keccak256\":\"0x427804575781753c2f8a928edd901f908c069a868792889e39328d7690a5cf87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b3c8923306e1c30fdad21402dd80f777391af5f1b6cca59e9145b556caa5306\",\"dweb:/ipfs/QmVYXDRen1DmoEdWAGc8odyZP4NSkm2NLcFe9EK3YA5iCt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"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":[],"type":"error","name":"Erc20Taxed__FaucetPaused"},{"inputs":[],"type":"error","name":"Erc20Taxed__InsufficientBalanceForTax"},{"inputs":[],"type":"error","name":"Erc20Taxed__NoZeroAmount"},{"inputs":[],"type":"error","name":"Erc20Taxed__TaxRateOverflow"},{"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":[],"stateMutability":"view","type":"function","name":"AMOUNT_FAUCET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DENOMINATOR","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"uint256","name":"newTaxRate","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"changeTaxRate"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"faucet"},{"inputs":[],"stateMutability":"view","type":"function","name":"faucetPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"blockNumber","type":"uint48"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getTaxLogs","outputs":[{"internalType":"uint256","name":"taxPaid","type":"uint256"}]},{"inputs":[{"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":"pauseFaucet"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint48","name":"epoch","type":"uint48"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"taxLogs","outputs":[{"internalType":"uint256","name":"taxPaid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"taxRate","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"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"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":"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":"Returns the value of tokens owned by `account`."},"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."},"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":"Returns the value of tokens in existence."},"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/Erc20Taxed.sol":"Erc20Taxed"},"evmVersion":"cancun","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":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/mocks/Erc20Taxed.sol":{"keccak256":"0x427804575781753c2f8a928edd901f908c069a868792889e39328d7690a5cf87","urls":["bzz-raw://4b3c8923306e1c30fdad21402dd80f777391af5f1b6cca59e9145b556caa5306","dweb:/ipfs/QmVYXDRen1DmoEdWAGc8odyZP4NSkm2NLcFe9EK3YA5iCt"],"license":"MIT"}},"version":1},"id":197} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"AMOUNT_FAUCET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"EPOCH_DURATION","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"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":"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":"burn","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeTaxRate","inputs":[{"name":"newTaxRate","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"faucet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"faucetPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getTaxLogs","inputs":[{"name":"blockNumber","type":"uint48","internalType":"uint48"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"taxPaid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"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":"pauseFaucet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"taxLogs","inputs":[{"name":"epoch","type":"uint48","internalType":"uint48"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"taxPaid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"taxRate","inputs":[],"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":"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":"Erc20Taxed__FaucetPaused","inputs":[]},{"type":"error","name":"Erc20Taxed__InsufficientBalanceForTax","inputs":[]},{"type":"error","name":"Erc20Taxed__NoZeroAmount","inputs":[]},{"type":"error","name":"Erc20Taxed__TaxRateOverflow","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60e0604052670de0b6b3a764000060805234801561001b575f5ffd5b50336040518060400160405280600581526020016415185e195960da1b815250604051806040016040528060038152602001620a882b60eb1b815250816003908161006691906104ca565b50600461007382826104ca565b5050506001600160a01b0381166100a457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100ad816100d5565b50600a600655606460a05261038460c0526100d033670de0b6b3a7640000610126565b61061a565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661014f5760405163ec442f0560e01b81525f600482015260240161009b565b61015a5f838361015e565b5050565b6005546001600160a01b0384811691161480159061018a57506005546001600160a01b03838116911614155b801561019e57506001600160a01b03831615155b80156101b257506001600160a01b03821615155b80156101bd57508015155b156102a0575f60a05160ff16600654836101d79190610598565b6101e191906105c9565b90505f610202856001600160a01b03165f9081526020819052604090205490565b905061020e82846105dc565b81101561022d57604051623b0e3960e51b815260040160405180910390fd5b610249856102436005546001600160a01b031690565b846102b0565b5f60c0514361025891906105ef565b65ffffffffffff81165f9081526008602090815260408083206001600160a01b038b1684529091528120805492935085929091906102979084906105dc565b90915550505050505b6102ab83838361030d565b505050565b6001600160a01b0383166102d957604051634b637e8f60e11b81525f600482015260240161009b565b6001600160a01b0382166103025760405163ec442f0560e01b81525f600482015260240161009b565b6102ab83838361015e565b6001600160a01b038316610337578060025f82825461032c91906105dc565b909155506103a79050565b6001600160a01b0383165f90815260208190526040902054818110156103895760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161009b565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166103c3576002805482900390556103e1565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161042691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061045b57607f821691505b60208210810361047957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102ab57805f5260205f20601f840160051c810160208510156104a45750805b601f840160051c820191505b818110156104c3575f81556001016104b0565b5050505050565b81516001600160401b038111156104e3576104e3610433565b6104f7816104f18454610447565b8461047f565b6020601f821160018114610529575f83156105125750848201515b5f19600385901b1c1916600184901b1784556104c3565b5f84815260208120601f198516915b828110156105585787850151825560209485019460019092019101610538565b508482101561057557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105af576105af610584565b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f826105d7576105d76105b5565b500490565b808201808211156105af576105af610584565b5f65ffffffffffff831680610606576106066105b5565b8065ffffffffffff84160491505092915050565b60805160a05160c051610e646106675f395f8181610311015281816105110152610a7401525f81816102cf0152818161062701526109cc01525f81816101e301526105f40152610e645ff3fe608060405234801561000f575f5ffd5b506004361061018f575f3560e01c80637858dcd6116100dd578063a9059cbb11610088578063de5f72fd11610063578063de5f72fd146103bf578063eb9943d9146103c7578063f2fde38b146103da575f5ffd5b8063a9059cbb1461034a578063dc731c401461035d578063dd62ed3e14610387575f5ffd5b806395d89b41116100b857806395d89b41146102f1578063a0712d68146102f9578063a70b9f0c1461030c575f5ffd5b80637858dcd6146102a25780638da5cb5b146102af578063918f8674146102ca575f5ffd5b8063313ce5671161013d57806370d38b0a1161011857806370d38b0a1461027e578063715018a614610291578063771a3a1d14610299575f5ffd5b8063313ce5671461022e57806342966c681461024357806370a0823114610256575f5ffd5b80630eb2dbf41161016d5780630eb2dbf4146101de57806318160ddd1461021357806323b872dd1461021b575f5ffd5b8063057d7a621461019357806306fdde031461019d578063095ea7b3146101bb575b5f5ffd5b61019b6103ed565b005b6101a5610409565b6040516101b29190610c0d565b60405180910390f35b6101ce6101c9366004610c5d565b610499565b60405190151581526020016101b2565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b600254610205565b6101ce610229366004610c85565b6104b2565b60125b60405160ff90911681526020016101b2565b61019b610251366004610cbf565b6104d5565b610205610264366004610cd6565b6001600160a01b03165f9081526020819052604090205490565b61020561028c366004610cf6565b61050a565b61019b610569565b61020560065481565b6007546101ce9060ff1681565b6005546040516001600160a01b0390911681526020016101b2565b6102317f000000000000000000000000000000000000000000000000000000000000000081565b6101a561057c565b61019b610307366004610cbf565b61058b565b6103337f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff90911681526020016101b2565b6101ce610358366004610c5d565b6105bd565b61020561036b366004610cf6565b600860209081525f928352604080842090915290825290205481565b610205610395366004610d33565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61019b6105ca565b61019b6103d5366004610cbf565b610618565b61019b6103e8366004610cd6565b610672565b6103f56106b1565b6007805460ff19811660ff90911615179055565b60606003805461041890610d4d565b80601f016020809104026020016040519081016040528092919081815260200182805461044490610d4d565b801561048f5780601f106104665761010080835404028352916020019161048f565b820191905f5260205f20905b81548152906001019060200180831161047257829003601f168201915b5050505050905090565b5f336104a68185856106de565b60019150505b92915050565b5f336104bf8582856106f0565b6104ca85858561076c565b506001949350505050565b6104dd6106b1565b805f036104fd5760405163a429762760e01b815260040160405180910390fd5b61050733826107c9565b50565b5f806105367f000000000000000000000000000000000000000000000000000000000000000085610dad565b65ffffffffffff165f9081526008602090815260408083206001600160a01b038716845290915290205491505092915050565b6105716106b1565b61057a5f610801565b565b60606004805461041890610d4d565b6105936106b1565b805f036105b35760405163a429762760e01b815260040160405180910390fd5b610507338261085f565b5f336104a681858561076c565b60075460ff16156105ee57604051633a159b8d60e01b815260040160405180910390fd5b61057a337f000000000000000000000000000000000000000000000000000000000000000061085f565b6106206106b1565b61064b60017f0000000000000000000000000000000000000000000000000000000000000000610dd8565b60ff16811061066d57604051636303781560e11b815260040160405180910390fd5b600655565b61067a6106b1565b6001600160a01b0381166106a857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61050781610801565b6005546001600160a01b0316331461057a5760405163118cdaa760e01b815233600482015260240161069f565b6106eb8383836001610893565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610766578181101561075857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161069f565b61076684848484035f610893565b50505050565b6001600160a01b03831661079557604051634b637e8f60e11b81525f600482015260240161069f565b6001600160a01b0382166107be5760405163ec442f0560e01b81525f600482015260240161069f565b6106eb838383610965565b6001600160a01b0382166107f257604051634b637e8f60e11b81525f600482015260240161069f565b6107fd825f83610965565b5050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166108885760405163ec442f0560e01b81525f600482015260240161069f565b6107fd5f8383610965565b6001600160a01b0384166108bc5760405163e602df0560e01b81525f600482015260240161069f565b6001600160a01b0383166108e557604051634a1406b160e11b81525f600482015260240161069f565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561076657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161095791815260200190565b60405180910390a350505050565b6005546001600160a01b0384811691161480159061099157506005546001600160a01b03838116911614155b80156109a557506001600160a01b03831615155b80156109b957506001600160a01b03821615155b80156109c457508015155b15610ae1575f7f000000000000000000000000000000000000000000000000000000000000000060ff16600654836109fc9190610df1565b610a069190610e08565b90505f610a27856001600160a01b03165f9081526020819052604090205490565b9050610a338284610e1b565b811015610a5257604051623b0e3960e51b815260040160405180910390fd5b610a6e85610a686005546001600160a01b031690565b8461076c565b5f610a997f000000000000000000000000000000000000000000000000000000000000000043610dad565b65ffffffffffff81165f9081526008602090815260408083206001600160a01b038b168452909152812080549293508592909190610ad8908490610e1b565b90915550505050505b6106eb8383836001600160a01b038316610b11578060025f828254610b069190610e1b565b90915550610b819050565b6001600160a01b0383165f9081526020819052604090205481811015610b635760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161069f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610b9d57600280548290039055610bbb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0091815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610c58575f5ffd5b919050565b5f5f60408385031215610c6e575f5ffd5b610c7783610c42565b946020939093013593505050565b5f5f5f60608486031215610c97575f5ffd5b610ca084610c42565b9250610cae60208501610c42565b929592945050506040919091013590565b5f60208284031215610ccf575f5ffd5b5035919050565b5f60208284031215610ce6575f5ffd5b610cef82610c42565b9392505050565b5f5f60408385031215610d07575f5ffd5b823565ffffffffffff81168114610d1c575f5ffd5b9150610d2a60208401610c42565b90509250929050565b5f5f60408385031215610d44575f5ffd5b610d1c83610c42565b600181811c90821680610d6157607f821691505b602082108103610d7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f65ffffffffffff831680610dc457610dc4610d85565b8065ffffffffffff84160491505092915050565b60ff82811682821603908111156104ac576104ac610d99565b80820281158282048414176104ac576104ac610d99565b5f82610e1657610e16610d85565b500490565b808201808211156104ac576104ac610d9956fea2646970667358221220f6abe49856d8cea6a589b34b9d55b18ab801f91abbfa076ff35393aea65ce69d64736f6c634300081e0033","sourceMap":"228:3623:179:-:0;;;540:12;499:53;;732:365;;;;;;;;;;776:10;1582:113:50;;;;;;;;;;;;;-1:-1:-1;;;1582:113:50;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:113:50;;;1656:5;1648;:13;;;;;;:::i;:::-;-1:-1:-1;1671:7:50;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:27;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:27;;1350:1;1322:31;;;2801:51:188;2774:18;;1322:31:27;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;856:2:179::2;846:7;:12:::0;882:3:::2;868:17;::::0;912:3:::2;895:20;::::0;1025:31:::2;1031:10;1043:12;1025:5;:31::i;:::-;228:3623:::0;;2912:187:27;3004:6;;;-1:-1:-1;;;;;3020:17:27;;;-1:-1:-1;;;;;;3020:17:27;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;7362:208:50:-;-1:-1:-1;;;;;7432:21:50;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:50;;7505:1;7476:32;;;2801:51:188;2774:18;;7476:32:50;2655:203:188;7428:91:50;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;2131:1040:179:-;1710:6:27;;-1:-1:-1;;;;;2486:15:179;;;1710:6:27;;2486:15:179;;;;:32;;-1:-1:-1;1710:6:27;;-1:-1:-1;;;;;2505:13:179;;;1710:6:27;;2505:13:179;;2486:32;:54;;;;-1:-1:-1;;;;;;2522:18:179;;;;2486:54;:74;;;;-1:-1:-1;;;;;;2544:16:179;;;;2486:74;:88;;;;-1:-1:-1;2564:10:179;;;2486:88;2482:592;;;2590:11;2624;;2604:31;;2613:7;;2605:5;:15;;;;:::i;:::-;2604:31;;;;:::i;:::-;2590:45;-1:-1:-1;2649:19:179;2671:15;2681:4;-1:-1:-1;;;;;3024:18:50;2998:7;3024:18;;;;;;;;;;;;2933:116;2671:15:179;2649:37;-1:-1:-1;2719:11:179;2727:3;2719:5;:11;:::i;:::-;2705;:25;2701:110;;;2757:39;;-1:-1:-1;;;2757:39:179;;;;;;;;;;;2701:110;2871:29;2881:4;2887:7;1710:6:27;;-1:-1:-1;;;;;1710:6:27;;1638:85;2887:7:179;2896:3;2871:9;:29::i;:::-;2956:19;3001:14;;2985:12;2978:37;;;;:::i;:::-;3029:21;;;;;;;:7;:21;;;;;;;;-1:-1:-1;;;;;3029:27:179;;;;;;;;;:34;;2956:59;;-1:-1:-1;3060:3:179;;3029:27;;:21;:34;;3060:3;;3029:34;:::i;:::-;;;;-1:-1:-1;;;;;2482:592:179;3134:30;3148:4;3154:2;3158:5;3134:13;:30::i;:::-;2131:1040;;;:::o;5297:300:50:-;-1:-1:-1;;;;;5380:18:50;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:50;;5448:1;5421:30;;;2801:51:188;2774:18;;5421:30:50;2655:203:188;5376:86:50;-1:-1:-1;;;;;5475:16:50;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:50;;5543:1;5514:32;;;2801:51:188;2774:18;;5514:32:50;2655:203:188;5471:86:50;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;5912:1107::-;-1:-1:-1;;;;;6001:18:50;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:50;;-1:-1:-1;5997:540:50;;-1:-1:-1;;;;;6211:15:50;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:50;;-1:-1:-1;;;;;3966:32:188;;6290:50:50;;;3948:51:188;4015:18;;;4008:34;;;4058:18;;;4051:34;;;3921:18;;6290:50:50;3746:345:188;6240:115:50;-1:-1:-1;;;;;6475:15:50;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:50;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:50;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:50;6996:4;-1:-1:-1;;;;;6987:25:50;;7006:5;6987:25;;;;4242::188;;4230:2;4215:18;;4096:177;6987:25:50;;;;;;;;5912:1107;;;:::o;14:127:188:-;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:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:188;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;;1082:3;;657:518;;;:::o;1351:1299::-;1471:10;;-1:-1:-1;;;;;1493:30:188;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1701:4;1732:2;1721:14;;1749:1;1744:649;;;;2437:1;2454:6;2451:89;;;-1:-1:-1;2506:19:188;;;2500:26;2451:89;-1:-1:-1;;1308:1:188;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2553:81;;1714:930;;1744:649;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1780:20:188;;;1898:222;1912:7;1909:1;1906:14;1898:222;;;1994:19;;;1988:26;1973:42;;2101:4;2086:20;;;;2054:1;2042:14;;;;1928:12;1898:222;;;1902:3;2148:6;2139:7;2136:19;2133:201;;;2209:19;;;2203:26;-1:-1:-1;;2292:1:188;2288:14;;;2304:3;2284:24;2280:37;2276:42;2261:58;2246:74;;2133:201;-1:-1:-1;;;;2380:1:188;2364:14;;;2360:22;2347:36;;-1:-1:-1;1351:1299:188:o;2863:127::-;2924:10;2919:3;2915:20;2912:1;2905:31;2955:4;2952:1;2945:15;2979:4;2976:1;2969:15;2995:168;3068:9;;;3099;;3116:15;;;3110:22;;3096:37;3086:71;;3137:18;;:::i;:::-;2995:168;;;;:::o;3168:127::-;3229:10;3224:3;3220:20;3217:1;3210:31;3260:4;3257:1;3250:15;3284:4;3281:1;3274:15;3300:120;3340:1;3366;3356:35;;3371:18;;:::i;:::-;-1:-1:-1;3405:9:188;;3300:120::o;3425:125::-;3490:9;;;3511:10;;;3508:36;;;3524:18;;:::i;3555:186::-;3594:1;3628:14;3625:1;3621:22;3662:3;3652:37;;3669:18;;:::i;:::-;3731:3;3714:14;3711:1;3707:22;3703:32;3698:37;;;3555:186;;;;:::o;4096:177::-;228:3623:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061018f575f3560e01c80637858dcd6116100dd578063a9059cbb11610088578063de5f72fd11610063578063de5f72fd146103bf578063eb9943d9146103c7578063f2fde38b146103da575f5ffd5b8063a9059cbb1461034a578063dc731c401461035d578063dd62ed3e14610387575f5ffd5b806395d89b41116100b857806395d89b41146102f1578063a0712d68146102f9578063a70b9f0c1461030c575f5ffd5b80637858dcd6146102a25780638da5cb5b146102af578063918f8674146102ca575f5ffd5b8063313ce5671161013d57806370d38b0a1161011857806370d38b0a1461027e578063715018a614610291578063771a3a1d14610299575f5ffd5b8063313ce5671461022e57806342966c681461024357806370a0823114610256575f5ffd5b80630eb2dbf41161016d5780630eb2dbf4146101de57806318160ddd1461021357806323b872dd1461021b575f5ffd5b8063057d7a621461019357806306fdde031461019d578063095ea7b3146101bb575b5f5ffd5b61019b6103ed565b005b6101a5610409565b6040516101b29190610c0d565b60405180910390f35b6101ce6101c9366004610c5d565b610499565b60405190151581526020016101b2565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101b2565b600254610205565b6101ce610229366004610c85565b6104b2565b60125b60405160ff90911681526020016101b2565b61019b610251366004610cbf565b6104d5565b610205610264366004610cd6565b6001600160a01b03165f9081526020819052604090205490565b61020561028c366004610cf6565b61050a565b61019b610569565b61020560065481565b6007546101ce9060ff1681565b6005546040516001600160a01b0390911681526020016101b2565b6102317f000000000000000000000000000000000000000000000000000000000000000081565b6101a561057c565b61019b610307366004610cbf565b61058b565b6103337f000000000000000000000000000000000000000000000000000000000000000081565b60405165ffffffffffff90911681526020016101b2565b6101ce610358366004610c5d565b6105bd565b61020561036b366004610cf6565b600860209081525f928352604080842090915290825290205481565b610205610395366004610d33565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61019b6105ca565b61019b6103d5366004610cbf565b610618565b61019b6103e8366004610cd6565b610672565b6103f56106b1565b6007805460ff19811660ff90911615179055565b60606003805461041890610d4d565b80601f016020809104026020016040519081016040528092919081815260200182805461044490610d4d565b801561048f5780601f106104665761010080835404028352916020019161048f565b820191905f5260205f20905b81548152906001019060200180831161047257829003601f168201915b5050505050905090565b5f336104a68185856106de565b60019150505b92915050565b5f336104bf8582856106f0565b6104ca85858561076c565b506001949350505050565b6104dd6106b1565b805f036104fd5760405163a429762760e01b815260040160405180910390fd5b61050733826107c9565b50565b5f806105367f000000000000000000000000000000000000000000000000000000000000000085610dad565b65ffffffffffff165f9081526008602090815260408083206001600160a01b038716845290915290205491505092915050565b6105716106b1565b61057a5f610801565b565b60606004805461041890610d4d565b6105936106b1565b805f036105b35760405163a429762760e01b815260040160405180910390fd5b610507338261085f565b5f336104a681858561076c565b60075460ff16156105ee57604051633a159b8d60e01b815260040160405180910390fd5b61057a337f000000000000000000000000000000000000000000000000000000000000000061085f565b6106206106b1565b61064b60017f0000000000000000000000000000000000000000000000000000000000000000610dd8565b60ff16811061066d57604051636303781560e11b815260040160405180910390fd5b600655565b61067a6106b1565b6001600160a01b0381166106a857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61050781610801565b6005546001600160a01b0316331461057a5760405163118cdaa760e01b815233600482015260240161069f565b6106eb8383836001610893565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610766578181101561075857604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161069f565b61076684848484035f610893565b50505050565b6001600160a01b03831661079557604051634b637e8f60e11b81525f600482015260240161069f565b6001600160a01b0382166107be5760405163ec442f0560e01b81525f600482015260240161069f565b6106eb838383610965565b6001600160a01b0382166107f257604051634b637e8f60e11b81525f600482015260240161069f565b6107fd825f83610965565b5050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166108885760405163ec442f0560e01b81525f600482015260240161069f565b6107fd5f8383610965565b6001600160a01b0384166108bc5760405163e602df0560e01b81525f600482015260240161069f565b6001600160a01b0383166108e557604051634a1406b160e11b81525f600482015260240161069f565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561076657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161095791815260200190565b60405180910390a350505050565b6005546001600160a01b0384811691161480159061099157506005546001600160a01b03838116911614155b80156109a557506001600160a01b03831615155b80156109b957506001600160a01b03821615155b80156109c457508015155b15610ae1575f7f000000000000000000000000000000000000000000000000000000000000000060ff16600654836109fc9190610df1565b610a069190610e08565b90505f610a27856001600160a01b03165f9081526020819052604090205490565b9050610a338284610e1b565b811015610a5257604051623b0e3960e51b815260040160405180910390fd5b610a6e85610a686005546001600160a01b031690565b8461076c565b5f610a997f000000000000000000000000000000000000000000000000000000000000000043610dad565b65ffffffffffff81165f9081526008602090815260408083206001600160a01b038b168452909152812080549293508592909190610ad8908490610e1b565b90915550505050505b6106eb8383836001600160a01b038316610b11578060025f828254610b069190610e1b565b90915550610b819050565b6001600160a01b0383165f9081526020819052604090205481811015610b635760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161069f565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610b9d57600280548290039055610bbb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0091815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610c58575f5ffd5b919050565b5f5f60408385031215610c6e575f5ffd5b610c7783610c42565b946020939093013593505050565b5f5f5f60608486031215610c97575f5ffd5b610ca084610c42565b9250610cae60208501610c42565b929592945050506040919091013590565b5f60208284031215610ccf575f5ffd5b5035919050565b5f60208284031215610ce6575f5ffd5b610cef82610c42565b9392505050565b5f5f60408385031215610d07575f5ffd5b823565ffffffffffff81168114610d1c575f5ffd5b9150610d2a60208401610c42565b90509250929050565b5f5f60408385031215610d44575f5ffd5b610d1c83610c42565b600181811c90821680610d6157607f821691505b602082108103610d7f57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f65ffffffffffff831680610dc457610dc4610d85565b8065ffffffffffff84160491505092915050565b60ff82811682821603908111156104ac576104ac610d99565b80820281158282048414176104ac576104ac610d99565b5f82610e1657610e16610d85565b500490565b808201808211156104ac576104ac610d9956fea2646970667358221220f6abe49856d8cea6a589b34b9d55b18ab801f91abbfa076ff35393aea65ce69d64736f6c634300081e0033","sourceMap":"228:3623:179:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1746:85;;;:::i;:::-;;1760:89:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;:::i;:::-;;:::i;:::-;;;1108:14:188;;1101:22;1083:41;;1071:2;1056:18;3902:186:50;943:187:188;499:53:179;;;;;;;;1281:25:188;;;1269:2;1254:18;499:53:179;1135:177:188;2803:97:50;2881:12;;2803:97;;4680:244;;;;;;:::i;:::-;;:::i;2688:82::-;2761:2;2688:82;;;1868:4:188;1856:17;;;1838:36;;1826:2;1811:18;2688:82:50;1696:184:188;1282:173:179;;;;;;:::i;:::-;;:::i;2933:116:50:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:50;2998:7;3024:18;;;;;;;;;;;;2933:116;3325:197:179;;;;;;:::i;:::-;;:::i;2293:101:27:-;;;:::i;441:22:179:-;;;;;;469:24;;;;;;;;;1638:85:27;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:27;;;2812:74:188;;2800:2;2785:18;1638:85:27;2666:226:188;558:34:179;;;;;1962:93:50;;;:::i;1103:173:179:-;;;;;;:::i;:::-;;:::i;598:38::-;;;;;;;;3071:14:188;3059:27;;;3041:46;;3029:2;3014:18;598:38:179;2897:196:188;3244:178:50;;;;;;:::i;:::-;;:::i;642:83:179:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3455:140:50;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:50;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;1581:159:179;;;:::i;1837:202::-;;;;;;:::i;:::-;;:::i;2543:215:27:-;;;;;;:::i;:::-;;:::i;1746:85:179:-;1531:13:27;:11;:13::i;:::-;1812:12:179::1;::::0;;-1:-1:-1;;1796:28:179;::::1;1812:12;::::0;;::::1;1811:13;1796:28;::::0;;1746:85::o;1760:89:50:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:64;4029:31:50;735:10:64;4045:7:50;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;;:::o;4680:244::-;4767:4;735:10:64;4823:37:50;4839:4;735:10:64;4854:5:50;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:50;;4680:244;-1:-1:-1;;;;4680:244:50:o;1282:173:179:-;1531:13:27;:11;:13::i;:::-;1343:6:179::1;1353:1;1343:11:::0;1339:75:::1;;1377:26;;-1:-1:-1::0;;;1377:26:179::1;;;;;;;;;;;1339:75;1423:25;1429:10;1441:6;1423:5;:25::i;:::-;1282:173:::0;:::o;3325:197::-;3405:15;;3447:28;3461:14;3447:11;:28;:::i;:::-;3492:14;;;;;;:7;:14;;;;;;;;-1:-1:-1;;;;;3492:23:179;;;;;;;;;;;-1:-1:-1;;3325:197:179;;;;:::o;2293:101:27:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1962:93:50:-;2009:13;2041:7;2034:14;;;;;:::i;1103:173:179:-;1531:13:27;:11;:13::i;:::-;1164:6:179::1;1174:1;1164:11:::0;1160:75:::1;;1198:26;;-1:-1:-1::0;;;1198:26:179::1;;;;;;;;;;;1160:75;1244:25;1250:10;1262:6;1244:5;:25::i;3244:178:50:-:0;3313:4;735:10:64;3367:27:50;735:10:64;3384:2:50;3388:5;3367:9;:27::i;1581:159:179:-;1620:12;;;;1616:76;;;1655:26;;-1:-1:-1;;;1655:26:179;;;;;;;;;;;1616:76;1701:32;1707:10;1719:13;1701:5;:32::i;1837:202::-;1531:13:27;:11;:13::i;:::-;1925:15:179::1;1939:1;1925:11;:15;:::i;:::-;1911:29;;:10;:29;1907:96;;1963:29;;-1:-1:-1::0;;;1963:29:179::1;;;;;;;;;;;1907:96;2012:7;:20:::0;1837:202::o;2543:215:27:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:27;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:27;;2700:1:::1;2672:31;::::0;::::1;2812:74:188::0;2785:18;;2672:31:27::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;1796:162::-:0;1710:6;;-1:-1:-1;;;;;1710:6:27;735:10:64;1855:23:27;1851:101;;1901:40;;-1:-1:-1;;;1901:40:27;;735:10:64;1901:40:27;;;2812:74:188;2785:18;;1901:40:27;2666:226:188;8630:128:50;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;-1:-1:-1;;;;;3561:18:50;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:50;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10593:60;;-1:-1:-1;;;10593:60:50;;-1:-1:-1;;;;;4579:55:188;;10593:60:50;;;4561:74:188;4651:18;;;4644:34;;;4694:18;;;4687:34;;;4534:18;;10593:60:50;4359:368:188;10538:130:50;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:50;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:50;;5448:1;5421:30;;;2812:74:188;2785:18;;5421:30:50;2666:226:188;5376:86:50;-1:-1:-1;;;;;5475:16:50;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:50;;5543:1;5514:32;;;2812:74:188;2785:18;;5514:32:50;2666:226:188;5471:86:50;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;7888:206::-;-1:-1:-1;;;;;7958:21:50;;7954:89;;8002:30;;-1:-1:-1;;;8002:30:50;;8029:1;8002:30;;;2812:74:188;2785:18;;8002:30:50;2666:226:188;7954:89:50;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;:::-;7888:206;;:::o;2912:187:27:-;3004:6;;;-1:-1:-1;;;;;3020:17:27;;;-1:-1:-1;;3020:17:27;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;7362:208:50:-;-1:-1:-1;;;;;7432:21:50;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:50;;7505:1;7476:32;;;2812:74:188;2785:18;;7476:32:50;2666:226:188;7428:91:50;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;9607:432::-;-1:-1:-1;;;;;9719:19:50;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:50;;9790:1;9761:32;;;2812:74:188;2785:18;;9761:32:50;2666:226:188;9715:89:50;-1:-1:-1;;;;;9817:21:50;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:50;;9889:1;9861:31;;;2812:74:188;2785:18;;9861:31:50;2666:226:188;9813:90:50;-1:-1:-1;;;;;9912:18:50;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:50;10000:5;-1:-1:-1;;;;;9991:31:50;;10016:5;9991:31;;;;1281:25:188;;1269:2;1254:18;;1135:177;9991:31:50;;;;;;;;9607:432;;;;:::o;2131:1040:179:-;1710:6:27;;-1:-1:-1;;;;;2486:15:179;;;1710:6:27;;2486:15:179;;;;:32;;-1:-1:-1;1710:6:27;;-1:-1:-1;;;;;2505:13:179;;;1710:6:27;;2505:13:179;;2486:32;:54;;;;-1:-1:-1;;;;;;2522:18:179;;;;2486:54;:74;;;;-1:-1:-1;;;;;;2544:16:179;;;;2486:74;:88;;;;-1:-1:-1;2564:10:179;;;2486:88;2482:592;;;2590:11;2624;2604:31;;2613:7;;2605:5;:15;;;;:::i;:::-;2604:31;;;;:::i;:::-;2590:45;;2649:19;2671:15;2681:4;-1:-1:-1;;;;;3024:18:50;2998:7;3024:18;;;;;;;;;;;;2933:116;2671:15:179;2649:37;-1:-1:-1;2719:11:179;2727:3;2719:5;:11;:::i;:::-;2705;:25;2701:110;;;2757:39;;-1:-1:-1;;;2757:39:179;;;;;;;;;;;2701:110;2871:29;2881:4;2887:7;1710:6:27;;-1:-1:-1;;;;;1710:6:27;;1638:85;2887:7:179;2896:3;2871:9;:29::i;:::-;2956:19;2978:37;3001:14;2985:12;2978:37;:::i;:::-;3029:21;;;;;;;:7;:21;;;;;;;;-1:-1:-1;;;;;3029:27:179;;;;;;;;;:34;;2956:59;;-1:-1:-1;3060:3:179;;3029:27;;:21;:34;;3060:3;;3029:34;:::i;:::-;;;;-1:-1:-1;;;;;2482:592:179;3134:30;3148:4;3154:2;3158:5;-1:-1:-1;;;;;6001:18:50;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:50;;-1:-1:-1;5997:540:50;;-1:-1:-1;;;;;6211:15:50;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:50;;-1:-1:-1;;;;;4579:55:188;;6290:50:50;;;4561:74:188;4651:18;;;4644:34;;;4694:18;;;4687:34;;;4534:18;;6290:50:50;4359:368:188;6240:115:50;-1:-1:-1;;;;;6475:15:50;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:50;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:50;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:50;6996:4;-1:-1:-1;;;;;6987:25:50;;7006:5;6987:25;;;;1281::188;;1269:2;1254:18;;1135:177;6987:25:50;;;;;;;;5912:1107;;;:::o;14:418:188:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:196::-;505:20;;-1:-1:-1;;;;;554:54:188;;544:65;;534:93;;623:1;620;613:12;534:93;437:196;;;:::o;638:300::-;706:6;714;767:2;755:9;746:7;742:23;738:32;735:52;;;783:1;780;773:12;735:52;806:29;825:9;806:29;:::i;:::-;796:39;904:2;889:18;;;;876:32;;-1:-1:-1;;;638:300:188:o;1317:374::-;1394:6;1402;1410;1463:2;1451:9;1442:7;1438:23;1434:32;1431:52;;;1479:1;1476;1469:12;1431:52;1502:29;1521:9;1502:29;:::i;:::-;1492:39;;1550:38;1584:2;1573:9;1569:18;1550:38;:::i;:::-;1317:374;;1540:48;;-1:-1:-1;;;1657:2:188;1642:18;;;;1629:32;;1317:374::o;1885:226::-;1944:6;1997:2;1985:9;1976:7;1972:23;1968:32;1965:52;;;2013:1;2010;2003:12;1965:52;-1:-1:-1;2058:23:188;;1885:226;-1:-1:-1;1885:226:188:o;2116:186::-;2175:6;2228:2;2216:9;2207:7;2203:23;2199:32;2196:52;;;2244:1;2241;2234:12;2196:52;2267:29;2286:9;2267:29;:::i;:::-;2257:39;2116:186;-1:-1:-1;;;2116:186:188:o;2307:354::-;2374:6;2382;2435:2;2423:9;2414:7;2410:23;2406:32;2403:52;;;2451:1;2448;2441:12;2403:52;2490:9;2477:23;2540:14;2533:5;2529:26;2522:5;2519:37;2509:65;;2570:1;2567;2560:12;2509:65;2593:5;-1:-1:-1;2617:38:188;2651:2;2636:18;;2617:38;:::i;:::-;2607:48;;2307:354;;;;;:::o;3098:260::-;3166:6;3174;3227:2;3215:9;3206:7;3202:23;3198:32;3195:52;;;3243:1;3240;3233:12;3195:52;3266:29;3285:9;3266:29;:::i;3363:380::-;3442:1;3438:12;;;;3485;;;3506:61;;3560:4;3552:6;3548:17;3538:27;;3506:61;3613:2;3605:6;3602:14;3582:18;3579:38;3576:161;;3659:10;3654:3;3650:20;3647:1;3640:31;3694:4;3691:1;3684:15;3722:4;3719:1;3712:15;3576:161;;3363:380;;;:::o;3748:127::-;3809:10;3804:3;3800:20;3797:1;3790:31;3840:4;3837:1;3830:15;3864:4;3861:1;3854:15;3880:127;3941:10;3936:3;3932:20;3929:1;3922:31;3972:4;3969:1;3962:15;3996:4;3993:1;3986:15;4012:186;4051:1;4085:14;4082:1;4078:22;4119:3;4109:37;;4126:18;;:::i;:::-;4188:3;4171:14;4168:1;4164:22;4160:32;4155:37;;;4012:186;;;;:::o;4203:151::-;4293:4;4286:12;;;4272;;;4268:31;;4311:14;;4308:40;;;4328:18;;:::i;4732:168::-;4805:9;;;4836;;4853:15;;;4847:22;;4833:37;4823:71;;4874:18;;:::i;4905:120::-;4945:1;4971;4961:35;;4976:18;;:::i;:::-;-1:-1:-1;5010:9:188;;4905:120::o;5030:125::-;5095:9;;;5116:10;;;5113:36;;;5129:18;;:::i","linkReferences":{},"immutableReferences":{"101256":[{"start":483,"length":32},{"start":1524,"length":32}],"101258":[{"start":719,"length":32},{"start":1575,"length":32},{"start":2508,"length":32}],"101260":[{"start":785,"length":32},{"start":1297,"length":32},{"start":2676,"length":32}]}},"methodIdentifiers":{"AMOUNT_FAUCET()":"0eb2dbf4","DENOMINATOR()":"918f8674","EPOCH_DURATION()":"a70b9f0c","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","changeTaxRate(uint256)":"eb9943d9","decimals()":"313ce567","faucet()":"de5f72fd","faucetPaused()":"7858dcd6","getTaxLogs(uint48,address)":"70d38b0a","mint(uint256)":"a0712d68","name()":"06fdde03","owner()":"8da5cb5b","pauseFaucet()":"057d7a62","renounceOwnership()":"715018a6","symbol()":"95d89b41","taxLogs(uint48,address)":"dc731c40","taxRate()":"771a3a1d","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":[],\"name\":\"Erc20Taxed__FaucetPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Taxed__InsufficientBalanceForTax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Taxed__NoZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Taxed__TaxRateOverflow\",\"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\":[],\"name\":\"AMOUNT_FAUCET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EPOCH_DURATION\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"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\":\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTaxRate\",\"type\":\"uint256\"}],\"name\":\"changeTaxRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"faucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"faucetPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"blockNumber\",\"type\":\"uint48\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getTaxLogs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taxPaid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"pauseFaucet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"epoch\",\"type\":\"uint48\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"taxLogs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taxPaid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taxRate\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"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.\"}}],\"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\":\"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\":\"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\":\"Returns the value of tokens owned by `account`.\"},\"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.\"},\"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\":\"Returns the value of tokens in existence.\"},\"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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\":{\"compilationTarget\":{\"test/mocks/Erc20Taxed.sol\":\"Erc20Taxed\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"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\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/mocks/Erc20Taxed.sol\":{\"keccak256\":\"0x427804575781753c2f8a928edd901f908c069a868792889e39328d7690a5cf87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b3c8923306e1c30fdad21402dd80f777391af5f1b6cca59e9145b556caa5306\",\"dweb:/ipfs/QmVYXDRen1DmoEdWAGc8odyZP4NSkm2NLcFe9EK3YA5iCt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"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":[],"type":"error","name":"Erc20Taxed__FaucetPaused"},{"inputs":[],"type":"error","name":"Erc20Taxed__InsufficientBalanceForTax"},{"inputs":[],"type":"error","name":"Erc20Taxed__NoZeroAmount"},{"inputs":[],"type":"error","name":"Erc20Taxed__TaxRateOverflow"},{"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":[],"stateMutability":"view","type":"function","name":"AMOUNT_FAUCET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DENOMINATOR","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EPOCH_DURATION","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"uint256","name":"newTaxRate","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"changeTaxRate"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"faucet"},{"inputs":[],"stateMutability":"view","type":"function","name":"faucetPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint48","name":"blockNumber","type":"uint48"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getTaxLogs","outputs":[{"internalType":"uint256","name":"taxPaid","type":"uint256"}]},{"inputs":[{"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":"pauseFaucet"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint48","name":"epoch","type":"uint48"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"taxLogs","outputs":[{"internalType":"uint256","name":"taxPaid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"taxRate","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"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"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":"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":"Returns the value of tokens owned by `account`."},"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."},"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":"Returns the value of tokens in existence."},"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/Erc20Taxed.sol":"Erc20Taxed"},"evmVersion":"cancun","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":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/mocks/Erc20Taxed.sol":{"keccak256":"0x427804575781753c2f8a928edd901f908c069a868792889e39328d7690a5cf87","urls":["bzz-raw://4b3c8923306e1c30fdad21402dd80f777391af5f1b6cca59e9145b556caa5306","dweb:/ipfs/QmVYXDRen1DmoEdWAGc8odyZP4NSkm2NLcFe9EK3YA5iCt"],"license":"MIT"}},"version":1},"id":179} \ No newline at end of file diff --git a/frontend/context/builds/Mandate.json b/frontend/context/builds/Mandate.json index 058fbe2e..0b8d3940 100644 --- a/frontend/context/builds/Mandate.json +++ b/frontend/context/builds/Mandate.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"executeMandate","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getConfig","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"config","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getInputParams","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"inputParams","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getNameDescription","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"handleRequest","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"targets","type":"address[]","internalType":"address[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"initializeMandate","inputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"nameDescription","type":"string","internalType":"string"},{"name":"inputParams","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mandates","inputs":[{"name":"mandateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"inputParams","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"powers","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint16","internalType":"uint16"},{"name":"minor","type":"uint16","internalType":"uint16"},{"name":"patch","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"event","name":"AsyncMandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"oracle","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mandate__Deployed","inputs":[{"name":"configParams","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Mandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"OnlyPowers","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"executeMandate(address,uint16,bytes,uint256)":"4d516f0e","getConfig(address,uint16)":"c0d27aad","getInputParams(address,uint16)":"d8a941f4","getNameDescription(address,uint16)":"0d157721","handleRequest(address,address,uint16,bytes,uint256)":"552cb372","initializeMandate(uint16,string,bytes,bytes)":"b1f50f89","mandates(bytes32)":"01e07972","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlyPowers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"AsyncMandate__Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"configParams\",\"type\":\"bytes\"}],\"name\":\"Mandate__Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"Mandate__Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"executeMandate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getInputParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getNameDescription\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"handleRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"initializeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"mandates\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"}],\"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\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"major\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"patch\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"oracle\":\"Address of the oracle for the async mandate\",\"powers\":\"Address of the Powers protocol\"}},\"Mandate__Deployed(bytes)\":{\"params\":{\"configParams\":\"Configurations parameters for the mandate\"}},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"powers\":\"Address of the Powers protocol\"}}},\"kind\":\"dev\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"details\":\"Called by the Powers protocol during action execution\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"success\":\"True if execution succeeded\"}},\"getConfig(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"config\":\"The configuration data for the mandate\"}},\"getInputParams(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"inputParams\":\"The input parameters for the mandate\"}},\"getNameDescription(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"nameDescription\":\"The name and description of the mandate\"}},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"details\":\"Must be overridden by implementing contracts\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"actionId\":\"The action ID\",\"calldatas\":\"Encoded function calls\",\"targets\":\"Target contract addresses for calls\",\"values\":\"ETH values to send with calls\"}},\"initializeMandate(uint16,string,bytes,bytes)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\"}},\"version()\":{\"returns\":{\"major\":\"The major version number\",\"minor\":\"The minor version number\",\"patch\":\"The patch version number\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"notice\":\"Emitted when an async mandate is initialized\"},\"Mandate__Deployed(bytes)\":{\"notice\":\"Emitted when a mandate is deployed\"},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"notice\":\"Emitted when a mandate is initialized\"}},\"kind\":\"user\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"notice\":\"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers\"},\"getConfig(address,uint16)\":{\"notice\":\"Retrieves the configuration for a specific mandate\"},\"getInputParams(address,uint16)\":{\"notice\":\"Retrieves the input parameters for a specific mandate\"},\"getNameDescription(address,uint16)\":{\"notice\":\"Retrieves the name and description for a specific mandate\"},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"notice\":\"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use.\"},\"initializeMandate(uint16,string,bytes,bytes)\":{\"notice\":\"Initializes the mandate\"},\"version()\":{\"notice\":\"Retrieves the version of the mandate contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mandate.sol\":\"Mandate\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/Mandate.sol\":{\"keccak256\":\"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929\",\"dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P\"]},\"src/interfaces/IMandate.sol\":{\"keccak256\":\"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931\",\"dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A\"]},\"src/interfaces/IPowers.sol\":{\"keccak256\":\"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec\",\"dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp\"]},\"src/interfaces/PowersErrors.sol\":{\"keccak256\":\"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882\",\"dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf\"]},\"src/interfaces/PowersEvents.sol\":{\"keccak256\":\"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d\",\"dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB\"]},\"src/interfaces/PowersTypes.sol\":{\"keccak256\":\"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740\",\"dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK\"]},\"src/libraries/MandateUtilities.sol\":{\"keccak256\":\"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad\",\"dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"OnlyPowers"},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false},{"internalType":"address","name":"oracle","type":"address","indexed":false}],"type":"event","name":"AsyncMandate__Initialized","anonymous":false},{"inputs":[{"internalType":"bytes","name":"configParams","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Deployed","anonymous":false},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"executeMandate","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getInputParams","outputs":[{"internalType":"bytes","name":"inputParams","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getNameDescription","outputs":[{"internalType":"string","name":"nameDescription","type":"string"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"handleRequest","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}]},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"},{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"inputParams","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initializeMandate"},{"inputs":[{"internalType":"bytes32","name":"mandateHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"mandates","outputs":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"inputParams","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address","name":"powers","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint16","name":"major","type":"uint16"},{"internalType":"uint16","name":"minor","type":"uint16"},{"internalType":"uint16","name":"patch","type":"uint16"}]}],"devdoc":{"kind":"dev","methods":{"executeMandate(address,uint16,bytes,uint256)":{"details":"Called by the Powers protocol during action execution","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","nonce":"The nonce for the action"},"returns":{"success":"True if execution succeeded"}},"getConfig(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"config":"The configuration data for the mandate"}},"getInputParams(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"inputParams":"The input parameters for the mandate"}},"getNameDescription(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"nameDescription":"The name and description of the mandate"}},"handleRequest(address,address,uint16,bytes,uint256)":{"details":"Must be overridden by implementing contracts","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","mandateId":"The id of the mandate","nonce":"The nonce for the action"},"returns":{"actionId":"The action ID","calldatas":"Encoded function calls","targets":"Target contract addresses for calls","values":"ETH values to send with calls"}},"initializeMandate(uint16,string,bytes,bytes)":{"params":{"config":"Configurations parameters for the mandate","index":"Index of the mandate","inputParams":"Input parameters for the mandate","nameDescription":"Name of the mandate"}},"version()":{"returns":{"major":"The major version number","minor":"The minor version number","patch":"The patch version number"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeMandate(address,uint16,bytes,uint256)":{"notice":"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers"},"getConfig(address,uint16)":{"notice":"Retrieves the configuration for a specific mandate"},"getInputParams(address,uint16)":{"notice":"Retrieves the input parameters for a specific mandate"},"getNameDescription(address,uint16)":{"notice":"Retrieves the name and description for a specific mandate"},"handleRequest(address,address,uint16,bytes,uint256)":{"notice":"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use."},"initializeMandate(uint16,string,bytes,bytes)":{"notice":"Initializes the mandate"},"version()":{"notice":"Retrieves the version of the mandate contract"}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mandate.sol":"Mandate"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620","urls":["bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8","dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/Mandate.sol":{"keccak256":"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d","urls":["bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929","dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P"],"license":"MIT"},"src/interfaces/IMandate.sol":{"keccak256":"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa","urls":["bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931","dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A"],"license":"MIT"},"src/interfaces/IPowers.sol":{"keccak256":"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690","urls":["bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec","dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp"],"license":"MIT"},"src/interfaces/PowersErrors.sol":{"keccak256":"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098","urls":["bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882","dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf"],"license":"MIT"},"src/interfaces/PowersEvents.sol":{"keccak256":"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e","urls":["bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d","dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB"],"license":"MIT"},"src/interfaces/PowersTypes.sol":{"keccak256":"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878","urls":["bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740","dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK"],"license":"MIT"},"src/libraries/MandateUtilities.sol":{"keccak256":"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5","urls":["bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad","dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC"],"license":"MIT"}},"version":1},"id":107} \ No newline at end of file +{"abi":[{"type":"function","name":"executeMandate","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getConfig","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"config","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getInputParams","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"inputParams","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getNameDescription","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"handleRequest","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"targets","type":"address[]","internalType":"address[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"initializeMandate","inputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"nameDescription","type":"string","internalType":"string"},{"name":"inputParams","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mandates","inputs":[{"name":"mandateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"inputParams","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"powers","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint16","internalType":"uint16"},{"name":"minor","type":"uint16","internalType":"uint16"},{"name":"patch","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"event","name":"AsyncMandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"oracle","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mandate__Deployed","inputs":[{"name":"configParams","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Mandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"OnlyPowers","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"executeMandate(address,uint16,bytes,uint256)":"4d516f0e","getConfig(address,uint16)":"c0d27aad","getInputParams(address,uint16)":"d8a941f4","getNameDescription(address,uint16)":"0d157721","handleRequest(address,address,uint16,bytes,uint256)":"552cb372","initializeMandate(uint16,string,bytes,bytes)":"b1f50f89","mandates(bytes32)":"01e07972","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlyPowers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"AsyncMandate__Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"configParams\",\"type\":\"bytes\"}],\"name\":\"Mandate__Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"Mandate__Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"executeMandate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getInputParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getNameDescription\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"handleRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"initializeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"mandates\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"}],\"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\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"major\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"patch\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"oracle\":\"Address of the oracle for the async mandate\",\"powers\":\"Address of the Powers protocol\"}},\"Mandate__Deployed(bytes)\":{\"params\":{\"configParams\":\"Configurations parameters for the mandate\"}},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"powers\":\"Address of the Powers protocol\"}}},\"kind\":\"dev\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"details\":\"Called by the Powers protocol during action execution\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"success\":\"True if execution succeeded\"}},\"getConfig(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"config\":\"The configuration data for the mandate\"}},\"getInputParams(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"inputParams\":\"The input parameters for the mandate\"}},\"getNameDescription(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"nameDescription\":\"The name and description of the mandate\"}},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"details\":\"Must be overridden by implementing contracts\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"actionId\":\"The action ID\",\"calldatas\":\"Encoded function calls\",\"targets\":\"Target contract addresses for calls\",\"values\":\"ETH values to send with calls\"}},\"initializeMandate(uint16,string,bytes,bytes)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\"}},\"version()\":{\"returns\":{\"major\":\"The major version number\",\"minor\":\"The minor version number\",\"patch\":\"The patch version number\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"notice\":\"Emitted when an async mandate is initialized\"},\"Mandate__Deployed(bytes)\":{\"notice\":\"Emitted when a mandate is deployed\"},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"notice\":\"Emitted when a mandate is initialized\"}},\"kind\":\"user\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"notice\":\"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers\"},\"getConfig(address,uint16)\":{\"notice\":\"Retrieves the configuration for a specific mandate\"},\"getInputParams(address,uint16)\":{\"notice\":\"Retrieves the input parameters for a specific mandate\"},\"getNameDescription(address,uint16)\":{\"notice\":\"Retrieves the name and description for a specific mandate\"},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"notice\":\"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use.\"},\"initializeMandate(uint16,string,bytes,bytes)\":{\"notice\":\"Initializes the mandate\"},\"version()\":{\"notice\":\"Retrieves the version of the mandate contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mandate.sol\":\"Mandate\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/Mandate.sol\":{\"keccak256\":\"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929\",\"dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P\"]},\"src/interfaces/IMandate.sol\":{\"keccak256\":\"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931\",\"dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A\"]},\"src/interfaces/IPowers.sol\":{\"keccak256\":\"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec\",\"dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp\"]},\"src/interfaces/PowersErrors.sol\":{\"keccak256\":\"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882\",\"dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf\"]},\"src/interfaces/PowersEvents.sol\":{\"keccak256\":\"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d\",\"dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB\"]},\"src/interfaces/PowersTypes.sol\":{\"keccak256\":\"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740\",\"dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK\"]},\"src/libraries/MandateUtilities.sol\":{\"keccak256\":\"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad\",\"dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"OnlyPowers"},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false},{"internalType":"address","name":"oracle","type":"address","indexed":false}],"type":"event","name":"AsyncMandate__Initialized","anonymous":false},{"inputs":[{"internalType":"bytes","name":"configParams","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Deployed","anonymous":false},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"executeMandate","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getInputParams","outputs":[{"internalType":"bytes","name":"inputParams","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getNameDescription","outputs":[{"internalType":"string","name":"nameDescription","type":"string"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"handleRequest","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}]},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"},{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"inputParams","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initializeMandate"},{"inputs":[{"internalType":"bytes32","name":"mandateHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"mandates","outputs":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"inputParams","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address","name":"powers","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint16","name":"major","type":"uint16"},{"internalType":"uint16","name":"minor","type":"uint16"},{"internalType":"uint16","name":"patch","type":"uint16"}]}],"devdoc":{"kind":"dev","methods":{"executeMandate(address,uint16,bytes,uint256)":{"details":"Called by the Powers protocol during action execution","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","nonce":"The nonce for the action"},"returns":{"success":"True if execution succeeded"}},"getConfig(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"config":"The configuration data for the mandate"}},"getInputParams(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"inputParams":"The input parameters for the mandate"}},"getNameDescription(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"nameDescription":"The name and description of the mandate"}},"handleRequest(address,address,uint16,bytes,uint256)":{"details":"Must be overridden by implementing contracts","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","mandateId":"The id of the mandate","nonce":"The nonce for the action"},"returns":{"actionId":"The action ID","calldatas":"Encoded function calls","targets":"Target contract addresses for calls","values":"ETH values to send with calls"}},"initializeMandate(uint16,string,bytes,bytes)":{"params":{"config":"Configurations parameters for the mandate","index":"Index of the mandate","inputParams":"Input parameters for the mandate","nameDescription":"Name of the mandate"}},"version()":{"returns":{"major":"The major version number","minor":"The minor version number","patch":"The patch version number"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeMandate(address,uint16,bytes,uint256)":{"notice":"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers"},"getConfig(address,uint16)":{"notice":"Retrieves the configuration for a specific mandate"},"getInputParams(address,uint16)":{"notice":"Retrieves the input parameters for a specific mandate"},"getNameDescription(address,uint16)":{"notice":"Retrieves the name and description for a specific mandate"},"handleRequest(address,address,uint16,bytes,uint256)":{"notice":"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use."},"initializeMandate(uint16,string,bytes,bytes)":{"notice":"Initializes the mandate"},"version()":{"notice":"Retrieves the version of the mandate contract"}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mandate.sol":"Mandate"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620","urls":["bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8","dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/Mandate.sol":{"keccak256":"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d","urls":["bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929","dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P"],"license":"MIT"},"src/interfaces/IMandate.sol":{"keccak256":"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa","urls":["bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931","dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A"],"license":"MIT"},"src/interfaces/IPowers.sol":{"keccak256":"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690","urls":["bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec","dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp"],"license":"MIT"},"src/interfaces/PowersErrors.sol":{"keccak256":"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098","urls":["bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882","dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf"],"license":"MIT"},"src/interfaces/PowersEvents.sol":{"keccak256":"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e","urls":["bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d","dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB"],"license":"MIT"},"src/interfaces/PowersTypes.sol":{"keccak256":"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878","urls":["bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740","dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK"],"license":"MIT"},"src/libraries/MandateUtilities.sol":{"keccak256":"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5","urls":["bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad","dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC"],"license":"MIT"}},"version":1},"id":112} \ No newline at end of file diff --git a/frontend/context/builds/Nominees.json b/frontend/context/builds/Nominees.json index 28e2fb41..92e13175 100644 --- a/frontend/context/builds/Nominees.json +++ b/frontend/context/builds/Nominees.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getNominees","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isNominee","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominate","inputs":[{"name":"nominee","type":"address","internalType":"address"},{"name":"shouldNominate","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nominations","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[{"name":"nominated","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nomineesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeNomination","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"NominationReceived","inputs":[{"name":"nominee","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NominationRevoked","inputs":[{"name":"nominee","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":"0x6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b50608e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61075f8061009b5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c8063a2064f4511610072578063eec6b91e11610058578063eec6b91e14610183578063f2fde38b14610196578063f95baf26146101a9575f5ffd5b8063a2064f451461012f578063affd8db014610170575f5ffd5b80638ec67e40116100a25780638ec67e40146100f05780639636f67c14610103578063980c407914610118575f5ffd5b8063715018a6146100bd5780638da5cb5b146100c7575b5f5ffd5b6100c56101cb565b005b5f546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100fe366004610621565b6101de565b61010b6101f3565b6040516100e79190610641565b61012160035481565b6040519081526020016100e7565b61016061013d366004610621565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b60405190151581526020016100e7565b6100c561017e36600461068c565b610253565b6100d36101913660046106c5565b610529565b6100c56101a4366004610621565b610551565b6101606101b7366004610621565b60016020525f908152604090205460ff1681565b6101d361058b565b6101dc5f6105b7565b565b6101e661058b565b6101f0815f610253565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561024957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161022b575b5050505050905090565b61025b61058b565b8015610369576001600160a01b0382165f9081526001602081905260409091205460ff16151590036102d45760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036103d45760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e617465640000000000000000000000000000000000000060448201526064016102cb565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b818110156104e757836001600160a01b03166002828154811061041d5761041d6106dc565b5f918252602090912001546001600160a01b0316036104df5760026104436001846106f0565b81548110610453576104536106dc565b5f91825260209091200154600280546001600160a01b03909216918390811061047e5761047e6106dc565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ba576104ba610715565b5f8281526020902081015f1990810180546001600160a01b03191690550190556104e7565b6001016103f8565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b60028181548110610538575f80fd5b5f918252602090912001546001600160a01b0316905081565b61055961058b565b6001600160a01b03811661058257604051631e4fbdf760e01b81525f60048201526024016102cb565b6101f0816105b7565b5f546001600160a01b031633146101dc5760405163118cdaa760e01b81523360048201526024016102cb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461061c575f5ffd5b919050565b5f60208284031215610631575f5ffd5b61063a82610606565b9392505050565b602080825282518282018190525f918401906040840190835b818110156106815783516001600160a01b031683526020938401939092019160010161065a565b509095945050505050565b5f5f6040838503121561069d575f5ffd5b6106a683610606565b9150602083013580151581146106ba575f5ffd5b809150509250929050565b5f602082840312156106d5575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561070f57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220f3948357d8925f5ea1f5c2c1056cc784db793ce127cc6c6a6851093c4f35186564736f6c634300081e0033","sourceMap":"617:1848:133:-:0;;;935:37;;;;;;;;;-1:-1:-1;957:10:133;;1269:95:31;;1322:31;;-1:-1:-1;;;1322:31:31;;1350:1;1322:31;;;160:51:180;133:18;;1322:31:31;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;617:1848:133;;2912:187:31;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:31;;;-1:-1:-1;;;;;;3020:17:31;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:203:180:-;617:1848:133;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c8063a2064f4511610072578063eec6b91e11610058578063eec6b91e14610183578063f2fde38b14610196578063f95baf26146101a9575f5ffd5b8063a2064f451461012f578063affd8db014610170575f5ffd5b80638ec67e40116100a25780638ec67e40146100f05780639636f67c14610103578063980c407914610118575f5ffd5b8063715018a6146100bd5780638da5cb5b146100c7575b5f5ffd5b6100c56101cb565b005b5f546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100fe366004610621565b6101de565b61010b6101f3565b6040516100e79190610641565b61012160035481565b6040519081526020016100e7565b61016061013d366004610621565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b60405190151581526020016100e7565b6100c561017e36600461068c565b610253565b6100d36101913660046106c5565b610529565b6100c56101a4366004610621565b610551565b6101606101b7366004610621565b60016020525f908152604090205460ff1681565b6101d361058b565b6101dc5f6105b7565b565b6101e661058b565b6101f0815f610253565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561024957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161022b575b5050505050905090565b61025b61058b565b8015610369576001600160a01b0382165f9081526001602081905260409091205460ff16151590036102d45760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036103d45760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e617465640000000000000000000000000000000000000060448201526064016102cb565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b818110156104e757836001600160a01b03166002828154811061041d5761041d6106dc565b5f918252602090912001546001600160a01b0316036104df5760026104436001846106f0565b81548110610453576104536106dc565b5f91825260209091200154600280546001600160a01b03909216918390811061047e5761047e6106dc565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ba576104ba610715565b5f8281526020902081015f1990810180546001600160a01b03191690550190556104e7565b6001016103f8565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b60028181548110610538575f80fd5b5f918252602090912001546001600160a01b0316905081565b61055961058b565b6001600160a01b03811661058257604051631e4fbdf760e01b81525f60048201526024016102cb565b6101f0816105b7565b5f546001600160a01b031633146101dc5760405163118cdaa760e01b81523360048201526024016102cb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461061c575f5ffd5b919050565b5f60208284031215610631575f5ffd5b61063a82610606565b9392505050565b602080825282518282018190525f918401906040840190835b818110156106815783516001600160a01b031683526020938401939092019160010161065a565b509095945050505050565b5f5f6040838503121561069d575f5ffd5b6106a683610606565b9150602083013580151581146106ba575f5ffd5b809150509250929050565b5f602082840312156106d5575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561070f57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220f3948357d8925f5ea1f5c2c1056cc784db793ce127cc6c6a6851093c4f35186564736f6c634300081e0033","sourceMap":"617:1848:133:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:101:31;;;:::i;:::-;;1638:85;1684:7;1710:6;-1:-1:-1;;;;;1710:6:31;1638:85;;;-1:-1:-1;;;;;178:55:180;;;160:74;;148:2;133:18;1638:85:31;;;;;;;;2106:103:133;;;;;;:::i;:::-;;:::i;2244:96::-;;;:::i;:::-;;;;;;;:::i;776:28::-;;;;;;;;;1448:25:180;;;1436:2;1421:18;776:28:133;1302:177:180;2346:117:133;;;;;;:::i;:::-;-1:-1:-1;;;;;2428:20:133;2405:4;2428:20;;;:11;:20;;;;;;;;;;;:28;;;;2346:117;;;;1649:14:180;;1642:22;1624:41;;1612:2;1597:18;2346:117:133;1484:187:180;978:974:133;;;;;;:::i;:::-;;:::i;745:25::-;;;;;;:::i;:::-;;:::i;2543:215:31:-;;;;;;:::i;:::-;;:::i;678:61:133:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2293:101:31;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2106:103:133:-;1531:13:31;:11;:13::i;:::-;2178:24:133::1;2187:7;2196:5;2178:8;:24::i;:::-;2106:103:::0;:::o;2244:96::-;2290:16;2325:8;2318:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2318:15:133;;;;;;;;;;;;;;;;;;;;;;;2244:96;:::o;978:974::-;1531:13:31;:11;:13::i;:::-;1065:14:133::1;1061:885;;;-1:-1:-1::0;;;;;1099:20:133;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;;::::1;;:28;;::::0;;1095:61:::1;;1129:27;::::0;-1:-1:-1;;;1129:27:133;;2415:2:180;1129:27:133::1;::::0;::::1;2397:21:180::0;2454:2;2434:18;;;2427:30;2493:19;2473:18;;;2466:47;2530:18;;1129:27:133::1;;;;;;;;1095:61;-1:-1:-1::0;;;;;1170:20:133;::::1;;::::0;;;1193:4:::1;1170:20;::::0;;;;;;;:27;;-1:-1:-1;;1170:27:133::1;::::0;::::1;::::0;;1211:8:::1;:22:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;1211:22:133::1;::::0;::::1;::::0;;1275:13:::1;:18:::0;;;;::::1;::::0;;;1326:27;::::1;::::0;1170:20;1326:27:::1;978:974:::0;;:::o;1061:885::-:1;-1:-1:-1::0;;;;;1388:20:133;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;:29;;::::0;;1384:58:::1;;1419:23;::::0;-1:-1:-1;;;1419:23:133;;2761:2:180;1419:23:133::1;::::0;::::1;2743:21:180::0;2800:2;2780:18;;;2773:30;2839:15;2819:18;;;2812:43;2872:18;;1419:23:133::1;2559:337:180::0;1384:58:133::1;-1:-1:-1::0;;;;;1456:20:133;::::1;1479:5;1456:20:::0;;;:11:::1;:20;::::0;;;;:28;;-1:-1:-1;;1456:28:133::1;::::0;;1563:8:::1;:15:::0;;1592:225:::1;1612:3;1608:1;:7;1592:225;;;1659:7;-1:-1:-1::0;;;;;1644:22:133::1;:8;1653:1;1644:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;1644:11:133::1;:22:::0;1640:163:::1;;1704:8;1713:7;1719:1;1713:3:::0;:7:::1;:::i;:::-;1704:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;1690:8:::1;:11:::0;;-1:-1:-1;;;;;1704:17:133;;::::1;::::0;1699:1;;1690:11;::::1;;;;;:::i;:::-;;;;;;;;;:31;;;;;-1:-1:-1::0;;;;;1690:31:133::1;;;;;-1:-1:-1::0;;;;;1690:31:133::1;;;;;;1743:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;1743:14:133;;;;;-1:-1:-1;;;;;;1743:14:133::1;::::0;;;;;1779:5:::1;;1640:163;1617:3;;1592:225;;;-1:-1:-1::0;1858:13:133::1;:18:::0;;-1:-1:-1;;1858:18:133;;;1909:26:::1;::::0;-1:-1:-1;;;;;1909:26:133;::::1;::::0;::::1;::::0;1858:13:::1;::::0;1909:26:::1;1370:576;978:974:::0;;:::o;745:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;745:25:133;;-1:-1:-1;745:25:133;:::o;2543:215:31:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:31;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:31;;2700:1:::1;2672:31;::::0;::::1;160:74:180::0;133:18;;2672:31:31::1;14:226:180::0;2623:91:31::1;2723:28;2742:8;2723:18;:28::i;1796:162::-:0;1684:7;1710:6;-1:-1:-1;;;;;1710:6:31;735:10:64;1855:23:31;1851:101;;1901:40;;-1:-1:-1;;;1901:40:31;;735:10:64;1901:40:31;;;160:74:180;133:18;;1901:40:31;14:226:180;2912:187:31;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:31;;;-1:-1:-1;;;;;;3020:17:31;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;245:196:180:-;313:20;;-1:-1:-1;;;;;362:54:180;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:186::-;505:6;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;597:29;616:9;597:29;:::i;:::-;587:39;446:186;-1:-1:-1;;;446:186:180:o;637:660::-;827:2;839:21;;;909:13;;812:18;;;931:22;;;779:4;;1010:15;;;984:2;969:18;;;779:4;1053:218;1067:6;1064:1;1061:13;1053:218;;;1132:13;;-1:-1:-1;;;;;1128:62:180;1116:75;;1220:2;1246:15;;;;1211:12;;;;1089:1;1082:9;1053:218;;;-1:-1:-1;1288:3:180;;637:660;-1:-1:-1;;;;;637:660:180:o;1676:347::-;1741:6;1749;1802:2;1790:9;1781:7;1777:23;1773:32;1770:52;;;1818:1;1815;1808:12;1770:52;1841:29;1860:9;1841:29;:::i;:::-;1831:39;;1920:2;1909:9;1905:18;1892:32;1967:5;1960:13;1953:21;1946:5;1943:32;1933:60;;1989:1;1986;1979:12;1933:60;2012:5;2002:15;;;1676:347;;;;;:::o;2028:180::-;2087:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;-1:-1:-1;2179:23:180;;2028:180;-1:-1:-1;2028:180:180:o;2901:127::-;2962:10;2957:3;2953:20;2950:1;2943:31;2993:4;2990:1;2983:15;3017:4;3014:1;3007:15;3033:225;3100:9;;;3121:11;;;3118:134;;;3174:10;3169:3;3165:20;3162:1;3155:31;3209:4;3206:1;3199:15;3237:4;3234:1;3227:15;3118:134;3033:225;;;;:::o;3263:127::-;3324:10;3319:3;3315:20;3312:1;3305:31;3355:4;3352:1;3345:15;3379:4;3376:1;3369:15","linkReferences":{}},"methodIdentifiers":{"getNominees()":"9636f67c","isNominee(address)":"a2064f45","nominate(address,bool)":"affd8db0","nominations(address)":"f95baf26","nominees(uint256)":"eec6b91e","nomineesCount()":"980c4079","owner()":"8da5cb5b","renounceOwnership()":"715018a6","revokeNomination(address)":"8ec67e40","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationRevoked\",\"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\":\"getNominees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isNominee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"shouldNominate\",\"type\":\"bool\"}],\"name\":\"nominate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"nominations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"nominated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nominees\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nomineesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"revokeNomination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Erc20DelegateElection (standalone)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple, standalone contract combining self-nomination and delegate-based selection. - Accounts can nominate or revoke themselves as candidates. - An election selects up to `maxRoleHolders` nominees with highest delegated votes (`ERC20Votes.getVotes`). - No Powers/Mandate integration. Pure storage and helper utilities.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/helpers/Nominees.sol\":\"Nominees\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"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\"]},\"src/core/helpers/Nominees.sol\":{\"keccak256\":\"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13\",\"dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationRevoked","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":"view","type":"function","name":"getNominees","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isNominee","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"nominee","type":"address"},{"internalType":"bool","name":"shouldNominate","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"nominate"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"view","type":"function","name":"nominations","outputs":[{"internalType":"bool","name":"nominated","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"nominees","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nomineesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeNomination"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/core/helpers/Nominees.sol":"Nominees"},"evmVersion":"cancun","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"},"src/core/helpers/Nominees.sol":{"keccak256":"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7","urls":["bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13","dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u"],"license":"MIT"}},"version":1},"id":133} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getNominees","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isNominee","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominate","inputs":[{"name":"nominee","type":"address","internalType":"address"},{"name":"shouldNominate","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nominations","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[{"name":"nominated","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nominees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nomineesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeNomination","inputs":[{"name":"nominee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"NominationReceived","inputs":[{"name":"nominee","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NominationRevoked","inputs":[{"name":"nominee","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":"0x6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b50608e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61075f8061009b5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c8063a2064f4511610072578063eec6b91e11610058578063eec6b91e14610183578063f2fde38b14610196578063f95baf26146101a9575f5ffd5b8063a2064f451461012f578063affd8db014610170575f5ffd5b80638ec67e40116100a25780638ec67e40146100f05780639636f67c14610103578063980c407914610118575f5ffd5b8063715018a6146100bd5780638da5cb5b146100c7575b5f5ffd5b6100c56101cb565b005b5f546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100fe366004610621565b6101de565b61010b6101f3565b6040516100e79190610641565b61012160035481565b6040519081526020016100e7565b61016061013d366004610621565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b60405190151581526020016100e7565b6100c561017e36600461068c565b610253565b6100d36101913660046106c5565b610529565b6100c56101a4366004610621565b610551565b6101606101b7366004610621565b60016020525f908152604090205460ff1681565b6101d361058b565b6101dc5f6105b7565b565b6101e661058b565b6101f0815f610253565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561024957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161022b575b5050505050905090565b61025b61058b565b8015610369576001600160a01b0382165f9081526001602081905260409091205460ff16151590036102d45760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036103d45760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e617465640000000000000000000000000000000000000060448201526064016102cb565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b818110156104e757836001600160a01b03166002828154811061041d5761041d6106dc565b5f918252602090912001546001600160a01b0316036104df5760026104436001846106f0565b81548110610453576104536106dc565b5f91825260209091200154600280546001600160a01b03909216918390811061047e5761047e6106dc565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ba576104ba610715565b5f8281526020902081015f1990810180546001600160a01b03191690550190556104e7565b6001016103f8565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b60028181548110610538575f80fd5b5f918252602090912001546001600160a01b0316905081565b61055961058b565b6001600160a01b03811661058257604051631e4fbdf760e01b81525f60048201526024016102cb565b6101f0816105b7565b5f546001600160a01b031633146101dc5760405163118cdaa760e01b81523360048201526024016102cb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461061c575f5ffd5b919050565b5f60208284031215610631575f5ffd5b61063a82610606565b9392505050565b602080825282518282018190525f918401906040840190835b818110156106815783516001600160a01b031683526020938401939092019160010161065a565b509095945050505050565b5f5f6040838503121561069d575f5ffd5b6106a683610606565b9150602083013580151581146106ba575f5ffd5b809150509250929050565b5f602082840312156106d5575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561070f57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220c539f168b58fa3105e3e5a87bbb615f240852f5c6058fc538d3a1583a6bc97bd64736f6c634300081e0033","sourceMap":"617:1848:138:-:0;;;935:37;;;;;;;;;-1:-1:-1;957:10:138;;1269:95:33;;1322:31;;-1:-1:-1;;;1322:31:33;;1350:1;1322:31;;;160:51:187;133:18;;1322:31:33;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;617:1848:138;;2912:187:33;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:33;;;-1:-1:-1;;;;;;3020:17:33;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:203:187:-;617:1848:138;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c8063a2064f4511610072578063eec6b91e11610058578063eec6b91e14610183578063f2fde38b14610196578063f95baf26146101a9575f5ffd5b8063a2064f451461012f578063affd8db014610170575f5ffd5b80638ec67e40116100a25780638ec67e40146100f05780639636f67c14610103578063980c407914610118575f5ffd5b8063715018a6146100bd5780638da5cb5b146100c7575b5f5ffd5b6100c56101cb565b005b5f546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100fe366004610621565b6101de565b61010b6101f3565b6040516100e79190610641565b61012160035481565b6040519081526020016100e7565b61016061013d366004610621565b6001600160a01b03165f9081526001602081905260409091205460ff1615151490565b60405190151581526020016100e7565b6100c561017e36600461068c565b610253565b6100d36101913660046106c5565b610529565b6100c56101a4366004610621565b610551565b6101606101b7366004610621565b60016020525f908152604090205460ff1681565b6101d361058b565b6101dc5f6105b7565b565b6101e661058b565b6101f0815f610253565b50565b6060600280548060200260200160405190810160405280929190818152602001828054801561024957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161022b575b5050505050905090565b61025b61058b565b8015610369576001600160a01b0382165f9081526001602081905260409091205460ff16151590036102d45760405162461bcd60e51b815260206004820152601160248201527f616c7265616479206e6f6d696e6174656400000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916831790556002805480840182559084527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319168517905560038054909201909155517f0c20edab5f0aae928e069b742fcb70692c69c06d5cb6bfff526bba9cf3fbe33f9190a25050565b6001600160a01b0382165f9081526001602052604081205460ff16151590036103d45760405162461bcd60e51b815260206004820152600d60248201527f6e6f74206e6f6d696e617465640000000000000000000000000000000000000060448201526064016102cb565b6001600160a01b0382165f908152600160205260408120805460ff19169055600254905b818110156104e757836001600160a01b03166002828154811061041d5761041d6106dc565b5f918252602090912001546001600160a01b0316036104df5760026104436001846106f0565b81548110610453576104536106dc565b5f91825260209091200154600280546001600160a01b03909216918390811061047e5761047e6106dc565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806104ba576104ba610715565b5f8281526020902081015f1990810180546001600160a01b03191690550190556104e7565b6001016103f8565b50600380545f190190556040516001600160a01b038416907f8f409e6d2a5a71ccff16036ebcb0b30a2afe9bd0dcfb4fe255c646fa86b6107a905f90a2505050565b60028181548110610538575f80fd5b5f918252602090912001546001600160a01b0316905081565b61055961058b565b6001600160a01b03811661058257604051631e4fbdf760e01b81525f60048201526024016102cb565b6101f0816105b7565b5f546001600160a01b031633146101dc5760405163118cdaa760e01b81523360048201526024016102cb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461061c575f5ffd5b919050565b5f60208284031215610631575f5ffd5b61063a82610606565b9392505050565b602080825282518282018190525f918401906040840190835b818110156106815783516001600160a01b031683526020938401939092019160010161065a565b509095945050505050565b5f5f6040838503121561069d575f5ffd5b6106a683610606565b9150602083013580151581146106ba575f5ffd5b809150509250929050565b5f602082840312156106d5575f5ffd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561070f57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220c539f168b58fa3105e3e5a87bbb615f240852f5c6058fc538d3a1583a6bc97bd64736f6c634300081e0033","sourceMap":"617:1848:138:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:101:33;;;:::i;:::-;;1638:85;1684:7;1710:6;-1:-1:-1;;;;;1710:6:33;1638:85;;;-1:-1:-1;;;;;178:55:187;;;160:74;;148:2;133:18;1638:85:33;;;;;;;;2106:103:138;;;;;;:::i;:::-;;:::i;2244:96::-;;;:::i;:::-;;;;;;;:::i;776:28::-;;;;;;;;;1448:25:187;;;1436:2;1421:18;776:28:138;1302:177:187;2346:117:138;;;;;;:::i;:::-;-1:-1:-1;;;;;2428:20:138;2405:4;2428:20;;;:11;:20;;;;;;;;;;;:28;;;;2346:117;;;;1649:14:187;;1642:22;1624:41;;1612:2;1597:18;2346:117:138;1484:187:187;978:974:138;;;;;;:::i;:::-;;:::i;745:25::-;;;;;;:::i;:::-;;:::i;2543:215:33:-;;;;;;:::i;:::-;;:::i;678:61:138:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2293:101:33;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2106:103:138:-;1531:13:33;:11;:13::i;:::-;2178:24:138::1;2187:7;2196:5;2178:8;:24::i;:::-;2106:103:::0;:::o;2244:96::-;2290:16;2325:8;2318:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2318:15:138;;;;;;;;;;;;;;;;;;;;;;;2244:96;:::o;978:974::-;1531:13:33;:11;:13::i;:::-;1065:14:138::1;1061:885;;;-1:-1:-1::0;;;;;1099:20:138;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;;::::1;;:28;;::::0;;1095:61:::1;;1129:27;::::0;-1:-1:-1;;;1129:27:138;;2415:2:187;1129:27:138::1;::::0;::::1;2397:21:187::0;2454:2;2434:18;;;2427:30;2493:19;2473:18;;;2466:47;2530:18;;1129:27:138::1;;;;;;;;1095:61;-1:-1:-1::0;;;;;1170:20:138;::::1;;::::0;;;1193:4:::1;1170:20;::::0;;;;;;;:27;;-1:-1:-1;;1170:27:138::1;::::0;::::1;::::0;;1211:8:::1;:22:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;1211:22:138::1;::::0;::::1;::::0;;1275:13:::1;:18:::0;;;;::::1;::::0;;;1326:27;::::1;::::0;1170:20;1326:27:::1;978:974:::0;;:::o;1061:885::-:1;-1:-1:-1::0;;;;;1388:20:138;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;:29;;::::0;;1384:58:::1;;1419:23;::::0;-1:-1:-1;;;1419:23:138;;2761:2:187;1419:23:138::1;::::0;::::1;2743:21:187::0;2800:2;2780:18;;;2773:30;2839:15;2819:18;;;2812:43;2872:18;;1419:23:138::1;2559:337:187::0;1384:58:138::1;-1:-1:-1::0;;;;;1456:20:138;::::1;1479:5;1456:20:::0;;;:11:::1;:20;::::0;;;;:28;;-1:-1:-1;;1456:28:138::1;::::0;;1563:8:::1;:15:::0;;1592:225:::1;1612:3;1608:1;:7;1592:225;;;1659:7;-1:-1:-1::0;;;;;1644:22:138::1;:8;1653:1;1644:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;1644:11:138::1;:22:::0;1640:163:::1;;1704:8;1713:7;1719:1;1713:3:::0;:7:::1;:::i;:::-;1704:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;1690:8:::1;:11:::0;;-1:-1:-1;;;;;1704:17:138;;::::1;::::0;1699:1;;1690:11;::::1;;;;;:::i;:::-;;;;;;;;;:31;;;;;-1:-1:-1::0;;;;;1690:31:138::1;;;;;-1:-1:-1::0;;;;;1690:31:138::1;;;;;;1743:8;:14;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;1743:14:138;;;;;-1:-1:-1;;;;;;1743:14:138::1;::::0;;;;;1779:5:::1;;1640:163;1617:3;;1592:225;;;-1:-1:-1::0;1858:13:138::1;:18:::0;;-1:-1:-1;;1858:18:138;;;1909:26:::1;::::0;-1:-1:-1;;;;;1909:26:138;::::1;::::0;::::1;::::0;1858:13:::1;::::0;1909:26:::1;1370:576;978:974:::0;;:::o;745:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;745:25:138;;-1:-1:-1;745:25:138;:::o;2543:215:33:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:33;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:33;;2700:1:::1;2672:31;::::0;::::1;160:74:187::0;133:18;;2672:31:33::1;14:226:187::0;2623:91:33::1;2723:28;2742:8;2723:18;:28::i;1796:162::-:0;1684:7;1710:6;-1:-1:-1;;;;;1710:6:33;735:10:69;1855:23:33;1851:101;;1901:40;;-1:-1:-1;;;1901:40:33;;735:10:69;1901:40:33;;;160:74:187;133:18;;1901:40:33;14:226:187;2912:187:33;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:33;;;-1:-1:-1;;;;;;3020:17:33;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;245:196:187:-;313:20;;-1:-1:-1;;;;;362:54:187;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:186::-;505:6;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;597:29;616:9;597:29;:::i;:::-;587:39;446:186;-1:-1:-1;;;446:186:187:o;637:660::-;827:2;839:21;;;909:13;;812:18;;;931:22;;;779:4;;1010:15;;;984:2;969:18;;;779:4;1053:218;1067:6;1064:1;1061:13;1053:218;;;1132:13;;-1:-1:-1;;;;;1128:62:187;1116:75;;1220:2;1246:15;;;;1211:12;;;;1089:1;1082:9;1053:218;;;-1:-1:-1;1288:3:187;;637:660;-1:-1:-1;;;;;637:660:187:o;1676:347::-;1741:6;1749;1802:2;1790:9;1781:7;1777:23;1773:32;1770:52;;;1818:1;1815;1808:12;1770:52;1841:29;1860:9;1841:29;:::i;:::-;1831:39;;1920:2;1909:9;1905:18;1892:32;1967:5;1960:13;1953:21;1946:5;1943:32;1933:60;;1989:1;1986;1979:12;1933:60;2012:5;2002:15;;;1676:347;;;;;:::o;2028:180::-;2087:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;-1:-1:-1;2179:23:187;;2028:180;-1:-1:-1;2028:180:187:o;2901:127::-;2962:10;2957:3;2953:20;2950:1;2943:31;2993:4;2990:1;2983:15;3017:4;3014:1;3007:15;3033:225;3100:9;;;3121:11;;;3118:134;;;3174:10;3169:3;3165:20;3162:1;3155:31;3209:4;3206:1;3199:15;3237:4;3234:1;3227:15;3118:134;3033:225;;;;:::o;3263:127::-;3324:10;3319:3;3315:20;3312:1;3305:31;3355:4;3352:1;3345:15;3379:4;3376:1;3369:15","linkReferences":{}},"methodIdentifiers":{"getNominees()":"9636f67c","isNominee(address)":"a2064f45","nominate(address,bool)":"affd8db0","nominations(address)":"f95baf26","nominees(uint256)":"eec6b91e","nomineesCount()":"980c4079","owner()":"8da5cb5b","renounceOwnership()":"715018a6","revokeNomination(address)":"8ec67e40","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"NominationRevoked\",\"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\":\"getNominees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isNominee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"shouldNominate\",\"type\":\"bool\"}],\"name\":\"nominate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"nominations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"nominated\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nominees\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nomineesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nominee\",\"type\":\"address\"}],\"name\":\"revokeNomination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Erc20DelegateElection (standalone)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple, standalone contract combining self-nomination and delegate-based selection. - Accounts can nominate or revoke themselves as candidates. - An election selects up to `maxRoleHolders` nominees with highest delegated votes (`ERC20Votes.getVotes`). - No Powers/Mandate integration. Pure storage and helper utilities.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/helpers/Nominees.sol\":\"Nominees\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"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\"]},\"src/core/helpers/Nominees.sol\":{\"keccak256\":\"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13\",\"dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"nominee","type":"address","indexed":true}],"type":"event","name":"NominationRevoked","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":"view","type":"function","name":"getNominees","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isNominee","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"nominee","type":"address"},{"internalType":"bool","name":"shouldNominate","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"nominate"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"view","type":"function","name":"nominations","outputs":[{"internalType":"bool","name":"nominated","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"nominees","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nomineesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"nominee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeNomination"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/core/helpers/Nominees.sol":"Nominees"},"evmVersion":"cancun","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"},"src/core/helpers/Nominees.sol":{"keccak256":"0xe5d1966360e09a5edec0448906a61bd1a8684122965be5cdd373c9ea63738dc7","urls":["bzz-raw://e046636e9354c25b8046feedf83e31b1d4232e994f6a4eeb7b30f62b2949fe13","dweb:/ipfs/QmTCywkMjmtP3RskVi4McaQJW3oDYWeJDgKAg5zPP2e42u"],"license":"MIT"}},"version":1},"id":138} \ No newline at end of file diff --git a/frontend/context/builds/Ownable.json b/frontend/context/builds/Ownable.json index c6988190..b630b6dc 100644 --- a/frontend/context/builds/Ownable.json +++ b/frontend/context/builds/Ownable.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"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.30+commit.73712a01"},"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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":"Ownable"},"evmVersion":"cancun","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":31} \ No newline at end of file +{"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.30+commit.73712a01\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"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.30+commit.73712a01"},"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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":"Ownable"},"evmVersion":"cancun","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":33} \ No newline at end of file diff --git a/frontend/context/builds/Powers.json b/frontend/context/builds/Powers.json index 6cc03283..5e5e378b 100644 --- a/frontend/context/builds/Powers.json +++ b/frontend/context/builds/Powers.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"uri_","type":"string","internalType":"string"},{"name":"maxCallDataLength_","type":"uint256","internalType":"uint256"},{"name":"maxReturnDataLength_","type":"uint256","internalType":"uint256"},{"name":"maxExecutionsLength_","type":"uint256","internalType":"uint256"},{"name":"mandateRegistry_","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FOUNDED_AT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MANDATE_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"MAX_CALLDATA_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_EXECUTIONS_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_RETURN_DATA_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PUBLIC_ROLE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addFlow","inputs":[{"name":"flow","type":"tuple","internalType":"struct PowersTypes.Flow","components":[{"name":"mandateIds","type":"uint16[]","internalType":"uint16[]"},{"name":"nameDescription","type":"string","internalType":"string"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adoptMandate","inputs":[{"name":"mandateInitData","type":"tuple","internalType":"struct PowersTypes.MandateInitData","components":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"targetMandate","type":"address","internalType":"address"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"conditions","type":"tuple","internalType":"struct PowersTypes.Conditions","components":[{"name":"allowedRole","type":"uint256","internalType":"uint256"},{"name":"votingPeriod","type":"uint32","internalType":"uint32"},{"name":"timelock","type":"uint32","internalType":"uint32"},{"name":"throttleExecution","type":"uint32","internalType":"uint32"},{"name":"needFulfilled","type":"uint16","internalType":"uint16"},{"name":"needNotFulfilled","type":"uint16","internalType":"uint16"},{"name":"quorum","type":"uint8","internalType":"uint8"},{"name":"succeedAt","type":"uint8","internalType":"uint8"},{"name":"maxExecutionDelay","type":"uint32","internalType":"uint32"}]}]}],"outputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"stateMutability":"nonpayable"},{"type":"function","name":"assignRole","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklistAddress","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"blacklisted","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canCallMandate","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancel","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"castVote","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"support","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"castVoteWithReason","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"support","type":"uint8","internalType":"uint8"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeConstitute","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeConstitute","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeConstitute","inputs":[{"name":"newAdmin","type":"address","internalType":"address"},{"name":"_flows","type":"tuple[]","internalType":"struct PowersTypes.Flow[]","components":[{"name":"mandateIds","type":"uint16[]","internalType":"uint16[]"},{"name":"nameDescription","type":"string","internalType":"string"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"constitute","inputs":[{"name":"constituentMandates","type":"tuple[]","internalType":"struct PowersTypes.MandateInitData[]","components":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"targetMandate","type":"address","internalType":"address"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"conditions","type":"tuple","internalType":"struct PowersTypes.Conditions","components":[{"name":"allowedRole","type":"uint256","internalType":"uint256"},{"name":"votingPeriod","type":"uint32","internalType":"uint32"},{"name":"timelock","type":"uint32","internalType":"uint32"},{"name":"throttleExecution","type":"uint32","internalType":"uint32"},{"name":"needFulfilled","type":"uint16","internalType":"uint16"},{"name":"needNotFulfilled","type":"uint16","internalType":"uint16"},{"name":"quorum","type":"uint8","internalType":"uint8"},{"name":"succeedAt","type":"uint8","internalType":"uint8"},{"name":"maxExecutionDelay","type":"uint32","internalType":"uint32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"editFlowByIndex","inputs":[{"name":"index1","type":"uint8","internalType":"uint8"},{"name":"index2","type":"uint8","internalType":"uint8"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flows","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"fulfill","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"targets","type":"address[]","internalType":"address[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActionCalldata","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getActionData","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"proposedAt","type":"uint48","internalType":"uint48"},{"name":"requestedAt","type":"uint48","internalType":"uint48"},{"name":"fulfilledAt","type":"uint48","internalType":"uint48"},{"name":"cancelledAt","type":"uint48","internalType":"uint48"},{"name":"caller","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getActionReturnData","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"returnData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getActionState","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint8","internalType":"enum PowersTypes.ActionState"}],"stateMutability":"view"},{"type":"function","name":"getActionUri","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"_uri","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getActionVoteData","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"voteStart","type":"uint48","internalType":"uint48"},{"name":"voteDuration","type":"uint32","internalType":"uint32"},{"name":"voteEnd","type":"uint256","internalType":"uint256"},{"name":"againstVotes","type":"uint32","internalType":"uint32"},{"name":"forVotes","type":"uint32","internalType":"uint32"},{"name":"abstainVotes","type":"uint32","internalType":"uint32"},{"name":"voterCountSnapshot","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getAdoptedMandate","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"mandate","type":"address","internalType":"address"},{"name":"mandateHash","type":"bytes32","internalType":"bytes32"},{"name":"active","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAmountRoleHolders","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountMembers","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getConditions","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"conditions","type":"tuple","internalType":"struct PowersTypes.Conditions","components":[{"name":"allowedRole","type":"uint256","internalType":"uint256"},{"name":"votingPeriod","type":"uint32","internalType":"uint32"},{"name":"timelock","type":"uint32","internalType":"uint32"},{"name":"throttleExecution","type":"uint32","internalType":"uint32"},{"name":"needFulfilled","type":"uint16","internalType":"uint16"},{"name":"needNotFulfilled","type":"uint16","internalType":"uint16"},{"name":"quorum","type":"uint8","internalType":"uint8"},{"name":"succeedAt","type":"uint8","internalType":"uint8"},{"name":"maxExecutionDelay","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getFlowCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFlowDescriptionAtIndex","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getFlowMandatesAtIndex","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint16[]","internalType":"uint16[]"}],"stateMutability":"view"},{"type":"function","name":"getLatestFulfillment","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"latestFulfillment","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getMandateActionAtIndex","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMandateCounter","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"getQuantityMandateActions","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"quantityMandateActions","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleHolderAtIndex","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"account","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRoleLabel","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getRoleMetadata","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"metadata","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getTreasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"hasRoleSince","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"since","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"hasVoted","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isBlacklisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"labelRole","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"label","type":"string","internalType":"string"},{"name":"metadata","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mandateCounter","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"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":"view"},{"type":"function","name":"paymaster","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"propose","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"uriAction","type":"string","internalType":"string"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeFlow","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"request","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"uriAction","type":"string","internalType":"string"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokeMandate","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymaster","inputs":[{"name":"newPaymaster","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"newTreasury","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUri","inputs":[{"name":"newUri","type":"string","internalType":"string"}],"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":"uri","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"event","name":"ActionFulfilled","inputs":[{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"targets","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false},{"type":"event","name":"ActionRequested","inputs":[{"name":"caller","type":"address","indexed":true,"internalType":"address"},{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"description","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"BlacklistSet","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"blacklisted","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"FlowAdapted","inputs":[{"name":"index1","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"index2","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"mandateId","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"FlowAdded","inputs":[{"name":"mandateIds","type":"uint16[]","indexed":false,"internalType":"uint16[]"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"FlowDeleted","inputs":[{"name":"index","type":"uint8","indexed":true,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"FundsReceived","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MandateAdopted","inputs":[{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"MandateRevoked","inputs":[{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"PaymasterSet","inputs":[{"name":"newPaymaster","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Powers__Initialized","inputs":[{"name":"contractAddress","type":"address","indexed":false,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"uri","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"ProposedActionCancelled","inputs":[{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProposedActionCreated","inputs":[{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"caller","type":"address","indexed":true,"internalType":"address"},{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"signature","type":"string","indexed":false,"internalType":"string"},{"name":"executeCalldata","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"voteStart","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"voteEnd","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"description","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"RoleLabel","inputs":[{"name":"roleId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"label","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"RoleSet","inputs":[{"name":"roleId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"access","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"VoteCast","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"support","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"Powers__ActionAlreadyFulfilled","inputs":[]},{"type":"error","name":"Powers__ActionAlreadyInitiated","inputs":[]},{"type":"error","name":"Powers__ActionCancelled","inputs":[]},{"type":"error","name":"Powers__ActionNotProposed","inputs":[]},{"type":"error","name":"Powers__ActionNotRequested","inputs":[]},{"type":"error","name":"Powers__AddressBlacklisted","inputs":[]},{"type":"error","name":"Powers__AlreadyCastVote","inputs":[]},{"type":"error","name":"Powers__CalldataTooLong","inputs":[]},{"type":"error","name":"Powers__CallerNotTargetMandate","inputs":[]},{"type":"error","name":"Powers__CannotAddPowersAddressAsMember","inputs":[]},{"type":"error","name":"Powers__CannotAddZeroAddress","inputs":[]},{"type":"error","name":"Powers__CannotCallMandate","inputs":[]},{"type":"error","name":"Powers__CannotSetPublicRole","inputs":[]},{"type":"error","name":"Powers__CannotSetZeroAddress","inputs":[]},{"type":"error","name":"Powers__ConstituteClosed","inputs":[]},{"type":"error","name":"Powers__ConstituteOpen","inputs":[]},{"type":"error","name":"Powers__ConstitutionAlreadyExecuted","inputs":[]},{"type":"error","name":"Powers__ExecutionArrayTooLong","inputs":[]},{"type":"error","name":"Powers__ExternalContractBlacklisted","inputs":[]},{"type":"error","name":"Powers__IncorrectInterface","inputs":[{"name":"targetMandate","type":"address","internalType":"address"}]},{"type":"error","name":"Powers__InvalidAddress","inputs":[]},{"type":"error","name":"Powers__InvalidCallData","inputs":[]},{"type":"error","name":"Powers__InvalidFlowIndex","inputs":[]},{"type":"error","name":"Powers__InvalidIndex","inputs":[]},{"type":"error","name":"Powers__InvalidLabel","inputs":[]},{"type":"error","name":"Powers__InvalidMandateId","inputs":[]},{"type":"error","name":"Powers__InvalidMandateIndex","inputs":[]},{"type":"error","name":"Powers__InvalidMaxCallDataLength","inputs":[]},{"type":"error","name":"Powers__InvalidMaxExecutionsLength","inputs":[]},{"type":"error","name":"Powers__InvalidName","inputs":[]},{"type":"error","name":"Powers__InvalidReturnCallDataLength","inputs":[]},{"type":"error","name":"Powers__InvalidVoteType","inputs":[]},{"type":"error","name":"Powers__JoinedAfterVoteStart","inputs":[]},{"type":"error","name":"Powers__LabelTooLong","inputs":[]},{"type":"error","name":"Powers__LockedRole","inputs":[]},{"type":"error","name":"Powers__MandateFulfillCallFailed","inputs":[]},{"type":"error","name":"Powers__MandateNotActive","inputs":[]},{"type":"error","name":"Powers__MandateNotRegistered","inputs":[{"name":"targetMandate","type":"address","internalType":"address"}]},{"type":"error","name":"Powers__MandateRequestFailed","inputs":[]},{"type":"error","name":"Powers__NoMembersInRole","inputs":[]},{"type":"error","name":"Powers__NoVoteNeeded","inputs":[]},{"type":"error","name":"Powers__NotAContract","inputs":[]},{"type":"error","name":"Powers__NotProposerAction","inputs":[]},{"type":"error","name":"Powers__OnlyAdmin","inputs":[]},{"type":"error","name":"Powers__OnlyPowers","inputs":[]},{"type":"error","name":"Powers__PayableNotEnabled","inputs":[]},{"type":"error","name":"Powers__ProposedActionNotActive","inputs":[]},{"type":"error","name":"Powers__UnexpectedActionState","inputs":[]},{"type":"error","name":"Powers__UriTooLong","inputs":[]},{"type":"error","name":"Powers__VoteWithPublicRoleDisallowed","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x61020060408190526009805461ffff60a01b1916600160a01b1790556152da38819003908190833981016040819052610037916103ee565b8561005b60408051808201909152600681526576302e362e3160d01b602082015290565b610065825f61021e565b6101205261007481600161021e565b61014052815160208084019190912060e052815190820120610100524660a05261010060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05285515f0361012a57604051634acb0e6d60e01b815260040160405180910390fd5b835f0361014a57604051631c58c0e160e01b815260040160405180910390fd5b825f0361016a5760405163a19bdd3b60e01b815260040160405180910390fd5b815f0361018a57604051638a2b742f60e01b815260040160405180910390fd5b6101965f336001610250565b60066101a28782610513565b5060076101af8682610513565b506101608490526101808390526101a08290526001600160a01b0381166101e052436101c0526040517f8e09415123fab1f9e22246686c8d24ad9f84c70288cd5fa338213bccd3c5fb769061020b90309060069060079061064c565b60405180910390a15050505050506106e3565b5f602083511015610239576102328361030b565b905061024a565b816102448482610513565b5060ff90505b92915050565b6040516393926d2560e01b8152600480820152602481018490526001600160a01b0383166044820152811515606482015273__$4fdb155c07e189d6709d928ad749b812b4$__906393926d25906084015f6040518083038186803b1580156102b6575f5ffd5b505af41580156102c8573d5f5f3e3d5ffd5b50505050801515826001600160a01b0316847f294507a8f5830b538faef39fbdd28f1164f27c8338a32fc7b47ddf82e4c8d9e460405160405180910390a4505050565b5f5f829050601f8151111561033e578260405163305a27a960e01b8152600401610335919061068b565b60405180910390fd5b8051610349826106c0565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610374575f5ffd5b81516001600160401b0381111561038d5761038d610351565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103bb576103bb610351565b6040528181528382016020018510156103d2575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f5f60c08789031215610403575f5ffd5b86516001600160401b03811115610418575f5ffd5b61042489828a01610365565b602089015190975090506001600160401b03811115610441575f5ffd5b61044d89828a01610365565b604089015160608a015160808b015160a08c01519399509197509550935090506001600160a01b0381168114610481575f5ffd5b809150509295509295509295565b600181811c908216806104a357607f821691505b6020821081036104c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561050e57805f5260205f20601f840160051c810160208510156104ec5750805b601f840160051c820191505b8181101561050b575f81556001016104f8565b50505b505050565b81516001600160401b0381111561052c5761052c610351565b6105408161053a845461048f565b846104c7565b6020601f821160018114610572575f831561055b5750848201515b5f19600385901b1c1916600184901b17845561050b565b5f84815260208120601f198516915b828110156105a15787850151825560209485019460019092019101610581565b50848210156105be57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f81546105d98161048f565b8085526001821680156105f3576001811461060f57610643565b60ff1983166020870152602082151560051b8701019350610643565b845f5260205f205f5b8381101561063a5781546020828a010152600182019150602081019050610618565b87016020019450505b50505092915050565b6001600160a01b03841681526060602082018190525f9061066f908301856105cd565b828103604084015261068181856105cd565b9695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104c1575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051614b596107815f395f8181610bcd015261301701525f6109be01525f8181610e7201526111b501525f8181610aea01526113fa01525f8181610daf0152818161125d015281816119b70152612a2601525f6133d101525f6133a001525f50505f50505f50505f50505f5050614b595ff3fe6080604052600436106103d0575f3560e01c8063685b824a11610203578063a375109811610122578063eac989f8116100b7578063f0f4426011610087578063f2a0bb751161006d578063f2a0bb7514610e42578063f6226e7c14610e61578063fe575a8714610e94575f5ffd5b8063f0f4426014610e04578063f23a6e6114610e23575f5ffd5b8063eac989f814610d6b578063ebef6d9714610d7f578063edf2a59614610d9e578063edfd2e8714610dd1575f5ffd5b8063bc197c81116100f2578063bc197c8114610ced578063cc5812cf14610d0c578063d902bf3a14610d2b578063e88efe3514610d4a575f5ffd5b8063a375109814610c6d578063afe2658b14610c8c578063b367cac014610ca0578063b4324dd314610cbf575f5ffd5b806384b0196e11610198578063918f867411610168578063918f867414610bef57806393d7dae514610c035780639a0435d414610c225780639b642de114610c4e575f5ffd5b806384b0196e14610b575780638973be0414610b7e5780638a4359e014610b9d5780639100808e14610bbc575f5ffd5b80637b3c71d3116101d35780637b3c71d314610aba5780637c1b553914610ad95780638180d29e14610b0c578063831af37914610b2b575f5ffd5b8063685b824a14610a4a5780637258883f14610a6957806375b238fc14610a8857806376ff757714610a9b575f5ffd5b80632d90fe5f116102ef578063455a4396116102845780635532f99b116102545780635532f99b146109ad57806356781388146109e05780635d7c9ce3146109ff578063666ca2d614610a1e575f5ffd5b8063455a4396146108735780634583476b14610892578063519fcfb01461096057806354fd4d501461097f575f5ffd5b80633ca7c02a116102bf5780633ca7c02a146107d95780633fc42d2e146107ed57806341bd157d1461080c578063438596321461082b575f5ffd5b80632d90fe5f1461075f5780632e2d82531461077e578063361262161461079d5780633b19e84a146107bc575f5ffd5b806312561b1a116103655780631d0b19e7116103355780631d0b19e71461069c5780632179e04e146106bb57806324bbb203146107215780632a97fa7714610740575f5ffd5b806312561b1a146105e1578063150b7a021461060e57806316e4cbf914610646578063199093bb1461067d575f5ffd5b806306fdde03116103a057806306fdde03146105005780630d7abeaa146105145780630de6a6011461052a5780631031bdb014610549575f5ffd5b806301ffc9a71461041d5780630398f05f14610451578063040b8c241461047d578063055dbe10146104d2575f5ffd5b36610419577f8e47b87b0ef542cdfa1659c551d88bad38aa7f452d2bbb349ab7530dfec8be8f33604080516001600160a01b0390921682523460208301520160405180910390a1005b5f5ffd5b348015610428575f5ffd5b5061043c61043736600461369a565b610ecb565b60405190151581526020015b60405180910390f35b34801561045c575f5ffd5b5061047061046b3660046136c8565b610f1c565b604051610448919061370d565b348015610488575f5ffd5b506104bb610497366004613730565b61ffff165f90815260036020526040902054600160a01b900465ffffffffffff1690565b60405165ffffffffffff9091168152602001610448565b3480156104dd575f5ffd5b50600954600160a01b900461ffff165b60405161ffff9091168152602001610448565b34801561050b575f5ffd5b50610470610fbe565b34801561051f575f5ffd5b5061052861104a565b005b348015610535575f5ffd5b50610528610544366004613790565b61109a565b348015610554575f5ffd5b506105ba610563366004613730565b61ffff165f81815260036020908152604091829020548251308184015280840194909452825180850384018152606090940190925282519201919091206001600160a01b038216929091600160d01b900460ff1690565b604080516001600160a01b0390941684526020840192909252151590820152606001610448565b3480156105ec575f5ffd5b506106006105fb366004613882565b6114e6565b604051908152602001610448565b348015610619575f5ffd5b5061062d6106283660046138eb565b6116e1565b6040516001600160e01b03199091168152602001610448565b348015610651575f5ffd5b50600954610665906001600160a01b031681565b6040516001600160a01b039091168152602001610448565b348015610688575f5ffd5b50610665610697366004613958565b611718565b3480156106a7575f5ffd5b506105286106b6366004613978565b61177a565b3480156106c6575f5ffd5b506106da6106d53660046136c8565b611791565b6040805165ffffffffffff909816885263ffffffff9687166020890152870194909452918416606086015283166080850152821660a08401521660c082015260e001610448565b34801561072c575f5ffd5b506104ed61073b366004613c46565b611821565b34801561074b575f5ffd5b5061052861075a366004613c7f565b61186f565b34801561076a575f5ffd5b506104706107793660046136c8565b6118e7565b348015610789575f5ffd5b50610600610798366004613c9a565b611906565b3480156107a8575f5ffd5b506104706107b7366004613d1b565b611c68565b3480156107c7575f5ffd5b506008546001600160a01b0316610665565b3480156107e4575f5ffd5b506106005f1981565b3480156107f8575f5ffd5b50610528610807366004613d34565b611cc0565b348015610817575f5ffd5b50610470610826366004613958565b611e0f565b348015610836575f5ffd5b5061043c610845366004613978565b5f8281526002602090815260408083206001600160a01b038516845260070190915290205460ff1692915050565b34801561087e575f5ffd5b5061052861088d366004613d81565b611ecc565b34801561089d575f5ffd5b5061090d6108ac3660046136c8565b5f908152600260208190526040909120805491810154600390910154600160f01b830461ffff169365ffffffffffff80851694600160301b8104821694600160601b8204831694600160901b909204909216926001600160a01b0390921691565b6040805161ffff909816885265ffffffffffff96871660208901529486169487019490945291841660608601529290921660808401526001600160a01b0390911660a083015260c082015260e001610448565b34801561096b575f5ffd5b5061052861097a366004613d1b565b611f27565b34801561098a575f5ffd5b5060408051808201909152600681526576302e362e3160d01b6020820152610470565b3480156109b8575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b3480156109eb575f5ffd5b506105286109fa366004613dad565b611fc2565b348015610a0a575f5ffd5b50610528610a19366004613df9565b611fdc565b348015610a29575f5ffd5b50610a3d610a383660046136c8565b6120ad565b6040516104489190613ead565b348015610a55575f5ffd5b50610528610a64366004613978565b6121f6565b348015610a74575f5ffd5b50610528610a83366004613c7f565b612243565b348015610a93575f5ffd5b506106005f81565b348015610aa6575f5ffd5b50610528610ab5366004613ed3565b612269565b348015610ac5575f5ffd5b50610528610ad4366004613f3e565b61234b565b348015610ae4575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610b17575f5ffd5b50610470610b263660046136c8565b612392565b348015610b36575f5ffd5b50610b4a610b45366004613730565b612442565b6040516104489190614043565b348015610b62575f5ffd5b50610b6b61254b565b6040516104489796959493929190614052565b348015610b89575f5ffd5b50610528610b983660046141b4565b61258d565b348015610ba8575f5ffd5b50610600610bb7366004614278565b61259f565b348015610bc7575f5ffd5b506106657f000000000000000000000000000000000000000000000000000000000000000081565b348015610bfa575f5ffd5b50610600606481565b348015610c0e575f5ffd5b5061043c610c1d3660046142a0565b6125fd565b348015610c2d575f5ffd5b50610c41610c3c366004613d1b565b61263f565b6040516104489190614308565b348015610c59575f5ffd5b50610528610c6836600461431a565b6126ff565b348015610c78575f5ffd5b50610528610c8736600461434b565b612713565b348015610c97575f5ffd5b50600a54610600565b348015610cab575f5ffd5b50610528610cba366004613730565b6127bf565b348015610cca575f5ffd5b50610600610cd93660046136c8565b5f9081526004602052604090206001015490565b348015610cf8575f5ffd5b5061062d610d0736600461437c565b612866565b348015610d17575f5ffd5b506104bb610d26366004614428565b6128a0565b348015610d36575f5ffd5b50610470610d453660046136c8565b612918565b348015610d55575f5ffd5b506009546104ed90600160a01b900461ffff1681565b348015610d76575f5ffd5b50610470612937565b348015610d8a575f5ffd5b50610600610d99366004613c9a565b612944565b348015610da9575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610ddc575f5ffd5b50610600610deb366004613730565b61ffff165f908152600360208190526040909120015490565b348015610e0f575f5ffd5b50610528610e1e366004613c7f565b612d71565b348015610e2e575f5ffd5b5061062d610e3d366004614444565b612dc2565b348015610e4d575f5ffd5b50610470610e5c3660046136c8565b612dfb565b348015610e6c575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610e9f575f5ffd5b5061043c610eae366004613c7f565b6001600160a01b03165f9081526005602052604090205460ff1690565b5f6001600160e01b03198216630a85bd0160e11b1480610efb57506001600160e01b03198216630271189760e51b145b80610f1657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f818152600460205260409020600201805460609190610f3b906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610f67906144ba565b8015610fb25780601f10610f8957610100808354040283529160200191610fb2565b820191905f5260205f20905b815481529060010190602001808311610f9557829003601f168201915b50505050509050919050565b60068054610fcb906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff7906144ba565b80156110425780601f1061101957610100808354040283529160200191611042565b820191905f5260205f20905b81548152906001019060200180831161102557829003601f168201915b505050505081565b611052612e1a565b61109833604080515f8082526020820190925290611092565b604080518082019091526060808252602082015281526020019060019003908161106b5790505b50612e4b565b565b61ffff88165f9081526003602052604090208054600160d01b900460ff166110d557604051632e53afcd60e01b815260040160405180910390fd5b80546001600160a01b031633146110ff57604051635574892960e11b815260040160405180910390fd5b5f8881526002602052604090208054600160301b900465ffffffffffff16158061113857508054600160901b900465ffffffffffff1615155b15611156576040516301dd1d1560e71b815260040160405180910390fd5b8054600160601b900465ffffffffffff16156111855760405163a517239560e01b815260040160405180910390fd5b8685811415806111955750808414155b156111b35760405163dbf15fa560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008111156111f45760405163d0b6a17960e01b815260040160405180910390fd5b815471ffffffffffff0000000000000000000000001916600160601b4365ffffffffffff1690810291909117835583547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b9091021783555f5b81811015611491577f000000000000000000000000000000000000000000000000000000000000000086868381811061128e5761128e6144f2565b90506020028101906112a09190614506565b905011156112c157604051631c3bc5e360e31b815260040160405180910390fd5b6112eb8a8a838181106112d6576112d66144f2565b9050602002016020810190610eae9190613c7f565b15611309576040516334d52f6b60e01b815260040160405180910390fd5b5f5f8b8b8481811061131d5761131d6144f2565b90506020020160208101906113329190613c7f565b6001600160a01b03168a8a8581811061134d5761134d6144f2565b90506020020135898986818110611366576113666144f2565b90506020028101906113789190614506565b604051611386929190614548565b5f6040518083038185875af1925050503d805f81146113c0576040519150601f19603f3d011682016040523d82523d5f602084013e6113c5565b606091505b5091509150816113f8578051156113df5780518082602001fd5b604051631d8fb90d60e21b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000815111611446576005850180546001810182555f91825260209091200161144082826145a2565b50611487565b604080515f602082015260058701910160408051601f1981840301815291905281546001810183555f92835260209092209091019061148590826145a2565b505b5050600101611253565b50898b61ffff167f6f483abfdcf4f122955fd235993c09897d9190ed80964fe5cb76daac8a7a8b878b8b8b8b8b8b6040516114d196959493929190614718565b60405180910390a35050505050505050505050565b61ffff84165f9081526003602052604081208054600160d01b900460ff1661152157604051632e53afcd60e01b815260040160405180910390fd5b604051630b704dbd60e11b81525f9073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611560908a908a908a908a906004016147c7565b602060405180830381865af415801561157b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159f91906147f5565b5f81815260026020819052604090912090810154919250906001600160a01b0316336001600160a01b0316146115e857604051637365858560e01b815260040160405180910390fd5b805465ffffffffffff1615801561160d57508054600160301b900465ffffffffffff16155b1561162b5760405163f661f4bf60e01b815260040160405180910390fd5b8054600160601b900465ffffffffffff1615158061165857508054600160901b900465ffffffffffff1615155b156116765760405163b831530960e01b815260040160405180910390fd5b80547fffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff16600160901b4365ffffffffffff160217815560405182907f8eb4cfeba12ece86fc1590773502e55423b37db556543430337376b30d27c42b905f90a2509695505050505050565b600b545f9060ff1661170657604051630889b5b960e31b815260040160405180910390fd5b50630a85bd0160e11b95945050505050565b5f828152600460205260408120600181015483106117495760405163472e61bd60e01b815260040160405180910390fd5b80600101838154811061175e5761175e6144f2565b5f918252602090912001546001600160a01b0316949350505050565b611782612f03565b61178d82825f612f23565b5050565b5f81815260026020526040812080546001820154839283928392839283928392600160c01b90910465ffffffffffff169063ffffffff166117d28183614820565b60019390930154919b909a5065ffffffffffff909216985063ffffffff640100000000820481169850600160401b820481169750600160601b820481169650600160801b909104169350915050565b5f61182a612f03565b50600954600160a01b900461ffff166118438183612fde565b60098054600161ffff600160a01b808404821692909201160261ffff60a01b199091161790555b919050565b611877612f03565b6001600160a01b03811661189e57604051636e7e8feb60e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040517f8be32e66bcd4d1783b05affa4e89ba5fc5e37bea009c896d862c795acf9e842b905f90a250565b5f818152600460205260409020600301805460609190610f3b906144ba565b600b545f9060ff1661192b57604051630889b5b960e31b815260040160405180910390fd5b61ffff86165f9081526003602052604090208054600160d01b900460ff1661196657604051632e53afcd60e01b815260040160405180910390fd5b611971335b886125fd565b61198e57604051637079d1b960e11b815260040160405180910390fd5b61199733610eae565b156119b5576040516334d52f6b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008511156119f657604051631c3bc5e360e31b815260040160405180910390fd5b60028101546001820154604051630b704dbd60e11b815263ffffffff831692600160801b900460ff16919073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611a51908d908d908d908d906004016147c7565b602060405180830381865af4158015611a6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9091906147f5565b5f818152600260205260409020805491965090600160f01b900461ffff1615611acc5760405163fc0e49ff60e01b815260040160405180910390fd5b6003850180546001810182555f91825260209091200186905560048101611af48a8c8361483e565b50805461ffff8c16600160f01b027dffffffffffffffffffffffffffffffffffffffffffffffff00000000000090911665ffffffffffff43161717815560ff8316611b3f575f611b41565b435b815465ffffffffffff91909116600160c01b027fffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff90911617815560ff8316611b89575f611b9b565b5f828152600460205260409020600101545b60018201805473ffffffff000000000000000000000000ffffffff1916600160801b63ffffffff9384160263ffffffff191617918616919091179055600281018054336001600160a01b031990911617905560068101611bfb88826145a2565b506003810188905561ffff8b1633877fb5856a9700a7e851456d3a16348b4ae0fbb11b06ac0af8dbe8e8652c57cc4cbd8d8d43611c3e63ffffffff8c16826148f7565b8f8f604051611c529695949392919061490a565b60405180910390a4505050505095945050505050565b600a5460609060ff831610611c905760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff1681548110611ca657611ca66144f2565b905f5260205f2090600202016001018054610f3b906144ba565b611cc8612f03565b60095461ffff600160a01b90910481169082161115611cfa57604051633a8de3a560e11b815260040160405180910390fd5b600a5460ff841610611d1f5760405163e2190a4d60e01b815260040160405180910390fd5b5f600a8460ff1681548110611d3657611d366144f2565b5f9182526020909120600290910201805490915060ff841610611d6c5760405163321decd960e21b815260040160405180910390fd5b81815f018460ff1681548110611d8457611d846144f2565b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055507fbab75fb33733fb786b1bd731a4e31deb8b360f52fdc6e437843f5803cd84141d848484604051611e019392919060ff938416815291909216602082015261ffff91909116604082015260600190565b60405180910390a150505050565b5f82815260026020526040902060050180546060919083908110611e3557611e356144f2565b905f5260205f20018054611e48906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611e74906144ba565b8015611ebf5780601f10611e9657610100808354040283529160200191611ebf565b820191905f5260205f20905b815481529060010190602001808311611ea257829003601f168201915b5050505050905092915050565b611ed4612f03565b6001600160a01b0382165f81815260056020526040808220805460ff191685151590811790915590519092917f921341769c2075d1ae425396063d5ab65ff5006c4bc0bd0821e50ce51fb6012391a35050565b611f2f612f03565b600a5460ff821610611f545760405163e2190a4d60e01b815260040160405180910390fd5b600a8160ff1681548110611f6a57611f6a6144f2565b5f9182526020822060029091020190611f838282613587565b611f90600183015f6135a9565b505060405160ff8216907fdb9bcd47830726db0b83034aa4bc1b92414a20b1790a2f63434fe60bd243d9e0905f90a250565b61178d82338360405180602001604052805f81525061309d565b611fe4612e1a565b600b5460ff1615612008576040516315ea064b60e31b815260040160405180910390fd5b600954600160a01b900461ffff165f5b8251811015612089575f6001600160a01b031683828151811061203d5761203d6144f2565b6020026020010151602001516001600160a01b0316146120815761207a8284838151811061206d5761206d6144f2565b6020026020010151612fde565b8160010191505b600101612018565b506009805461ffff909216600160a01b0261ffff60a01b1990921691909117905550565b5f818152600260205260408120805465ffffffffffff161580156120df57508054600160301b900465ffffffffffff16155b80156120f957508054600160601b900465ffffffffffff16155b801561211357508054600160901b900465ffffffffffff16155b1561212057505f92915050565b8054600160601b900465ffffffffffff161561213f5750600792915050565b8054600160901b900465ffffffffffff161561215e5750600292915050565b8054600160301b900465ffffffffffff161561217d5750600692915050565b600181015481545f916121a79163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff1690504381106121c2575060039392505050565b6121cb84613280565b15806121dd57506121db8461331f565b155b156121ec575060049392505050565b5060059392505050565b6121fe612f03565b6001600160a01b0381165f9081526005602052604090205460ff1615612237576040516334d52f6b60e01b815260040160405180910390fd5b61178d82826001612f23565b61224b612e1a565b604080515f8082526020820190925261226691839190611092565b50565b612271612f03565b81515f03612292576040516333a0807f60e21b815260040160405180910390fd5b60ff825111156122b5576040516350cc0e8d60e01b815260040160405180910390fd5b60ff815111156122d85760405163d315c6bd60e01b815260040160405180910390fd5b5f8381526004602052604090206002016122f283826145a2565b505f83815260046020526040902060030161230d82826145a2565b50827f4c6d3d4a776b1458bbd518e75903a3f27a0c6f4597b10882784aa64769d56c718360405161233e919061370d565b60405180910390a2505050565b61238c84338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061309d92505050565b50505050565b600a81815481106123a1575f80fd5b905f5260205f2090600202015f915090508060010180546123c1906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546123ed906144ba565b80156124385780601f1061240f57610100808354040283529160200191612438565b820191905f5260205f20905b81548152906001019060200180831161241b57829003601f168201915b5050505050905081565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091525061ffff9081165f908152600360209081526040918290208251610120810184526001820154815260029091015463ffffffff808216938301939093526401000000008104831693820193909352600160401b830482166060820152600160601b8304841660808201526e010000000000000000000000000000830490931660a084015260ff600160801b8304811660c08501527101000000000000000000000000000000000083041660e0840152600160901b9091041661010082015290565b5f6060805f5f5f606061255c613399565b6125646133ca565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b612595612e1a565b61178d8282612e4b565b61ffff82165f90815260036020819052604082209081015483106125d65760405163472e61bd60e01b815260040160405180910390fd5b8060030183815481106125eb576125eb6144f2565b905f5260205f20015491505092915050565b61ffff81165f908152600360205260408120600101548161261e85836128a0565b905065ffffffffffff811615158061263657505f1982145b95945050505050565b600a5460609060ff8316106126675760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff168154811061267d5761267d6144f2565b5f9182526020918290206002909102018054604080518285028101850190915281815292830182828015610fb257602002820191905f5260205f20905f905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116126bc575094979650505050505050565b612707612f03565b600761178d82826145a2565b61271b612f03565b600a80546001810182555f919091528151805183926002027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80191612765918391602001906135e0565b506020820151600182019061277a90826145a2565b5050815160208301516040517fb56a1edd5f36655e5ec0dfaaee335db8dce67084b7e03de2f6771824f68d356593506127b492919061494e565b60405180910390a150565b6127c7612f03565b61ffff81165f90815260036020526040812054600160d01b900460ff161515900361280557604051632e53afcd60e01b815260040160405180910390fd5b61ffff81165f8181526003602052604080822080547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169055517ffb1d94dcf467f70febf412166aaa551737afd946ba6a4b4eac970aaf28a7e74f9190a250565b600b545f9060ff1661288b57604051630889b5b960e31b815260040160405180910390fd5b5063bc197c8160e01b98975050505050505050565b5f8181526004602090815260408083206001600160a01b0386168452918290528220548083036128d4575f92505050610f16565b816001016001826128e59190614972565b815481106128f5576128f56144f2565b5f91825260209091200154600160a01b900465ffffffffffff1695945050505050565b5f818152600260205260409020600401805460609190610f3b906144ba565b60078054610fcb906144ba565b600b545f9060ff1661296957604051630889b5b960e31b815260040160405180910390fd5b604051630b704dbd60e11b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a906129a69089908990899089906004016147c7565b602060405180830381865af41580156129c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e591906147f5565b61ffff87165f908152600360205260409020805491925090600160d01b900460ff16612a2457604051632e53afcd60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000851115612a6557604051631c3bc5e360e31b815260040160405180910390fd5b612a6e33610eae565b15612a8c576040516334d52f6b60e01b815260040160405180910390fd5b612a953361196b565b612ab257604051637079d1b960e11b815260040160405180910390fd5b5f8281526002602052604090208054600160301b900465ffffffffffff16151580612aec57508054600160601b900465ffffffffffff1615155b15612b0a5760405163fc0e49ff60e01b815260040160405180910390fd5b8054600160901b900465ffffffffffff1615612b3957604051632ec3fe1560e11b815260040160405180910390fd5b8154604051633881b32960e01b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__91633881b32991612b8b918c918c918c9130918d91600160a01b90910465ffffffffffff1690600401614985565b5f6040518083038186803b158015612ba1575f5ffd5b505af4158015612bb3573d5f5f3e3d5ffd5b50508254600160f01b900461ffff165f039150612be69050576003820180546001810182555f9182526020909120018390555b600281018054336001600160a01b031990911617905580547dffffffffffffffffffffffffffffffffffff000000000000ffffffffffff16600160301b4365ffffffffffff16027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160f01b61ffff8a160217815560048101612c6b87898361483e565b5060068101612c7a85826145a2565b506003810185905581546040516326a8b78760e11b81525f916001600160a01b031690634d516f0e90612cb99033908d908d908d908d906004016149d1565b6020604051808303815f875af1158015612cd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cf99190614a0f565b905080612d195760405163382654b960e21b815260040160405180910390fd5b61ffff8916336001600160a01b03167f98e1e52af9c2155b4c2b4844cdccf64c85cb13dd804231d177ef6fea4325d4058a8a8a8a604051612d5d9493929190614a2a565b60405180910390a350505095945050505050565b612d79612f03565b6001600160a01b038116612da057604051636e7e8feb60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f9060ff16612de757604051630889b5b960e31b815260040160405180910390fd5b5063f23a6e6160e01b5b9695505050505050565b5f818152600260205260409020600601805460609190610f3b906144ba565b612e24335f6128a0565b65ffffffffffff165f0361109857604051630eaa87a560e21b815260040160405180910390fd5b336001600160a01b03831614612e7257612e665f335f612f23565b612e725f836001612f23565b805115612ef2575f5b8151811015612ef057600a828281518110612e9857612e986144f2565b60209081029190910181015182546001810184555f9384529282902081518051929460020290910192612ed0928492909101906135e0565b5060208201516001820190612ee590826145a2565b505050600101612e7b565b505b5050600b805460ff19166001179055565b3330146110985760405163e890ccbf60e01b815260040160405180910390fd5b6040516393926d2560e01b8152600480820152602481018490526001600160a01b0383166044820152811515606482015273__$4fdb155c07e189d6709d928ad749b812b4$__906393926d25906084015f6040518083038186803b158015612f89575f5ffd5b505af4158015612f9b573d5f5f3e3d5ffd5b50505050801515826001600160a01b0316847f294507a8f5830b538faef39fbdd28f1164f27c8338a32fc7b47ddf82e4c8d9e460405160405180910390a4505050565b60405163b9778ecb60e01b815273__$4fdb155c07e189d6709d928ad749b812b4$__9063b9778ecb9061303f90600390600590879087907f000000000000000000000000000000000000000000000000000000000000000090600401614a60565b5f6040518083038186803b158015613055575f5ffd5b505af4158015613067573d5f5f3e3d5ffd5b505060405161ffff851692507f284812f41d73696d76ff026c35ebc1a8e8bf24544551c55dd0877334dca88a5691505f90a25050565b5f848152600260205260409020805465ffffffffffff1615806130cf57508054600160601b900465ffffffffffff1615155b806130e957508054600160901b900465ffffffffffff1615155b8061310357508054600160301b900465ffffffffffff1615155b8061313d57506001810154815443916131339163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff16105b1561315b576040516322024acd60e21b815260040160405180910390fd5b8054600160f01b900461ffff1661317285826125fd565b61318f57604051637079d1b960e11b815260040160405180910390fd5b5f61319982612442565b5190505f1981148015906131cd57508254600160c01b900465ffffffffffff166131c387836128a0565b65ffffffffffff16115b156131eb5760405163347f49ed60e11b815260040160405180910390fd5b6001600160a01b0386165f90815260078401602052604090205460ff16156132265760405163c9e3c8d960e01b815260040160405180910390fd5b6132318787876133f7565b8460ff1687876001600160a01b03167f5be2678cab71c7d94235767eb1df3c57673f19e805cdc0edbd2e74854ae9f0f98760405161326f919061370d565b60405180910390a450505050505050565b5f818152600260205260408120805482906132a590600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff161580612636575060018301546064906132f29063ffffffff600160601b8204811691600160401b900416614af0565b63ffffffff166133029190614b0c565b60c08301516133149060ff1683614b0c565b111595945050505050565b5f8181526002602052604081208054829061334490600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff1615806126365750600183015461338790606490600160401b900463ffffffff16614b0c565b60e08301516133149060ff1683614b0c565b60606133c57f00000000000000000000000000000000000000000000000000000000000000005f61347a565b905090565b60606133c57f0000000000000000000000000000000000000000000000000000000000000000600161347a565b604051630499d27d60e11b815260026004820152602481018490526001600160a01b038316604482015260ff8216606482015273__$4fdb155c07e189d6709d928ad749b812b4$__90630933a4fa906084015f6040518083038186803b15801561345f575f5ffd5b505af4158015613471573d5f5f3e3d5ffd5b50505050505050565b606060ff83146134945761348d83613523565b9050610f16565b8180546134a0906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546134cc906144ba565b80156135175780601f106134ee57610100808354040283529160200191613517565b820191905f5260205f20905b8154815290600101906020018083116134fa57829003601f168201915b50505050509050610f16565b60605f61352f83613560565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610f1657604051632cd44ac360e21b815260040160405180910390fd5b5080545f8255600f0160109004905f5260205f20908101906122669190613686565b5080546135b5906144ba565b5f825580601f106135c4575050565b601f0160209004905f5260205f20908101906122669190613686565b828054828255905f5260205f2090600f01601090048101928215613676579160200282015f5b8382111561364657835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613606565b80156136745782816101000a81549061ffff0219169055600201602081600101049283019260010302613646565b505b50613682929150613686565b5090565b5b80821115613682575f8155600101613687565b5f602082840312156136aa575f5ffd5b81356001600160e01b0319811681146136c1575f5ffd5b9392505050565b5f602082840312156136d8575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6136c160208301846136df565b803561ffff8116811461186a575f5ffd5b5f60208284031215613740575f5ffd5b6136c18261371f565b5f5f83601f840112613759575f5ffd5b5081356001600160401b0381111561376f575f5ffd5b6020830191508360208260051b8501011115613789575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156137a7575f5ffd5b6137b08961371f565b97506020890135965060408901356001600160401b038111156137d1575f5ffd5b6137dd8b828c01613749565b90975095505060608901356001600160401b038111156137fb575f5ffd5b6138078b828c01613749565b90955093505060808901356001600160401b03811115613825575f5ffd5b6138318b828c01613749565b999c989b5096995094979396929594505050565b5f5f83601f840112613855575f5ffd5b5081356001600160401b0381111561386b575f5ffd5b602083019150836020828501011115613789575f5ffd5b5f5f5f5f60608587031215613895575f5ffd5b61389e8561371f565b935060208501356001600160401b038111156138b8575f5ffd5b6138c487828801613845565b9598909750949560400135949350505050565b6001600160a01b0381168114612266575f5ffd5b5f5f5f5f5f608086880312156138ff575f5ffd5b853561390a816138d7565b9450602086013561391a816138d7565b93506040860135925060608601356001600160401b0381111561393b575f5ffd5b61394788828901613845565b969995985093965092949392505050565b5f5f60408385031215613969575f5ffd5b50508035926020909101359150565b5f5f60408385031215613989575f5ffd5b82359150602083013561399b816138d7565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b03811182821017156139dd576139dd6139a6565b60405290565b604051608081016001600160401b03811182821017156139dd576139dd6139a6565b604080519081016001600160401b03811182821017156139dd576139dd6139a6565b604051601f8201601f191681016001600160401b0381118282101715613a4f57613a4f6139a6565b604052919050565b5f5f6001600160401b03841115613a7057613a706139a6565b50601f8301601f1916602001613a8581613a27565b915050828152838383011115613a99575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112613abe575f5ffd5b6136c183833560208501613a57565b803563ffffffff8116811461186a575f5ffd5b803560ff8116811461186a575f5ffd5b5f6101208284031215613b01575f5ffd5b613b096139ba565b823581529050613b1b60208301613acd565b6020820152613b2c60408301613acd565b6040820152613b3d60608301613acd565b6060820152613b4e6080830161371f565b6080820152613b5f60a0830161371f565b60a0820152613b7060c08301613ae0565b60c0820152613b8160e08301613ae0565b60e0820152613b936101008301613acd565b61010082015292915050565b5f6101808284031215613bb0575f5ffd5b613bb86139e3565b905081356001600160401b03811115613bcf575f5ffd5b613bdb84828501613aaf565b8252506020820135613bec816138d7565b602082015260408201356001600160401b03811115613c09575f5ffd5b8201601f81018413613c19575f5ffd5b613c2884823560208401613a57565b604083015250613c3b8360608401613af0565b606082015292915050565b5f60208284031215613c56575f5ffd5b81356001600160401b03811115613c6b575f5ffd5b613c7784828501613b9f565b949350505050565b5f60208284031215613c8f575f5ffd5b81356136c1816138d7565b5f5f5f5f5f60808688031215613cae575f5ffd5b613cb78661371f565b945060208601356001600160401b03811115613cd1575f5ffd5b613cdd88828901613845565b9095509350506040860135915060608601356001600160401b03811115613d02575f5ffd5b613d0e88828901613aaf565b9150509295509295909350565b5f60208284031215613d2b575f5ffd5b6136c182613ae0565b5f5f5f60608486031215613d46575f5ffd5b613d4f84613ae0565b9250613d5d60208501613ae0565b9150613d6b6040850161371f565b90509250925092565b8015158114612266575f5ffd5b5f5f60408385031215613d92575f5ffd5b8235613d9d816138d7565b9150602083013561399b81613d74565b5f5f60408385031215613dbe575f5ffd5b82359150613dce60208401613ae0565b90509250929050565b5f6001600160401b03821115613def57613def6139a6565b5060051b60200190565b5f60208284031215613e09575f5ffd5b81356001600160401b03811115613e1e575f5ffd5b8201601f81018413613e2e575f5ffd5b8035613e41613e3c82613dd7565b613a27565b8082825260208201915060208360051b850101925086831115613e62575f5ffd5b602084015b83811015613ea25780356001600160401b03811115613e84575f5ffd5b613e9389602083890101613b9f565b84525060209283019201613e67565b509695505050505050565b6020810160088310613ecd57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f60608486031215613ee5575f5ffd5b8335925060208401356001600160401b03811115613f01575f5ffd5b613f0d86828701613aaf565b92505060408401356001600160401b03811115613f28575f5ffd5b613f3486828701613aaf565b9150509250925092565b5f5f5f5f60608587031215613f51575f5ffd5b84359350613f6160208601613ae0565b925060408501356001600160401b03811115613f7b575f5ffd5b613f8787828801613845565b95989497509550505050565b8051825263ffffffff602082015116602083015263ffffffff60408201511660408301526060810151613fce606084018263ffffffff169052565b506080810151613fe4608084018261ffff169052565b5060a0810151613ffa60a084018261ffff169052565b5060c081015161400f60c084018260ff169052565b5060e081015161402460e084018260ff169052565b5061010081015161403e61010084018263ffffffff169052565b505050565b6101208101610f168284613f93565b60ff60f81b8816815260e060208201525f61407060e08301896136df565b828103604084015261408281896136df565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156140d75783518352602093840193909201916001016140b9565b50909b9a5050505050505050505050565b5f604082840312156140f8575f5ffd5b614100613a05565b905081356001600160401b03811115614117575f5ffd5b8201601f81018413614127575f5ffd5b8035614135613e3c82613dd7565b8082825260208201915060208360051b850101925086831115614156575f5ffd5b6020840193505b8284101561417f5761416e8461371f565b82526020938401939091019061415d565b845250505060208201356001600160401b0381111561419c575f5ffd5b6141a884828501613aaf565b60208301525092915050565b5f5f604083850312156141c5575f5ffd5b82356141d0816138d7565b915060208301356001600160401b038111156141ea575f5ffd5b8301601f810185136141fa575f5ffd5b8035614208613e3c82613dd7565b8082825260208201915060208360051b850101925087831115614229575f5ffd5b602084015b838110156142695780356001600160401b0381111561424b575f5ffd5b61425a8a6020838901016140e8565b8452506020928301920161422e565b50809450505050509250929050565b5f5f60408385031215614289575f5ffd5b6142928361371f565b946020939093013593505050565b5f5f604083850312156142b1575f5ffd5b82356142bc816138d7565b9150613dce6020840161371f565b5f8151808452602084019350602083015f5b828110156142fe57815161ffff168652602095860195909101906001016142dc565b5093949350505050565b602081525f6136c160208301846142ca565b5f6020828403121561432a575f5ffd5b81356001600160401b0381111561433f575f5ffd5b613c7784828501613aaf565b5f6020828403121561435b575f5ffd5b81356001600160401b03811115614370575f5ffd5b613c77848285016140e8565b5f5f5f5f5f5f5f5f60a0898b031215614393575f5ffd5b883561439e816138d7565b975060208901356143ae816138d7565b965060408901356001600160401b038111156143c8575f5ffd5b6143d48b828c01613749565b90975095505060608901356001600160401b038111156143f2575f5ffd5b6143fe8b828c01613749565b90955093505060808901356001600160401b0381111561441c575f5ffd5b6138318b828c01613845565b5f5f60408385031215614439575f5ffd5b8235614292816138d7565b5f5f5f5f5f5f60a08789031215614459575f5ffd5b8635614464816138d7565b95506020870135614474816138d7565b9450604087013593506060870135925060808701356001600160401b0381111561449c575f5ffd5b6144a889828a01613845565b979a9699509497509295939492505050565b600181811c908216806144ce57607f821691505b6020821081036144ec57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e1984360301811261451b575f5ffd5b8301803591506001600160401b03821115614534575f5ffd5b602001915036819003821315613789575f5ffd5b818382375f9101908152919050565b601f82111561403e57805f5260205f20601f840160051c8101602085101561457c5750805b601f840160051c820191505b8181101561459b575f8155600101614588565b5050505050565b81516001600160401b038111156145bb576145bb6139a6565b6145cf816145c984546144ba565b84614557565b6020601f821160018114614601575f83156145ea5750848201515b5f19600385901b1c1916600184901b17845561459b565b5f84815260208120601f198516915b828110156146305787850151825560209485019460019092019101614610565b508482101561464d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208501945060208460051b820101835f5b8681101561470c57838303601f19018852813536879003601e190181126146c0575f5ffd5b86016020810190356001600160401b038111156146db575f5ffd5b8036038213156146e9575f5ffd5b6146f485828461465c565b60209a8b019a9095509390930192505060010161469b565b50909695505050505050565b606080825281018690525f8760808301825b8981101561475a57823561473d816138d7565b6001600160a01b031682526020928301929091019060010161472a565b5083810360208501528681527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871115614792575f5ffd5b8660051b91508188602083013701828103602090810160408501526147ba9082018587614684565b9998505050505050505050565b61ffff85168152606060208201525f6147e460608301858761465c565b905082604083015295945050505050565b5f60208284031215614805575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff8181168382160190811115610f1657610f1661480c565b6001600160401b03831115614855576148556139a6565b6148698361486383546144ba565b83614557565b5f601f84116001811461489a575f85156148835750838201355b5f19600387901b1c1916600186901b17835561459b565b5f83815260208120601f198716915b828110156148c957868501358255602094850194600190920191016148a9565b50868210156148e5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610f1657610f1661480c565b60c081525f60c082015260e060208201525f61492a60e08301888a61465c565b86604084015285606084015284608084015282810360a08401526147ba81856136df565b604081525f61496060408301856142ca565b828103602084015261263681856136df565b81810381811115610f1657610f1661480c565b61ffff8716815260a060208201525f6149a260a08301878961465c565b6001600160a01b0395909516604083015250606081019290925265ffffffffffff166080909101529392505050565b6001600160a01b038616815261ffff85166020820152608060408201525f6149fd60808301858761465c565b90508260608301529695505050505050565b5f60208284031215614a1f575f5ffd5b81516136c181613d74565b606081525f614a3d60608301868861465c565b8460208401528281036040840152614a5581856136df565b979650505050505050565b85815284602082015261ffff8416604082015260a060608201525f835161018060a0840152614a936102208401826136df565b90506001600160a01b0360208601511660c08401526040850151609f198483030160e0850152614ac382826136df565b9150506060850151614ad9610100850182613f93565b506001600160a01b03841660808401529050612df1565b63ffffffff8181168382160190811115610f1657610f1661480c565b8082028115828204841417610f1657610f1661480c56fea26469706673582212202c4ff00d8c9daf4825503ec9fce788db6d3149dde1a0641a83b851f46afb199b64736f6c634300081e0033","sourceMap":"3230:37119:108:-:0;;;;;5858:32;;;-1:-1:-1;;;;5858:32:108;-1:-1:-1;;;5858:32:108;;;7816:1095;;;;;;;;3230:37119;7816:1095;;;;;;;;;;:::i;:::-;8108:5;8115:9;33361:15;;;;;;;;;;;;-1:-1:-1;;;33361:15:108;;;;;33296:87;8115:9;3501:45:75;:4;3532:13;3501:30;:45::i;:::-;3493:53;;3567:51;:7;3601:16;3567:33;:51::i;:::-;3556:62;;3642:22;;;;;;;;;;3628:36;;3691:25;;;;;;3674:42;;3744:13;3727:30;;3792:23;4326:11;;4339:14;;4304:80;;;2079:95;4304:80;;;5954:25:180;5995:18;;;5988:34;;;;6038:18;;;6031:34;4355:13:75;6081:18:180;;;6074:34;4378:4:75;6124:19:180;;;6117:61;4268:7:75;;5926:19:180;;4304:80:75;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;;3792:23;3767:48;;-1:-1:-1;;3847:4:75;3825:27;;8140:19:108;;8163:1:::1;8140:24:::0;8136:58:::1;;8173:21;;-1:-1:-1::0;;;8173:21:108::1;;;;;;;;;;;8136:58;8208:18;8230:1;8208:23:::0;8204:70:::1;;8240:34;;-1:-1:-1::0;;;8240:34:108::1;;;;;;;;;;;8204:70;8288:20;8312:1;8288:25:::0;8284:75:::1;;8322:37;;-1:-1:-1::0;;;8322:37:108::1;;;;;;;;;;;8284:75;8373:20;8397:1;8373:25:::0;8369:74:::1;;8407:36;;-1:-1:-1::0;;;8407:36:108::1;;;;;;;;;;;8369:74;8454:40;4235:17;735:10:64::0;8489:4:108::1;8454:8;:40::i;:::-;8572:4;:12;8579:5:::0;8572:4;:12:::1;:::i;:::-;-1:-1:-1::0;8594:3:108::1;:10;8600:4:::0;8594:3;:10:::1;:::i;:::-;-1:-1:-1::0;8614:40:108::1;::::0;;;8664:45:::1;::::0;;;8719:44:::1;::::0;;;-1:-1:-1;;;;;8773:35:108;::::1;;::::0;8831:12:::1;8818:25;::::0;8859:45:::1;::::0;::::1;::::0;::::1;::::0;8887:4:::1;::::0;8894::::1;::::0;8900:3:::1;::::0;8859:45:::1;:::i;:::-;;;;;;;;7816:1095:::0;;;;;;3230:37119;;2893:342:70;2989:11;3038:4;3022:5;3016:19;:26;3012:217;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3012:217;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1390:66:70;;-1:-1:-1;3012:217:70;2893:342;;;;:::o;27253:192:108:-;27336:55;;-1:-1:-1;;;27336:55:108;;27360:5;27336:55;;;6467:25:180;6508:18;;;6501:34;;;-1:-1:-1;;;;;6571:32:180;;6551:18;;;6544:60;6647:14;;6640:22;6620:18;;;6613:50;27336:15:108;;:23;;6439:19:180;;27336:55:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27431:6;27406:32;;27422:7;-1:-1:-1;;;;;27406:32:108;27414:6;27406:32;;;;;;;;;;27253:192;;;:::o;1708:288:70:-;1773:11;1796:17;1822:3;1796:30;;1854:4;1840;:11;:18;1836:74;;;1895:3;1881:18;;-1:-1:-1;;;1881:18:70;;;;;;;;:::i;:::-;;;;;;;;1836:74;1976:11;;1959:13;1976:4;1959:13;:::i;:::-;1951:36;;1708:288;-1:-1:-1;;;1708:288:70:o;14:127:180:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:180;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:180;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:180;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:180;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:180:o;874:1068::-;1009:6;1017;1025;1033;1041;1049;1102:3;1090:9;1081:7;1077:23;1073:33;1070:53;;;1119:1;1116;1109:12;1070:53;1146:16;;-1:-1:-1;;;;;1174:30:180;;1171:50;;;1217:1;1214;1207:12;1171:50;1240:61;1293:7;1284:6;1273:9;1269:22;1240:61;:::i;:::-;1347:2;1332:18;;1326:25;1230:71;;-1:-1:-1;1326:25:180;-1:-1:-1;;;;;;1363:32:180;;1360:52;;;1408:1;1405;1398:12;1360:52;1431:63;1486:7;1475:8;1464:9;1460:24;1431:63;:::i;:::-;1556:2;1541:18;;1535:25;1650:2;1635:18;;1629:25;1746:3;1731:19;;1725:26;1822:3;1807:19;;1801:26;1421:73;;-1:-1:-1;1535:25:180;;-1:-1:-1;1629:25:180;-1:-1:-1;1725:26:180;-1:-1:-1;1801:26:180;-1:-1:-1;;;;;;1858:33:180;;1846:46;;1836:74;;1906:1;1903;1896:12;1836:74;1929:7;1919:17;;;874:1068;;;;;;;;:::o;1947:380::-;2026:1;2022:12;;;;2069;;;2090:61;;2144:4;2136:6;2132:17;2122:27;;2090:61;2197:2;2189:6;2186:14;2166:18;2163:38;2160:161;;2243:10;2238:3;2234:20;2231:1;2224:31;2278:4;2275:1;2268:15;2306:4;2303:1;2296:15;2160:161;;1947:380;;;:::o;2458:518::-;2560:2;2555:3;2552:11;2549:421;;;2596:5;2593:1;2586:16;2640:4;2637:1;2627:18;2710:2;2698:10;2694:19;2691:1;2687:27;2681:4;2677:38;2746:4;2734:10;2731:20;2728:47;;;-1:-1:-1;2769:4:180;2728:47;2824:2;2819:3;2815:12;2812:1;2808:20;2802:4;2798:31;2788:41;;2879:81;2897:2;2890:5;2887:13;2879:81;;;2956:1;2942:16;;2923:1;2912:13;2879:81;;;2883:3;;2549:421;2458:518;;;:::o;3152:1299::-;3272:10;;-1:-1:-1;;;;;3294:30:180;;3291:56;;;3327:18;;:::i;:::-;3356:97;3446:6;3406:38;3438:4;3432:11;3406:38;:::i;:::-;3400:4;3356:97;:::i;:::-;3502:4;3533:2;3522:14;;3550:1;3545:649;;;;4238:1;4255:6;4252:89;;;-1:-1:-1;4307:19:180;;;4301:26;4252:89;-1:-1:-1;;3109:1:180;3105:11;;;3101:24;3097:29;3087:40;3133:1;3129:11;;;3084:57;4354:81;;3515:930;;3545:649;2405:1;2398:14;;;2442:4;2429:18;;-1:-1:-1;;3581:20:180;;;3699:222;3713:7;3710:1;3707:14;3699:222;;;3795:19;;;3789:26;3774:42;;3902:4;3887:20;;;;3855:1;3843:14;;;;3729:12;3699:222;;;3703:3;3949:6;3940:7;3937:19;3934:201;;;4010:19;;;4004:26;-1:-1:-1;;4093:1:180;4089:14;;;4105:3;4085:24;4081:37;4077:42;4062:58;4047:74;;3934:201;-1:-1:-1;;;;4181:1:180;4165:14;;;4161:22;4148:36;;-1:-1:-1;3152:1299:180:o;4456:739::-;4506:3;4547:5;4541:12;4576:36;4602:9;4576:36;:::i;:::-;4621:19;;;4671:1;4656:17;;4682:150;;;;4846:1;4841:348;;;;4649:540;;4682:150;4745:3;4741:8;4730:9;4726:24;4719:4;4714:3;4710:14;4703:48;4817:4;4805:6;4798:14;4791:22;4788:1;4784:30;4779:3;4775:40;4771:51;4764:58;;4682:150;;4841:348;4872:5;4869:1;4862:16;4919:4;4916:1;4906:18;4946:1;4960:177;4974:6;4971:1;4968:13;4960:177;;;5071:7;5065:14;5058:4;5054:1;5049:3;5045:11;5041:22;5034:46;5121:1;5112:7;5108:15;5097:26;;4996:4;4993:1;4989:12;4984:17;;4960:177;;;5161:11;;5174:4;5157:22;;-1:-1:-1;;4649:540:180;;;;4456:739;;;;:::o;5200:490::-;-1:-1:-1;;;;;5419:32:180;;5401:51;;5488:2;5483;5468:18;;5461:30;;;-1:-1:-1;;5514:53:180;;5548:18;;5540:6;5514:53;:::i;:::-;5615:9;5607:6;5603:22;5598:2;5587:9;5583:18;5576:50;5643:41;5677:6;5669;5643:41;:::i;:::-;5635:49;5200:490;-1:-1:-1;;;;;;5200:490:180:o;6674:418::-;6823:2;6812:9;6805:21;6786:4;6855:6;6849:13;6898:6;6893:2;6882:9;6878:18;6871:34;6957:6;6952:2;6944:6;6940:15;6935:2;6924:9;6920:18;6914:50;7013:1;7008:2;6999:6;6988:9;6984:22;6980:31;6973:42;7083:2;7076;7072:7;7067:2;7059:6;7055:15;7051:29;7040:9;7036:45;7032:54;7024:62;;;6674:418;;;;:::o;7097:297::-;7215:12;;7262:4;7251:16;;;7245:23;;7215:12;7280:16;;7277:111;;;-1:-1:-1;;7354:4:180;7350:17;;;;7347:1;7343:25;7339:38;7328:50;;7097:297;-1:-1:-1;7097:297:180:o;:::-;3230:37119:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{"src/libraries/Checks.sol":{"Checks":[{"start":7347,"length":20},{"start":8612,"length":20},{"start":12537,"length":20},{"start":13003,"length":20}]},"src/libraries/PowersUtilities.sol":{"PowersUtilities":[{"start":643,"length":20},{"start":14039,"length":20},{"start":14190,"length":20},{"start":15277,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436106103d0575f3560e01c8063685b824a11610203578063a375109811610122578063eac989f8116100b7578063f0f4426011610087578063f2a0bb751161006d578063f2a0bb7514610e42578063f6226e7c14610e61578063fe575a8714610e94575f5ffd5b8063f0f4426014610e04578063f23a6e6114610e23575f5ffd5b8063eac989f814610d6b578063ebef6d9714610d7f578063edf2a59614610d9e578063edfd2e8714610dd1575f5ffd5b8063bc197c81116100f2578063bc197c8114610ced578063cc5812cf14610d0c578063d902bf3a14610d2b578063e88efe3514610d4a575f5ffd5b8063a375109814610c6d578063afe2658b14610c8c578063b367cac014610ca0578063b4324dd314610cbf575f5ffd5b806384b0196e11610198578063918f867411610168578063918f867414610bef57806393d7dae514610c035780639a0435d414610c225780639b642de114610c4e575f5ffd5b806384b0196e14610b575780638973be0414610b7e5780638a4359e014610b9d5780639100808e14610bbc575f5ffd5b80637b3c71d3116101d35780637b3c71d314610aba5780637c1b553914610ad95780638180d29e14610b0c578063831af37914610b2b575f5ffd5b8063685b824a14610a4a5780637258883f14610a6957806375b238fc14610a8857806376ff757714610a9b575f5ffd5b80632d90fe5f116102ef578063455a4396116102845780635532f99b116102545780635532f99b146109ad57806356781388146109e05780635d7c9ce3146109ff578063666ca2d614610a1e575f5ffd5b8063455a4396146108735780634583476b14610892578063519fcfb01461096057806354fd4d501461097f575f5ffd5b80633ca7c02a116102bf5780633ca7c02a146107d95780633fc42d2e146107ed57806341bd157d1461080c578063438596321461082b575f5ffd5b80632d90fe5f1461075f5780632e2d82531461077e578063361262161461079d5780633b19e84a146107bc575f5ffd5b806312561b1a116103655780631d0b19e7116103355780631d0b19e71461069c5780632179e04e146106bb57806324bbb203146107215780632a97fa7714610740575f5ffd5b806312561b1a146105e1578063150b7a021461060e57806316e4cbf914610646578063199093bb1461067d575f5ffd5b806306fdde03116103a057806306fdde03146105005780630d7abeaa146105145780630de6a6011461052a5780631031bdb014610549575f5ffd5b806301ffc9a71461041d5780630398f05f14610451578063040b8c241461047d578063055dbe10146104d2575f5ffd5b36610419577f8e47b87b0ef542cdfa1659c551d88bad38aa7f452d2bbb349ab7530dfec8be8f33604080516001600160a01b0390921682523460208301520160405180910390a1005b5f5ffd5b348015610428575f5ffd5b5061043c61043736600461369a565b610ecb565b60405190151581526020015b60405180910390f35b34801561045c575f5ffd5b5061047061046b3660046136c8565b610f1c565b604051610448919061370d565b348015610488575f5ffd5b506104bb610497366004613730565b61ffff165f90815260036020526040902054600160a01b900465ffffffffffff1690565b60405165ffffffffffff9091168152602001610448565b3480156104dd575f5ffd5b50600954600160a01b900461ffff165b60405161ffff9091168152602001610448565b34801561050b575f5ffd5b50610470610fbe565b34801561051f575f5ffd5b5061052861104a565b005b348015610535575f5ffd5b50610528610544366004613790565b61109a565b348015610554575f5ffd5b506105ba610563366004613730565b61ffff165f81815260036020908152604091829020548251308184015280840194909452825180850384018152606090940190925282519201919091206001600160a01b038216929091600160d01b900460ff1690565b604080516001600160a01b0390941684526020840192909252151590820152606001610448565b3480156105ec575f5ffd5b506106006105fb366004613882565b6114e6565b604051908152602001610448565b348015610619575f5ffd5b5061062d6106283660046138eb565b6116e1565b6040516001600160e01b03199091168152602001610448565b348015610651575f5ffd5b50600954610665906001600160a01b031681565b6040516001600160a01b039091168152602001610448565b348015610688575f5ffd5b50610665610697366004613958565b611718565b3480156106a7575f5ffd5b506105286106b6366004613978565b61177a565b3480156106c6575f5ffd5b506106da6106d53660046136c8565b611791565b6040805165ffffffffffff909816885263ffffffff9687166020890152870194909452918416606086015283166080850152821660a08401521660c082015260e001610448565b34801561072c575f5ffd5b506104ed61073b366004613c46565b611821565b34801561074b575f5ffd5b5061052861075a366004613c7f565b61186f565b34801561076a575f5ffd5b506104706107793660046136c8565b6118e7565b348015610789575f5ffd5b50610600610798366004613c9a565b611906565b3480156107a8575f5ffd5b506104706107b7366004613d1b565b611c68565b3480156107c7575f5ffd5b506008546001600160a01b0316610665565b3480156107e4575f5ffd5b506106005f1981565b3480156107f8575f5ffd5b50610528610807366004613d34565b611cc0565b348015610817575f5ffd5b50610470610826366004613958565b611e0f565b348015610836575f5ffd5b5061043c610845366004613978565b5f8281526002602090815260408083206001600160a01b038516845260070190915290205460ff1692915050565b34801561087e575f5ffd5b5061052861088d366004613d81565b611ecc565b34801561089d575f5ffd5b5061090d6108ac3660046136c8565b5f908152600260208190526040909120805491810154600390910154600160f01b830461ffff169365ffffffffffff80851694600160301b8104821694600160601b8204831694600160901b909204909216926001600160a01b0390921691565b6040805161ffff909816885265ffffffffffff96871660208901529486169487019490945291841660608601529290921660808401526001600160a01b0390911660a083015260c082015260e001610448565b34801561096b575f5ffd5b5061052861097a366004613d1b565b611f27565b34801561098a575f5ffd5b5060408051808201909152600681526576302e362e3160d01b6020820152610470565b3480156109b8575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b3480156109eb575f5ffd5b506105286109fa366004613dad565b611fc2565b348015610a0a575f5ffd5b50610528610a19366004613df9565b611fdc565b348015610a29575f5ffd5b50610a3d610a383660046136c8565b6120ad565b6040516104489190613ead565b348015610a55575f5ffd5b50610528610a64366004613978565b6121f6565b348015610a74575f5ffd5b50610528610a83366004613c7f565b612243565b348015610a93575f5ffd5b506106005f81565b348015610aa6575f5ffd5b50610528610ab5366004613ed3565b612269565b348015610ac5575f5ffd5b50610528610ad4366004613f3e565b61234b565b348015610ae4575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610b17575f5ffd5b50610470610b263660046136c8565b612392565b348015610b36575f5ffd5b50610b4a610b45366004613730565b612442565b6040516104489190614043565b348015610b62575f5ffd5b50610b6b61254b565b6040516104489796959493929190614052565b348015610b89575f5ffd5b50610528610b983660046141b4565b61258d565b348015610ba8575f5ffd5b50610600610bb7366004614278565b61259f565b348015610bc7575f5ffd5b506106657f000000000000000000000000000000000000000000000000000000000000000081565b348015610bfa575f5ffd5b50610600606481565b348015610c0e575f5ffd5b5061043c610c1d3660046142a0565b6125fd565b348015610c2d575f5ffd5b50610c41610c3c366004613d1b565b61263f565b6040516104489190614308565b348015610c59575f5ffd5b50610528610c6836600461431a565b6126ff565b348015610c78575f5ffd5b50610528610c8736600461434b565b612713565b348015610c97575f5ffd5b50600a54610600565b348015610cab575f5ffd5b50610528610cba366004613730565b6127bf565b348015610cca575f5ffd5b50610600610cd93660046136c8565b5f9081526004602052604090206001015490565b348015610cf8575f5ffd5b5061062d610d0736600461437c565b612866565b348015610d17575f5ffd5b506104bb610d26366004614428565b6128a0565b348015610d36575f5ffd5b50610470610d453660046136c8565b612918565b348015610d55575f5ffd5b506009546104ed90600160a01b900461ffff1681565b348015610d76575f5ffd5b50610470612937565b348015610d8a575f5ffd5b50610600610d99366004613c9a565b612944565b348015610da9575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610ddc575f5ffd5b50610600610deb366004613730565b61ffff165f908152600360208190526040909120015490565b348015610e0f575f5ffd5b50610528610e1e366004613c7f565b612d71565b348015610e2e575f5ffd5b5061062d610e3d366004614444565b612dc2565b348015610e4d575f5ffd5b50610470610e5c3660046136c8565b612dfb565b348015610e6c575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610e9f575f5ffd5b5061043c610eae366004613c7f565b6001600160a01b03165f9081526005602052604090205460ff1690565b5f6001600160e01b03198216630a85bd0160e11b1480610efb57506001600160e01b03198216630271189760e51b145b80610f1657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f818152600460205260409020600201805460609190610f3b906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610f67906144ba565b8015610fb25780601f10610f8957610100808354040283529160200191610fb2565b820191905f5260205f20905b815481529060010190602001808311610f9557829003601f168201915b50505050509050919050565b60068054610fcb906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff7906144ba565b80156110425780601f1061101957610100808354040283529160200191611042565b820191905f5260205f20905b81548152906001019060200180831161102557829003601f168201915b505050505081565b611052612e1a565b61109833604080515f8082526020820190925290611092565b604080518082019091526060808252602082015281526020019060019003908161106b5790505b50612e4b565b565b61ffff88165f9081526003602052604090208054600160d01b900460ff166110d557604051632e53afcd60e01b815260040160405180910390fd5b80546001600160a01b031633146110ff57604051635574892960e11b815260040160405180910390fd5b5f8881526002602052604090208054600160301b900465ffffffffffff16158061113857508054600160901b900465ffffffffffff1615155b15611156576040516301dd1d1560e71b815260040160405180910390fd5b8054600160601b900465ffffffffffff16156111855760405163a517239560e01b815260040160405180910390fd5b8685811415806111955750808414155b156111b35760405163dbf15fa560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008111156111f45760405163d0b6a17960e01b815260040160405180910390fd5b815471ffffffffffff0000000000000000000000001916600160601b4365ffffffffffff1690810291909117835583547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b9091021783555f5b81811015611491577f000000000000000000000000000000000000000000000000000000000000000086868381811061128e5761128e6144f2565b90506020028101906112a09190614506565b905011156112c157604051631c3bc5e360e31b815260040160405180910390fd5b6112eb8a8a838181106112d6576112d66144f2565b9050602002016020810190610eae9190613c7f565b15611309576040516334d52f6b60e01b815260040160405180910390fd5b5f5f8b8b8481811061131d5761131d6144f2565b90506020020160208101906113329190613c7f565b6001600160a01b03168a8a8581811061134d5761134d6144f2565b90506020020135898986818110611366576113666144f2565b90506020028101906113789190614506565b604051611386929190614548565b5f6040518083038185875af1925050503d805f81146113c0576040519150601f19603f3d011682016040523d82523d5f602084013e6113c5565b606091505b5091509150816113f8578051156113df5780518082602001fd5b604051631d8fb90d60e21b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000815111611446576005850180546001810182555f91825260209091200161144082826145a2565b50611487565b604080515f602082015260058701910160408051601f1981840301815291905281546001810183555f92835260209092209091019061148590826145a2565b505b5050600101611253565b50898b61ffff167f6f483abfdcf4f122955fd235993c09897d9190ed80964fe5cb76daac8a7a8b878b8b8b8b8b8b6040516114d196959493929190614718565b60405180910390a35050505050505050505050565b61ffff84165f9081526003602052604081208054600160d01b900460ff1661152157604051632e53afcd60e01b815260040160405180910390fd5b604051630b704dbd60e11b81525f9073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611560908a908a908a908a906004016147c7565b602060405180830381865af415801561157b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159f91906147f5565b5f81815260026020819052604090912090810154919250906001600160a01b0316336001600160a01b0316146115e857604051637365858560e01b815260040160405180910390fd5b805465ffffffffffff1615801561160d57508054600160301b900465ffffffffffff16155b1561162b5760405163f661f4bf60e01b815260040160405180910390fd5b8054600160601b900465ffffffffffff1615158061165857508054600160901b900465ffffffffffff1615155b156116765760405163b831530960e01b815260040160405180910390fd5b80547fffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff16600160901b4365ffffffffffff160217815560405182907f8eb4cfeba12ece86fc1590773502e55423b37db556543430337376b30d27c42b905f90a2509695505050505050565b600b545f9060ff1661170657604051630889b5b960e31b815260040160405180910390fd5b50630a85bd0160e11b95945050505050565b5f828152600460205260408120600181015483106117495760405163472e61bd60e01b815260040160405180910390fd5b80600101838154811061175e5761175e6144f2565b5f918252602090912001546001600160a01b0316949350505050565b611782612f03565b61178d82825f612f23565b5050565b5f81815260026020526040812080546001820154839283928392839283928392600160c01b90910465ffffffffffff169063ffffffff166117d28183614820565b60019390930154919b909a5065ffffffffffff909216985063ffffffff640100000000820481169850600160401b820481169750600160601b820481169650600160801b909104169350915050565b5f61182a612f03565b50600954600160a01b900461ffff166118438183612fde565b60098054600161ffff600160a01b808404821692909201160261ffff60a01b199091161790555b919050565b611877612f03565b6001600160a01b03811661189e57604051636e7e8feb60e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040517f8be32e66bcd4d1783b05affa4e89ba5fc5e37bea009c896d862c795acf9e842b905f90a250565b5f818152600460205260409020600301805460609190610f3b906144ba565b600b545f9060ff1661192b57604051630889b5b960e31b815260040160405180910390fd5b61ffff86165f9081526003602052604090208054600160d01b900460ff1661196657604051632e53afcd60e01b815260040160405180910390fd5b611971335b886125fd565b61198e57604051637079d1b960e11b815260040160405180910390fd5b61199733610eae565b156119b5576040516334d52f6b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008511156119f657604051631c3bc5e360e31b815260040160405180910390fd5b60028101546001820154604051630b704dbd60e11b815263ffffffff831692600160801b900460ff16919073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611a51908d908d908d908d906004016147c7565b602060405180830381865af4158015611a6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9091906147f5565b5f818152600260205260409020805491965090600160f01b900461ffff1615611acc5760405163fc0e49ff60e01b815260040160405180910390fd5b6003850180546001810182555f91825260209091200186905560048101611af48a8c8361483e565b50805461ffff8c16600160f01b027dffffffffffffffffffffffffffffffffffffffffffffffff00000000000090911665ffffffffffff43161717815560ff8316611b3f575f611b41565b435b815465ffffffffffff91909116600160c01b027fffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff90911617815560ff8316611b89575f611b9b565b5f828152600460205260409020600101545b60018201805473ffffffff000000000000000000000000ffffffff1916600160801b63ffffffff9384160263ffffffff191617918616919091179055600281018054336001600160a01b031990911617905560068101611bfb88826145a2565b506003810188905561ffff8b1633877fb5856a9700a7e851456d3a16348b4ae0fbb11b06ac0af8dbe8e8652c57cc4cbd8d8d43611c3e63ffffffff8c16826148f7565b8f8f604051611c529695949392919061490a565b60405180910390a4505050505095945050505050565b600a5460609060ff831610611c905760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff1681548110611ca657611ca66144f2565b905f5260205f2090600202016001018054610f3b906144ba565b611cc8612f03565b60095461ffff600160a01b90910481169082161115611cfa57604051633a8de3a560e11b815260040160405180910390fd5b600a5460ff841610611d1f5760405163e2190a4d60e01b815260040160405180910390fd5b5f600a8460ff1681548110611d3657611d366144f2565b5f9182526020909120600290910201805490915060ff841610611d6c5760405163321decd960e21b815260040160405180910390fd5b81815f018460ff1681548110611d8457611d846144f2565b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055507fbab75fb33733fb786b1bd731a4e31deb8b360f52fdc6e437843f5803cd84141d848484604051611e019392919060ff938416815291909216602082015261ffff91909116604082015260600190565b60405180910390a150505050565b5f82815260026020526040902060050180546060919083908110611e3557611e356144f2565b905f5260205f20018054611e48906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611e74906144ba565b8015611ebf5780601f10611e9657610100808354040283529160200191611ebf565b820191905f5260205f20905b815481529060010190602001808311611ea257829003601f168201915b5050505050905092915050565b611ed4612f03565b6001600160a01b0382165f81815260056020526040808220805460ff191685151590811790915590519092917f921341769c2075d1ae425396063d5ab65ff5006c4bc0bd0821e50ce51fb6012391a35050565b611f2f612f03565b600a5460ff821610611f545760405163e2190a4d60e01b815260040160405180910390fd5b600a8160ff1681548110611f6a57611f6a6144f2565b5f9182526020822060029091020190611f838282613587565b611f90600183015f6135a9565b505060405160ff8216907fdb9bcd47830726db0b83034aa4bc1b92414a20b1790a2f63434fe60bd243d9e0905f90a250565b61178d82338360405180602001604052805f81525061309d565b611fe4612e1a565b600b5460ff1615612008576040516315ea064b60e31b815260040160405180910390fd5b600954600160a01b900461ffff165f5b8251811015612089575f6001600160a01b031683828151811061203d5761203d6144f2565b6020026020010151602001516001600160a01b0316146120815761207a8284838151811061206d5761206d6144f2565b6020026020010151612fde565b8160010191505b600101612018565b506009805461ffff909216600160a01b0261ffff60a01b1990921691909117905550565b5f818152600260205260408120805465ffffffffffff161580156120df57508054600160301b900465ffffffffffff16155b80156120f957508054600160601b900465ffffffffffff16155b801561211357508054600160901b900465ffffffffffff16155b1561212057505f92915050565b8054600160601b900465ffffffffffff161561213f5750600792915050565b8054600160901b900465ffffffffffff161561215e5750600292915050565b8054600160301b900465ffffffffffff161561217d5750600692915050565b600181015481545f916121a79163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff1690504381106121c2575060039392505050565b6121cb84613280565b15806121dd57506121db8461331f565b155b156121ec575060049392505050565b5060059392505050565b6121fe612f03565b6001600160a01b0381165f9081526005602052604090205460ff1615612237576040516334d52f6b60e01b815260040160405180910390fd5b61178d82826001612f23565b61224b612e1a565b604080515f8082526020820190925261226691839190611092565b50565b612271612f03565b81515f03612292576040516333a0807f60e21b815260040160405180910390fd5b60ff825111156122b5576040516350cc0e8d60e01b815260040160405180910390fd5b60ff815111156122d85760405163d315c6bd60e01b815260040160405180910390fd5b5f8381526004602052604090206002016122f283826145a2565b505f83815260046020526040902060030161230d82826145a2565b50827f4c6d3d4a776b1458bbd518e75903a3f27a0c6f4597b10882784aa64769d56c718360405161233e919061370d565b60405180910390a2505050565b61238c84338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061309d92505050565b50505050565b600a81815481106123a1575f80fd5b905f5260205f2090600202015f915090508060010180546123c1906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546123ed906144ba565b80156124385780601f1061240f57610100808354040283529160200191612438565b820191905f5260205f20905b81548152906001019060200180831161241b57829003601f168201915b5050505050905081565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091525061ffff9081165f908152600360209081526040918290208251610120810184526001820154815260029091015463ffffffff808216938301939093526401000000008104831693820193909352600160401b830482166060820152600160601b8304841660808201526e010000000000000000000000000000830490931660a084015260ff600160801b8304811660c08501527101000000000000000000000000000000000083041660e0840152600160901b9091041661010082015290565b5f6060805f5f5f606061255c613399565b6125646133ca565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b612595612e1a565b61178d8282612e4b565b61ffff82165f90815260036020819052604082209081015483106125d65760405163472e61bd60e01b815260040160405180910390fd5b8060030183815481106125eb576125eb6144f2565b905f5260205f20015491505092915050565b61ffff81165f908152600360205260408120600101548161261e85836128a0565b905065ffffffffffff811615158061263657505f1982145b95945050505050565b600a5460609060ff8316106126675760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff168154811061267d5761267d6144f2565b5f9182526020918290206002909102018054604080518285028101850190915281815292830182828015610fb257602002820191905f5260205f20905f905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116126bc575094979650505050505050565b612707612f03565b600761178d82826145a2565b61271b612f03565b600a80546001810182555f919091528151805183926002027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80191612765918391602001906135e0565b506020820151600182019061277a90826145a2565b5050815160208301516040517fb56a1edd5f36655e5ec0dfaaee335db8dce67084b7e03de2f6771824f68d356593506127b492919061494e565b60405180910390a150565b6127c7612f03565b61ffff81165f90815260036020526040812054600160d01b900460ff161515900361280557604051632e53afcd60e01b815260040160405180910390fd5b61ffff81165f8181526003602052604080822080547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169055517ffb1d94dcf467f70febf412166aaa551737afd946ba6a4b4eac970aaf28a7e74f9190a250565b600b545f9060ff1661288b57604051630889b5b960e31b815260040160405180910390fd5b5063bc197c8160e01b98975050505050505050565b5f8181526004602090815260408083206001600160a01b0386168452918290528220548083036128d4575f92505050610f16565b816001016001826128e59190614972565b815481106128f5576128f56144f2565b5f91825260209091200154600160a01b900465ffffffffffff1695945050505050565b5f818152600260205260409020600401805460609190610f3b906144ba565b60078054610fcb906144ba565b600b545f9060ff1661296957604051630889b5b960e31b815260040160405180910390fd5b604051630b704dbd60e11b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a906129a69089908990899089906004016147c7565b602060405180830381865af41580156129c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e591906147f5565b61ffff87165f908152600360205260409020805491925090600160d01b900460ff16612a2457604051632e53afcd60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000851115612a6557604051631c3bc5e360e31b815260040160405180910390fd5b612a6e33610eae565b15612a8c576040516334d52f6b60e01b815260040160405180910390fd5b612a953361196b565b612ab257604051637079d1b960e11b815260040160405180910390fd5b5f8281526002602052604090208054600160301b900465ffffffffffff16151580612aec57508054600160601b900465ffffffffffff1615155b15612b0a5760405163fc0e49ff60e01b815260040160405180910390fd5b8054600160901b900465ffffffffffff1615612b3957604051632ec3fe1560e11b815260040160405180910390fd5b8154604051633881b32960e01b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__91633881b32991612b8b918c918c918c9130918d91600160a01b90910465ffffffffffff1690600401614985565b5f6040518083038186803b158015612ba1575f5ffd5b505af4158015612bb3573d5f5f3e3d5ffd5b50508254600160f01b900461ffff165f039150612be69050576003820180546001810182555f9182526020909120018390555b600281018054336001600160a01b031990911617905580547dffffffffffffffffffffffffffffffffffff000000000000ffffffffffff16600160301b4365ffffffffffff16027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160f01b61ffff8a160217815560048101612c6b87898361483e565b5060068101612c7a85826145a2565b506003810185905581546040516326a8b78760e11b81525f916001600160a01b031690634d516f0e90612cb99033908d908d908d908d906004016149d1565b6020604051808303815f875af1158015612cd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cf99190614a0f565b905080612d195760405163382654b960e21b815260040160405180910390fd5b61ffff8916336001600160a01b03167f98e1e52af9c2155b4c2b4844cdccf64c85cb13dd804231d177ef6fea4325d4058a8a8a8a604051612d5d9493929190614a2a565b60405180910390a350505095945050505050565b612d79612f03565b6001600160a01b038116612da057604051636e7e8feb60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f9060ff16612de757604051630889b5b960e31b815260040160405180910390fd5b5063f23a6e6160e01b5b9695505050505050565b5f818152600260205260409020600601805460609190610f3b906144ba565b612e24335f6128a0565b65ffffffffffff165f0361109857604051630eaa87a560e21b815260040160405180910390fd5b336001600160a01b03831614612e7257612e665f335f612f23565b612e725f836001612f23565b805115612ef2575f5b8151811015612ef057600a828281518110612e9857612e986144f2565b60209081029190910181015182546001810184555f9384529282902081518051929460020290910192612ed0928492909101906135e0565b5060208201516001820190612ee590826145a2565b505050600101612e7b565b505b5050600b805460ff19166001179055565b3330146110985760405163e890ccbf60e01b815260040160405180910390fd5b6040516393926d2560e01b8152600480820152602481018490526001600160a01b0383166044820152811515606482015273__$4fdb155c07e189d6709d928ad749b812b4$__906393926d25906084015f6040518083038186803b158015612f89575f5ffd5b505af4158015612f9b573d5f5f3e3d5ffd5b50505050801515826001600160a01b0316847f294507a8f5830b538faef39fbdd28f1164f27c8338a32fc7b47ddf82e4c8d9e460405160405180910390a4505050565b60405163b9778ecb60e01b815273__$4fdb155c07e189d6709d928ad749b812b4$__9063b9778ecb9061303f90600390600590879087907f000000000000000000000000000000000000000000000000000000000000000090600401614a60565b5f6040518083038186803b158015613055575f5ffd5b505af4158015613067573d5f5f3e3d5ffd5b505060405161ffff851692507f284812f41d73696d76ff026c35ebc1a8e8bf24544551c55dd0877334dca88a5691505f90a25050565b5f848152600260205260409020805465ffffffffffff1615806130cf57508054600160601b900465ffffffffffff1615155b806130e957508054600160901b900465ffffffffffff1615155b8061310357508054600160301b900465ffffffffffff1615155b8061313d57506001810154815443916131339163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff16105b1561315b576040516322024acd60e21b815260040160405180910390fd5b8054600160f01b900461ffff1661317285826125fd565b61318f57604051637079d1b960e11b815260040160405180910390fd5b5f61319982612442565b5190505f1981148015906131cd57508254600160c01b900465ffffffffffff166131c387836128a0565b65ffffffffffff16115b156131eb5760405163347f49ed60e11b815260040160405180910390fd5b6001600160a01b0386165f90815260078401602052604090205460ff16156132265760405163c9e3c8d960e01b815260040160405180910390fd5b6132318787876133f7565b8460ff1687876001600160a01b03167f5be2678cab71c7d94235767eb1df3c57673f19e805cdc0edbd2e74854ae9f0f98760405161326f919061370d565b60405180910390a450505050505050565b5f818152600260205260408120805482906132a590600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff161580612636575060018301546064906132f29063ffffffff600160601b8204811691600160401b900416614af0565b63ffffffff166133029190614b0c565b60c08301516133149060ff1683614b0c565b111595945050505050565b5f8181526002602052604081208054829061334490600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff1615806126365750600183015461338790606490600160401b900463ffffffff16614b0c565b60e08301516133149060ff1683614b0c565b60606133c57f00000000000000000000000000000000000000000000000000000000000000005f61347a565b905090565b60606133c57f0000000000000000000000000000000000000000000000000000000000000000600161347a565b604051630499d27d60e11b815260026004820152602481018490526001600160a01b038316604482015260ff8216606482015273__$4fdb155c07e189d6709d928ad749b812b4$__90630933a4fa906084015f6040518083038186803b15801561345f575f5ffd5b505af4158015613471573d5f5f3e3d5ffd5b50505050505050565b606060ff83146134945761348d83613523565b9050610f16565b8180546134a0906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546134cc906144ba565b80156135175780601f106134ee57610100808354040283529160200191613517565b820191905f5260205f20905b8154815290600101906020018083116134fa57829003601f168201915b50505050509050610f16565b60605f61352f83613560565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610f1657604051632cd44ac360e21b815260040160405180910390fd5b5080545f8255600f0160109004905f5260205f20908101906122669190613686565b5080546135b5906144ba565b5f825580601f106135c4575050565b601f0160209004905f5260205f20908101906122669190613686565b828054828255905f5260205f2090600f01601090048101928215613676579160200282015f5b8382111561364657835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613606565b80156136745782816101000a81549061ffff0219169055600201602081600101049283019260010302613646565b505b50613682929150613686565b5090565b5b80821115613682575f8155600101613687565b5f602082840312156136aa575f5ffd5b81356001600160e01b0319811681146136c1575f5ffd5b9392505050565b5f602082840312156136d8575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6136c160208301846136df565b803561ffff8116811461186a575f5ffd5b5f60208284031215613740575f5ffd5b6136c18261371f565b5f5f83601f840112613759575f5ffd5b5081356001600160401b0381111561376f575f5ffd5b6020830191508360208260051b8501011115613789575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156137a7575f5ffd5b6137b08961371f565b97506020890135965060408901356001600160401b038111156137d1575f5ffd5b6137dd8b828c01613749565b90975095505060608901356001600160401b038111156137fb575f5ffd5b6138078b828c01613749565b90955093505060808901356001600160401b03811115613825575f5ffd5b6138318b828c01613749565b999c989b5096995094979396929594505050565b5f5f83601f840112613855575f5ffd5b5081356001600160401b0381111561386b575f5ffd5b602083019150836020828501011115613789575f5ffd5b5f5f5f5f60608587031215613895575f5ffd5b61389e8561371f565b935060208501356001600160401b038111156138b8575f5ffd5b6138c487828801613845565b9598909750949560400135949350505050565b6001600160a01b0381168114612266575f5ffd5b5f5f5f5f5f608086880312156138ff575f5ffd5b853561390a816138d7565b9450602086013561391a816138d7565b93506040860135925060608601356001600160401b0381111561393b575f5ffd5b61394788828901613845565b969995985093965092949392505050565b5f5f60408385031215613969575f5ffd5b50508035926020909101359150565b5f5f60408385031215613989575f5ffd5b82359150602083013561399b816138d7565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b03811182821017156139dd576139dd6139a6565b60405290565b604051608081016001600160401b03811182821017156139dd576139dd6139a6565b604080519081016001600160401b03811182821017156139dd576139dd6139a6565b604051601f8201601f191681016001600160401b0381118282101715613a4f57613a4f6139a6565b604052919050565b5f5f6001600160401b03841115613a7057613a706139a6565b50601f8301601f1916602001613a8581613a27565b915050828152838383011115613a99575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112613abe575f5ffd5b6136c183833560208501613a57565b803563ffffffff8116811461186a575f5ffd5b803560ff8116811461186a575f5ffd5b5f6101208284031215613b01575f5ffd5b613b096139ba565b823581529050613b1b60208301613acd565b6020820152613b2c60408301613acd565b6040820152613b3d60608301613acd565b6060820152613b4e6080830161371f565b6080820152613b5f60a0830161371f565b60a0820152613b7060c08301613ae0565b60c0820152613b8160e08301613ae0565b60e0820152613b936101008301613acd565b61010082015292915050565b5f6101808284031215613bb0575f5ffd5b613bb86139e3565b905081356001600160401b03811115613bcf575f5ffd5b613bdb84828501613aaf565b8252506020820135613bec816138d7565b602082015260408201356001600160401b03811115613c09575f5ffd5b8201601f81018413613c19575f5ffd5b613c2884823560208401613a57565b604083015250613c3b8360608401613af0565b606082015292915050565b5f60208284031215613c56575f5ffd5b81356001600160401b03811115613c6b575f5ffd5b613c7784828501613b9f565b949350505050565b5f60208284031215613c8f575f5ffd5b81356136c1816138d7565b5f5f5f5f5f60808688031215613cae575f5ffd5b613cb78661371f565b945060208601356001600160401b03811115613cd1575f5ffd5b613cdd88828901613845565b9095509350506040860135915060608601356001600160401b03811115613d02575f5ffd5b613d0e88828901613aaf565b9150509295509295909350565b5f60208284031215613d2b575f5ffd5b6136c182613ae0565b5f5f5f60608486031215613d46575f5ffd5b613d4f84613ae0565b9250613d5d60208501613ae0565b9150613d6b6040850161371f565b90509250925092565b8015158114612266575f5ffd5b5f5f60408385031215613d92575f5ffd5b8235613d9d816138d7565b9150602083013561399b81613d74565b5f5f60408385031215613dbe575f5ffd5b82359150613dce60208401613ae0565b90509250929050565b5f6001600160401b03821115613def57613def6139a6565b5060051b60200190565b5f60208284031215613e09575f5ffd5b81356001600160401b03811115613e1e575f5ffd5b8201601f81018413613e2e575f5ffd5b8035613e41613e3c82613dd7565b613a27565b8082825260208201915060208360051b850101925086831115613e62575f5ffd5b602084015b83811015613ea25780356001600160401b03811115613e84575f5ffd5b613e9389602083890101613b9f565b84525060209283019201613e67565b509695505050505050565b6020810160088310613ecd57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f60608486031215613ee5575f5ffd5b8335925060208401356001600160401b03811115613f01575f5ffd5b613f0d86828701613aaf565b92505060408401356001600160401b03811115613f28575f5ffd5b613f3486828701613aaf565b9150509250925092565b5f5f5f5f60608587031215613f51575f5ffd5b84359350613f6160208601613ae0565b925060408501356001600160401b03811115613f7b575f5ffd5b613f8787828801613845565b95989497509550505050565b8051825263ffffffff602082015116602083015263ffffffff60408201511660408301526060810151613fce606084018263ffffffff169052565b506080810151613fe4608084018261ffff169052565b5060a0810151613ffa60a084018261ffff169052565b5060c081015161400f60c084018260ff169052565b5060e081015161402460e084018260ff169052565b5061010081015161403e61010084018263ffffffff169052565b505050565b6101208101610f168284613f93565b60ff60f81b8816815260e060208201525f61407060e08301896136df565b828103604084015261408281896136df565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156140d75783518352602093840193909201916001016140b9565b50909b9a5050505050505050505050565b5f604082840312156140f8575f5ffd5b614100613a05565b905081356001600160401b03811115614117575f5ffd5b8201601f81018413614127575f5ffd5b8035614135613e3c82613dd7565b8082825260208201915060208360051b850101925086831115614156575f5ffd5b6020840193505b8284101561417f5761416e8461371f565b82526020938401939091019061415d565b845250505060208201356001600160401b0381111561419c575f5ffd5b6141a884828501613aaf565b60208301525092915050565b5f5f604083850312156141c5575f5ffd5b82356141d0816138d7565b915060208301356001600160401b038111156141ea575f5ffd5b8301601f810185136141fa575f5ffd5b8035614208613e3c82613dd7565b8082825260208201915060208360051b850101925087831115614229575f5ffd5b602084015b838110156142695780356001600160401b0381111561424b575f5ffd5b61425a8a6020838901016140e8565b8452506020928301920161422e565b50809450505050509250929050565b5f5f60408385031215614289575f5ffd5b6142928361371f565b946020939093013593505050565b5f5f604083850312156142b1575f5ffd5b82356142bc816138d7565b9150613dce6020840161371f565b5f8151808452602084019350602083015f5b828110156142fe57815161ffff168652602095860195909101906001016142dc565b5093949350505050565b602081525f6136c160208301846142ca565b5f6020828403121561432a575f5ffd5b81356001600160401b0381111561433f575f5ffd5b613c7784828501613aaf565b5f6020828403121561435b575f5ffd5b81356001600160401b03811115614370575f5ffd5b613c77848285016140e8565b5f5f5f5f5f5f5f5f60a0898b031215614393575f5ffd5b883561439e816138d7565b975060208901356143ae816138d7565b965060408901356001600160401b038111156143c8575f5ffd5b6143d48b828c01613749565b90975095505060608901356001600160401b038111156143f2575f5ffd5b6143fe8b828c01613749565b90955093505060808901356001600160401b0381111561441c575f5ffd5b6138318b828c01613845565b5f5f60408385031215614439575f5ffd5b8235614292816138d7565b5f5f5f5f5f5f60a08789031215614459575f5ffd5b8635614464816138d7565b95506020870135614474816138d7565b9450604087013593506060870135925060808701356001600160401b0381111561449c575f5ffd5b6144a889828a01613845565b979a9699509497509295939492505050565b600181811c908216806144ce57607f821691505b6020821081036144ec57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e1984360301811261451b575f5ffd5b8301803591506001600160401b03821115614534575f5ffd5b602001915036819003821315613789575f5ffd5b818382375f9101908152919050565b601f82111561403e57805f5260205f20601f840160051c8101602085101561457c5750805b601f840160051c820191505b8181101561459b575f8155600101614588565b5050505050565b81516001600160401b038111156145bb576145bb6139a6565b6145cf816145c984546144ba565b84614557565b6020601f821160018114614601575f83156145ea5750848201515b5f19600385901b1c1916600184901b17845561459b565b5f84815260208120601f198516915b828110156146305787850151825560209485019460019092019101614610565b508482101561464d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208501945060208460051b820101835f5b8681101561470c57838303601f19018852813536879003601e190181126146c0575f5ffd5b86016020810190356001600160401b038111156146db575f5ffd5b8036038213156146e9575f5ffd5b6146f485828461465c565b60209a8b019a9095509390930192505060010161469b565b50909695505050505050565b606080825281018690525f8760808301825b8981101561475a57823561473d816138d7565b6001600160a01b031682526020928301929091019060010161472a565b5083810360208501528681527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871115614792575f5ffd5b8660051b91508188602083013701828103602090810160408501526147ba9082018587614684565b9998505050505050505050565b61ffff85168152606060208201525f6147e460608301858761465c565b905082604083015295945050505050565b5f60208284031215614805575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff8181168382160190811115610f1657610f1661480c565b6001600160401b03831115614855576148556139a6565b6148698361486383546144ba565b83614557565b5f601f84116001811461489a575f85156148835750838201355b5f19600387901b1c1916600186901b17835561459b565b5f83815260208120601f198716915b828110156148c957868501358255602094850194600190920191016148a9565b50868210156148e5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610f1657610f1661480c565b60c081525f60c082015260e060208201525f61492a60e08301888a61465c565b86604084015285606084015284608084015282810360a08401526147ba81856136df565b604081525f61496060408301856142ca565b828103602084015261263681856136df565b81810381811115610f1657610f1661480c565b61ffff8716815260a060208201525f6149a260a08301878961465c565b6001600160a01b0395909516604083015250606081019290925265ffffffffffff166080909101529392505050565b6001600160a01b038616815261ffff85166020820152608060408201525f6149fd60808301858761465c565b90508260608301529695505050505050565b5f60208284031215614a1f575f5ffd5b81516136c181613d74565b606081525f614a3d60608301868861465c565b8460208401528281036040840152614a5581856136df565b979650505050505050565b85815284602082015261ffff8416604082015260a060608201525f835161018060a0840152614a936102208401826136df565b90506001600160a01b0360208601511660c08401526040850151609f198483030160e0850152614ac382826136df565b9150506060850151614ad9610100850182613f93565b506001600160a01b03841660808401529050612df1565b63ffffffff8181168382160190811115610f1657610f1661480c565b8082028115828204841417610f1657610f1661480c56fea26469706673582212202c4ff00d8c9daf4825503ec9fce788db6d3149dde1a0641a83b851f46afb199b64736f6c634300081e0033","sourceMap":"3230:37119:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9197:38;735:10:64;9197:38:108;;;-1:-1:-1;;;;;338:55:180;;;320:74;;9225:9:108;425:2:180;410:18;;403:34;293:18;9197:38:108;;;;;;;3230:37119;;;;;32784:277;;;;;;;;;;-1:-1:-1;32784:277:108;;;;;:::i;:::-;;:::i;:::-;;;904:14:180;;897:22;879:41;;867:2;852:18;32784:277:108;;;;;;;;35216:123;;;;;;;;;;-1:-1:-1;35216:123:108;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;39199:158::-;;;;;;;;;;-1:-1:-1;39199:158:108;;;;;:::i;:::-;39313:19;;39270:24;39313:19;;;:8;:19;;;;;:37;-1:-1:-1;;;39313:37:108;;;;;39199:158;;;;2208:14:180;2196:27;;;2178:46;;2166:2;2151:18;39199:158:108;2034:196:180;39067:98:108;;;;;;;;;;-1:-1:-1;39144:14:108;;-1:-1:-1;;;39144:14:108;;;;39067:98;;;2504:6:180;2492:19;;;2474:38;;2462:2;2447:18;39067:98:108;2330:188:180;5347:18:108;;;;;;;;;;;;;:::i;10291:108::-;;;;;;;;;;;;;:::i;:::-;;16653:3123;;;;;;;;;;-1:-1:-1;16653:3123:108;;;;;:::i;:::-;;:::i;38642:391::-;;;;;;;;;;-1:-1:-1;38642:391:108;;;;;:::i;:::-;38826:19;;38734:15;38826:19;;;:8;:19;;;;;;;;;38865:15;38941:36;;38960:4;38941:36;;;35788:74:180;35878:18;;;35871:47;;;;38941:36:108;;;;;;;;;35761:18:180;;;;38941:36:108;;;38931:47;;;;;;;;-1:-1:-1;;;;;38865:15:108;;;38931:47;;-1:-1:-1;;;38899:8:108;;;;;38642:391;;;;;-1:-1:-1;;;;;4412:55:180;;;4394:74;;4499:2;4484:18;;4477:34;;;;4554:14;4547:22;4527:18;;;4520:50;4382:2;4367:18;38642:391:108;4198:378:180;19898:1095:108;;;;;;;;;;-1:-1:-1;19898:1095:108;;;;;:::i;:::-;;:::i;:::-;;;5679:25:180;;;5667:2;5652:18;19898:1095:108;5533:177:180;31800:219:108;;;;;;;;;;-1:-1:-1;31800:219:108;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;6847:33:180;;;6829:52;;6817:2;6802:18;31800:219:108;6685:202:180;5624:24:108;;;;;;;;;;-1:-1:-1;5624:24:108;;;;-1:-1:-1;;;;;5624:24:108;;;;;;-1:-1:-1;;;;;7056:55:180;;;7038:74;;7026:2;7011:18;5624:24:108;6892:226:180;34882:300:108;;;;;;;;;;-1:-1:-1;34882:300:108;;;;;:::i;:::-;;:::i;26511:122::-;;;;;;;;;;-1:-1:-1;26511:122:108;;;;;:::i;:::-;;:::i;37223:666::-;;;;;;;;;;-1:-1:-1;37223:666:108;;;;;:::i;:::-;;:::i;:::-;;;;8278:14:180;8266:27;;;8248:46;;8342:10;8330:23;;;8325:2;8310:18;;8303:51;8370:18;;8363:34;;;;8433:23;;;8428:2;8413:18;;8406:51;8494:23;;8488:3;8473:19;;8466:52;8555:23;;8549:3;8534:19;;8527:52;8616:23;8610:3;8595:19;;8588:52;8235:3;8220:19;37223:666:108;7945:701:180;23594:287:108;;;;;;;;;;-1:-1:-1;23594:287:108;;;;;:::i;:::-;;:::i;28035:225::-;;;;;;;;;;-1:-1:-1;28035:225:108;;;;;:::i;:::-;;:::i;35373:132::-;;;;;;;;;;-1:-1:-1;35373:132:108;;;;;:::i;:::-;;:::i;11681:2553::-;;;;;;;;;;-1:-1:-1;11681:2553:108;;;;;:::i;:::-;;:::i;33795:226::-;;;;;;;;;;-1:-1:-1;33795:226:108;;;;;:::i;:::-;;:::i;40108:95::-;;;;;;;;;;-1:-1:-1;40188:8:108;;-1:-1:-1;;;;;40188:8:108;40108:95;;4321:55;;;;;;;;;;;;-1:-1:-1;;4321:55:108;;25151:626;;;;;;;;;;-1:-1:-1;25151:626:108;;;;;:::i;:::-;;:::i;38104:169::-;;;;;;;;;;-1:-1:-1;38104:169:108;;;;;:::i;:::-;;:::i;38468:140::-;;;;;;;;;;-1:-1:-1;38468:140:108;;;;;:::i;:::-;38542:4;38565:18;;;:8;:18;;;;;;;;-1:-1:-1;;;;;38565:36:108;;;;:27;;:36;;;;;;;;38468:140;;;;;27479:180;;;;;;;;;;-1:-1:-1;27479:180:108;;;;;:::i;:::-;;:::i;36580:609::-;;;;;;;;;;-1:-1:-1;36580:609:108;;;;;:::i;:::-;36679:16;36926:18;;;:8;:18;;;;;;;;36976:16;;37133:13;;;;37160:12;;;;;-1:-1:-1;;;36976:16:108;;;;;37006:17;;;;;-1:-1:-1;;;37037:18:108;;;;;-1:-1:-1;;;37069:18:108;;;;;-1:-1:-1;;;37101:18:108;;;;;;;-1:-1:-1;;;;;37133:13:108;;;;36580:609;;;;;15876:6:180;15864:19;;;15846:38;;15932:14;15920:27;;;15915:2;15900:18;;15893:55;15984:27;;;15964:18;;;15957:55;;;;16048:27;;;16043:2;16028:18;;16021:55;16113:27;;;;16107:3;16092:19;;16085:56;-1:-1:-1;;;;;16178:55:180;;;16172:3;16157:19;;16150:84;16265:3;16250:19;;16243:35;15833:3;15818:19;36580:609:108;15541:743:180;24824:293:108;;;;;;;;;;-1:-1:-1;24824:293:108;;;;;:::i;:::-;;:::i;33296:87::-;;;;;;;;;;-1:-1:-1;33361:15:108;;;;;;;;;;;;-1:-1:-1;;;33361:15:108;;;;33296:87;;4920:35;;;;;;;;;;;;;;;21027:130;;;;;;;;;;-1:-1:-1;21027:130:108;;;;;:::i;:::-;;:::i;9611:646::-;;;;;;;;;;-1:-1:-1;9611:646:108;;;;;:::i;:::-;;:::i;35539:1007::-;;;;;;;;;;-1:-1:-1;35539:1007:108;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26282:195::-;;;;;;;;;;-1:-1:-1;26282:195:108;;;;;:::i;:::-;;:::i;10433:120::-;;;;;;;;;;-1:-1:-1;10433:120:108;;;;;:::i;:::-;;:::i;4198:54::-;;;;;;;;;;;;4235:17;4198:54;;25811:437;;;;;;;;;;-1:-1:-1;25811:437:108;;;;;:::i;:::-;;:::i;21191:168::-;;;;;;;;;;-1:-1:-1;21191:168:108;;;;;:::i;:::-;;:::i;4680:47::-;;;;;;;;;;;;;;;5990:19;;;;;;;;;;-1:-1:-1;5990:19:108;;;;;:::i;:::-;;:::i;39928:146::-;;;;;;;;;;-1:-1:-1;39928:146:108;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5228:557:75:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;10587:135:108:-;;;;;;;;;;-1:-1:-1;10587:135:108;;;;;:::i;:::-;;:::i;39593:301::-;;;;;;;;;;-1:-1:-1;39593:301:108;;;;;:::i;:::-;;:::i;5267:41::-;;;;;;;;;;;;;;;4450;;;;;;;;;;;;4488:3;4450:41;;34055:282;;;;;;;;;;-1:-1:-1;34055:282:108;;;;;:::i;:::-;;:::i;33541:220::-;;;;;;;;;;-1:-1:-1;33541:220:108;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27693:87::-;;;;;;;;;;-1:-1:-1;27693:87:108;;;;;:::i;:::-;;:::i;24639:151::-;;;;;;;;;;-1:-1:-1;24639:151:108;;;;;:::i;:::-;;:::i;33417:90::-;;;;;;;;;;-1:-1:-1;33488:5:108;:12;33417:90;;23915:237;;;;;;;;;;-1:-1:-1;23915:237:108;;;;;:::i;:::-;;:::i;34701:147::-;;;;;;;;;;-1:-1:-1;34701:147:108;;;;;:::i;:::-;34768:21;34808:13;;;:5;:13;;;;;:26;;:33;;34701:147;32460:290;;;;;;;;;;-1:-1:-1;32460:290:108;;;;;:::i;:::-;;:::i;34371:296::-;;;;;;;;;;-1:-1:-1;34371:296:108;;;;;:::i;:::-;;:::i;37923:147::-;;;;;;;;;;-1:-1:-1;37923:147:108;;;;;:::i;:::-;;:::i;5858:32::-;;;;;;;;;;-1:-1:-1;5858:32:108;;;;-1:-1:-1;;;5858:32:108;;;;;;5442:17;;;;;;;;;;;;;:::i;14395:2224::-;;;;;;;;;;-1:-1:-1;14395:2224:108;;;;;:::i;:::-;;:::i;4562:44::-;;;;;;;;;;;;;;;39391:168;;;;;;;;;;-1:-1:-1;39391:168:108;;;;;:::i;:::-;39516:19;;39467:30;39516:19;;;:8;:19;;;;;;;;:29;:36;;39391:168;27814:187;;;;;;;;;;-1:-1:-1;27814:187:108;;;;;:::i;:::-;;:::i;32120:230::-;;;;;;;;;;-1:-1:-1;32120:230:108;;;;;:::i;:::-;;:::i;38307:127::-;;;;;;;;;;-1:-1:-1;38307:127:108;;;;;:::i;:::-;;:::i;4796:46::-;;;;;;;;;;;;;;;40237:110;;;;;;;;;;-1:-1:-1;40237:110:108;;;;;:::i;:::-;-1:-1:-1;;;;;40321:19:108;40298:4;40321:19;;;:10;:19;;;;;;;;;40237:110;32784:277;32878:4;-1:-1:-1;;;;;;32901:48:108;;-1:-1:-1;;;32901:48:108;;:101;;-1:-1:-1;;;;;;;32953:49:108;;-1:-1:-1;;;32953:49:108;32901:101;:153;;;-1:-1:-1;;;;;;;;;;829:40:78;;;33018:36:108;32894:160;32784:277;-1:-1:-1;;32784:277:108:o;35216:123::-;35313:13;;;;:5;:13;;;;;:19;;35306:26;;35275:19;;35313;35306:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35216:123;;;:::o;5347:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10291:108::-;6797:12;:10;:12::i;:::-;10347:45:::1;735:10:64::0;10378:13:108::1;::::0;;10389:1:::1;10378:13:::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;10378:13:108::1;;;;;;;;;;;;;;;;10347:16;:45::i;:::-;10291:108::o:0;16653:3123::-;16887:19;;;16854:30;16887:19;;;:8;:19;;;;;16961:14;;-1:-1:-1;;;16961:14:108;;;;16956:54;;16984:26;;-1:-1:-1;;;16984:26:108;;;;;;;;;;;16956:54;17080:21;;-1:-1:-1;;;;;17080:21:108;735:10:64;17080:37:108;17076:82;;17126:32;;-1:-1:-1;;;17126:32:108;;;;;;;;;;;17076:82;17169:21;17193:18;;;:8;:18;;;;;17288;;-1:-1:-1;;;17288:18:108;;;;:23;;:49;;-1:-1:-1;17315:18:108;;-1:-1:-1;;;17315:18:108;;;;:22;;17288:49;17284:90;;;17346:28;;-1:-1:-1;;;17346:28:108;;;;;;;;;;;17284:90;17444:18;;-1:-1:-1;;;17444:18:108;;;;:22;17440:67;;17475:32;;-1:-1:-1;;;17475:32:108;;;;;;;;;;;17440:67;17618:7;17646:30;;;;;:67;;-1:-1:-1;17680:33:108;;;;17646:67;17642:105;;;17722:25;;-1:-1:-1;;;17722:25:108;;;;;;;;;;;17642:105;17829:21;17813:13;:37;17809:81;;;17859:31;;-1:-1:-1;;;17859:31:108;;;;;;;;;;;17809:81;17936:41;;-1:-1:-1;;17936:41:108;-1:-1:-1;;;17964:12:108;17936:41;;;;;;;;;;;18248:48;;;;-1:-1:-1;;;18248:48:108;;;;;;-1:-1:-1;18382:1309:108;18406:13;18402:1;:17;18382:1309;;;18462:19;18440:9;;18450:1;18440:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;:41;18436:79;;;18490:25;;-1:-1:-1;;;18490:25:108;;;;;;;;;;;18436:79;18533:25;18547:7;;18555:1;18547:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;18533:25::-;18529:66;;;18567:28;;-1:-1:-1;;;18567:28:108;;;;;;;;;;;18529:66;18611:12;18625:23;18652:7;;18660:1;18652:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18652:15:108;18676:6;;18683:1;18676:9;;;;;;;:::i;:::-;;;;;;;18688;;18698:1;18688:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18652:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18610:91;;;;18720:7;18715:700;;19084:17;;:21;19080:321;;19193:10;19187:17;19257:15;19244:10;19240:2;19236:19;19229:44;19080:321;19348:34;;-1:-1:-1;;;19348:34:108;;;;;;;;;;;19080:321;19453:22;19432:10;:17;:43;19428:194;;19495:18;;;:35;;;;;;;-1:-1:-1;19495:35:108;;;;;;;;;19519:10;19495:35;;:::i;:::-;;19428:194;;;19593:13;;;19604:1;19593:13;;;32894:36:180;19569:18:108;;;;32867::180;19593:13:108;;;-1:-1:-1;;19593:13:108;;;;;;;;;19569:38;;;;;;;-1:-1:-1;19569:38:108;;;19593:13;19569:38;;;;;;;;;;;:::i;:::-;;19428:194;-1:-1:-1;;19663:3:108;;18382:1309;;;;19732:8;19721:9;19705:64;;;19742:7;;19751:6;;19759:9;;19705:64;;;;;;;;;;;:::i;:::-;;;;;;;;16844:2932;;;16653:3123;;;;;;;;:::o;19898:1095::-;20049:19;;;19997:7;20049:19;;;:8;:19;;;;;20083:14;;-1:-1:-1;;;20083:14:108;;;;20078:54;;20106:26;;-1:-1:-1;;;20106:26:108;;;;;;;;;;;20078:54;20162:57;;-1:-1:-1;;;20162:57:108;;20143:16;;20162:6;;:22;;:57;;20185:9;;20196:15;;;;20213:5;;20162:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20229:21;20253:18;;;:8;:18;;;;;;;;20366:13;;;;20253:18;;-1:-1:-1;20253:18:108;-1:-1:-1;;;;;20366:13:108;735:10:64;-1:-1:-1;;;;;20350:29:108;;20346:69;;20388:27;;-1:-1:-1;;;20388:27:108;;;;;;;;;;;20346:69;20526:17;;;;:22;:49;;;;-1:-1:-1;20552:18:108;;-1:-1:-1;;;20552:18:108;;;;:23;20526:49;20522:89;;;20584:27;;-1:-1:-1;;;20584:27:108;;;;;;;;;;;20522:89;20688:18;;-1:-1:-1;;;20688:18:108;;;;:22;;;:48;;-1:-1:-1;20714:18:108;;-1:-1:-1;;;20714:18:108;;;;:22;;20688:48;20684:117;;;20759:31;;-1:-1:-1;;;20759:31:108;;;;;;;;;;;20684:117;20847:41;;;;-1:-1:-1;;;20875:12:108;20847:41;;;;;;20927:33;;20951:8;;20927:33;;-1:-1:-1;;20927:33:108;-1:-1:-1;20978:8:108;19898:1095;-1:-1:-1;;;;;;19898:1095:108:o;31800:219::-;31915:17;;31892:6;;31915:17;;31910:55;;31941:24;;-1:-1:-1;;;31941:24:108;;;;;;;;;;;31910:55;-1:-1:-1;;;;31800:219:108;;;;;;;:::o;34882:300::-;34964:15;35011:13;;;:5;:13;;;;;35047:17;;;:24;35038:33;;35034:93;;35094:22;;-1:-1:-1;;;35094:22:108;;;;;;;;;;;35034:93;35143:4;:17;;35161:5;35143:24;;;;;;;;:::i;:::-;;;;;;;;;;:32;-1:-1:-1;;;;;35143:32:108;;34882:300;-1:-1:-1;;;;34882:300:108:o;26511:122::-;6491:13;:11;:13::i;:::-;26594:32:::1;26603:6;26611:7;26620:5;26594:8;:32::i;:::-;26511:122:::0;;:::o;37223:666::-;37326:16;37587:18;;;:8;:18;;;;;37637:16;;37667:19;;;;37326:16;;;;;;;;;;;;-1:-1:-1;;;37637:16:108;;;;;;37667:19;;37700:38;37667:19;37637:16;37700:38;:::i;:::-;37752:19;;;;;;37616:266;;;;-1:-1:-1;37616:266:108;;;;;-1:-1:-1;37752:19:108;;;;;;;-1:-1:-1;;;;37785:15:108;;;;;-1:-1:-1;;;;37814:19:108;;;;;-1:-1:-1;;;;37847:25:108;;;;;-1:-1:-1;37616:266:108;-1:-1:-1;;37223:666:108:o;23594:287::-;23683:16;6491:13;:11;:13::i;:::-;-1:-1:-1;23723:14:108::1;::::0;-1:-1:-1;;;23723:14:108;::::1;;;23747:41;23723:14:::0;23772:15;23747:13:::1;:41::i;:::-;23822:14;:16:::0;;::::1;;-1:-1:-1::0;;;23822:16:108;;::::1;::::0;::::1;::::0;;;::::1;;;-1:-1:-1::0;;;;23822:16:108;;::::1;;::::0;;6514:1:::1;23594:287:::0;;;:::o;28035:225::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;28113:26:108;::::1;28109:69;;28148:30;;-1:-1:-1::0;;;28148:30:108::1;;;;;;;;;;;28109:69;28188:9;:24:::0;;-1:-1:-1;;;;;;28188:24:108::1;-1:-1:-1::0;;;;;28188:24:108;::::1;::::0;;::::1;::::0;;;28227:26:::1;::::0;::::1;::::0;-1:-1:-1;;28227:26:108::1;28035:225:::0;:::o;35373:132::-;35476:13;;;;:5;:13;;;;;:22;;35469:29;;35435:22;;35476;35469:29;;;:::i;11681:2553::-;11903:17;;11822:16;;11903:17;;11898:55;;11929:24;;-1:-1:-1;;;11929:24:108;;;;;;;;;;;11898:55;11997:19;;;11964:30;11997:19;;;:8;:19;;;;;12091:14;;-1:-1:-1;;;12091:14:108;;;;12086:54;;12114:26;;-1:-1:-1;;;12114:26:108;;;;;;;;;;;12086:54;12224:39;735:10:64;12239:12:108;12253:9;12224:14;:39::i;:::-;12219:80;;12272:27;;-1:-1:-1;;;12272:27:108;;;;;;;;;;;12219:80;12357:27;735:10:64;12371:12:108;656:96:64;12357:27:108;12353:68;;;12393:28;;-1:-1:-1;;;12393:28:108;;;;;;;;;;;12353:68;12501:19;12476:44;;12472:82;;;12529:25;;-1:-1:-1;;;12529:25:108;;;;;;;;;;;12472:82;12623:31;;;;:18;;;12736:30;12788:57;;-1:-1:-1;;;12788:57:108;;12623:31;;;;-1:-1:-1;;;12679:25:108;;;;;12736:30;12788:6;;:22;;:57;;12811:9;;12822:15;;;;12839:5;;12788:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12946:21;12970:18;;;:8;:18;;;;;13002:16;;12970:18;;-1:-1:-1;12970:18:108;-1:-1:-1;;;13002:16:108;;;;:21;12998:66;;13032:32;;-1:-1:-1;;;13032:32:108;;;;;;;;;;;12998:66;13116:17;;;:32;;;;;;;-1:-1:-1;13116:32:108;;;;;;;;;;;13208:22;;;:40;13233:15;;13208:22;:40;:::i;:::-;-1:-1:-1;13258:40:108;;13308:28;;;-1:-1:-1;;;13308:28:108;;;;;13258:40;13285:12;13258:40;13308:28;;;;13365:10;;;:37;;13401:1;13365:37;;;13385:12;13365:37;13346:56;;;;;;;-1:-1:-1;;;13346:56:108;;;;;;;;13730:10;;;:55;;13784:1;13730:55;;;34768:21;34808:13;;;:5;:13;;;;;:26;;:33;13750:30;13702:25;;;:83;;-1:-1:-1;;13795:34:108;-1:-1:-1;;;13702:83:108;;;;;-1:-1:-1;;13795:34:108;;;;;;;;;;;13839:13;;;:28;;735:10:64;-1:-1:-1;;;;;;13839:28:108;;;;;;13877:10;;;:22;13890:9;13877:10;:22;:::i;:::-;-1:-1:-1;13909:12:108;;;:20;;;13945:256;;;735:10:64;13980:8:108;13945:256;14067:15;;14096:12;14122:27;;;;14096:12;14122:27;:::i;:::-;14163:5;14182:9;13945:256;;;;;;;;;;;:::i;:::-;;;;;;;;14212:15;;;;;11681:2553;;;;;;;:::o;33795:226::-;33902:5;:12;33864:13;;33893:21;;;;33889:81;;33937:22;;-1:-1:-1;;;33937:22:108;;;;;;;;;;;33889:81;33986:5;33992;33986:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;33979:35;;;;;:::i;25151:626::-;6491:13;:11;:13::i;:::-;25268:14:::1;::::0;::::1;-1:-1:-1::0;;;25268:14:108;;::::1;::::0;::::1;25256:26:::0;;::::1;;25252:65;;;25291:26;;-1:-1:-1::0;;;25291:26:108::1;;;;;;;;;;;25252:65;25496:5;:12:::0;25486:22:::1;::::0;::::1;;25482:61;;25517:26;;-1:-1:-1::0;;;25517:26:108::1;;;;;;;;;;;25482:61;25553:17;25573:5;25579:6;25573:13;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;25610:22:::0;;25573:13;;-1:-1:-1;25600:32:108::1;::::0;::::1;;25596:74;;25641:29;;-1:-1:-1::0;;;25641:29:108::1;;;;;;;;;;;25596:74;25707:9;25681:4;:15;;25697:6;25681:23;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25732:38;25744:6;25752;25760:9;25732:38;;;;;;;40508:4:180::0;40496:17;;;40478:36;;40550:17;;;;40545:2;40530:18;;40523:45;40616:6;40604:19;;;;40599:2;40584:18;;40577:47;40466:2;40451:18;;40286:344;25732:38:108::1;;;;;;;;25242:535;25151:626:::0;;;:::o;38104:169::-;38229:18;;;;:8;:18;;;;;:30;;:37;;38187:23;;38229:30;38260:5;;38229:37;;;;;;:::i;:::-;;;;;;;;38222:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38104:169;;;;:::o;27479:180::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;27570:19:108;::::1;;::::0;;;:10:::1;:19;::::0;;;;;:33;;-1:-1:-1;;27570:33:108::1;::::0;::::1;;::::0;;::::1;::::0;;;27618:34;;27570:33;;:19;27618:34:::1;::::0;::::1;27479:180:::0;;:::o;24824:293::-;6491:13;:11;:13::i;:::-;24900:5:::1;:12:::0;24891:21:::1;::::0;::::1;;24887:60;;24921:26;;-1:-1:-1::0;;;24921:26:108::1;;;;;;;;;;;24887:60;25064:5;25070;25064:12;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;25057:19:::1;25064:12:::0;;25057:19:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;;25092:18:108::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;24824:293:::0;:::o;21027:130::-;21104:46;21114:8;735:10:64;21138:7:108;21104:46;;;;;;;;;;;;:9;:46::i;9611:646::-;6797:12;:10;:12::i;:::-;9710:17:::1;::::0;::::1;;9706:56;;;9736:26;;-1:-1:-1::0;;;9736:26:108::1;;;;;;;;;;;9706:56;9792:14;::::0;-1:-1:-1;;;9792:14:108;::::1;;;9773:16;9852:363;9876:19;:26;9872:1;:30;9852:363;;;10041:1;-1:-1:-1::0;;;;;9993:50:108::1;:19;10013:1;9993:22;;;;;;;;:::i;:::-;;;;;;;:36;;;-1:-1:-1::0;;;;;9993:50:108::1;;9989:216;;10063:48;10077:9;10088:19;10108:1;10088:22;;;;;;;;:::i;:::-;;;;;;;10063:13;:48::i;:::-;10161:11;;;;;9989:216;9904:3;;9852:363;;;-1:-1:-1::0;10224:14:108::1;:26:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;10224:26:108::1;-1:-1:-1::0;;;;10224:26:108;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;9611:646:108:o;35539:1007::-;35602:11;35742:18;;;:8;:18;;;;;35775:17;;;;:22;:49;;;;-1:-1:-1;35801:18:108;;-1:-1:-1;;;35801:18:108;;;;:23;35775:49;:76;;;;-1:-1:-1;35828:18:108;;-1:-1:-1;;;35828:18:108;;;;:23;35775:76;:103;;;;-1:-1:-1;35855:18:108;;-1:-1:-1;;;35855:18:108;;;;:23;35775:103;35771:164;;;-1:-1:-1;35901:23:108;;35539:1007;-1:-1:-1;;35539:1007:108:o;35771:164::-;35948:18;;-1:-1:-1;;;35948:18:108;;;;:22;35944:81;;-1:-1:-1;35993:21:108;;35539:1007;-1:-1:-1;;35539:1007:108:o;35944:81::-;36038:18;;-1:-1:-1;;;36038:18:108;;;;:22;36034:81;;-1:-1:-1;36083:21:108;;35539:1007;-1:-1:-1;;35539:1007:108:o;36034:81::-;36128:18;;-1:-1:-1;;;36128:18:108;;;;:22;36124:81;;-1:-1:-1;36173:21:108;;35539:1007;-1:-1:-1;;35539:1007:108:o;36124:81::-;36253:19;;;;36234:16;;36215;;36234:38;;36253:19;;;;;-1:-1:-1;;;36234:16:108;;;;:38;:::i;:::-;36215:57;;;;36299:12;36287:8;:24;36283:257;;-1:-1:-1;36334:18:108;;35539:1007;-1:-1:-1;;;35539:1007:108:o;36283:257::-;36374:24;36389:8;36374:14;:24::i;:::-;36373:25;:54;;;;36403:24;36418:8;36403:14;:24::i;:::-;36402:25;36373:54;36369:171;;;-1:-1:-1;36450:20:108;;35539:1007;-1:-1:-1;;;35539:1007:108:o;36369:171::-;-1:-1:-1;36508:21:108;;35539:1007;-1:-1:-1;;;35539:1007:108:o;26282:195::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;40321:19:108;;40298:4;40321:19;;;:10;:19;;;;;;;;26365:63:::1;;;26400:28;;-1:-1:-1::0;;;26400:28:108::1;;;;;;;;;;;26365:63;26439:31;26448:6;26456:7;26465:4;26439:8;:31::i;10433:120::-:0;6797:12;:10;:12::i;:::-;10532:13:::1;::::0;;10543:1:::1;10532:13:::0;;;::::1;::::0;::::1;::::0;;;10505:41:::1;::::0;10522:8;;10532:13;::::1;::::0;10505:41:::1;10433:120:::0;:::o;25811:437::-;6491:13;:11;:13::i;:::-;25931:5:::1;25925:19;25948:1;25925:24:::0;25921:59:::1;;25958:22;;-1:-1:-1::0;;;25958:22:108::1;;;;;;;;;;;25921:59;26016:3;26000:5;25994:19;:25;25990:60;;;26028:22;;-1:-1:-1::0;;;26028:22:108::1;;;;;;;;;;;25990:60;26089:3;26070:8;26064:22;:28;26060:61;;;26101:20;;-1:-1:-1::0;;;26101:20:108::1;;;;;;;;;;;26060:61;26132:13;::::0;;;:5:::1;:13;::::0;;;;:19:::1;;:27;26154:5:::0;26132:19;:27:::1;:::i;:::-;-1:-1:-1::0;26169:13:108::1;::::0;;;:5:::1;:13;::::0;;;;:22:::1;;:33;26194:8:::0;26169:22;:33:::1;:::i;:::-;;26227:6;26217:24;26235:5;26217:24;;;;;;:::i;:::-;;;;;;;;25811:437:::0;;;:::o;21191:168::-;21302:50;21312:8;735:10:64;21336:7:108;21345:6;;21302:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21302:9:108;;-1:-1:-1;;;21302:50:108:i;:::-;21191:168;;;;:::o;5990:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39928:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40037:19:108;;;;;;;;:8;:19;;;;;;;;;40030:37;;;;;;;40037:30;;;40030:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;40030:37:108;;;;;;;;-1:-1:-1;;;40030:37:108;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;40030:37:108;;;;;;;;;;;;;;;;-1:-1:-1;;;40030:37:108;;;;;;;;;39928:146::o;5228:557:75:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5752;;;5736:1;5752:16;;;;;;;;;-1:-1:-1;;;5566:212:75;;;-1:-1:-1;5566:212:75;;-1:-1:-1;5674:13:75;;-1:-1:-1;5709:4:75;;-1:-1:-1;5736:1:75;-1:-1:-1;5752:16:75;-1:-1:-1;5566:212:75;-1:-1:-1;5228:557:75:o;10587:135:108:-;6797:12;:10;:12::i;:::-;10681:34:::1;10698:8;10708:6;10681:16;:34::i;39593:301::-:0;39737:19;;;39682:16;39737:19;;;:8;:19;;;;;;;39779:11;;;:18;39770:27;;39766:87;;39820:22;;-1:-1:-1;;;39820:22:108;;;;;;;;;;;39766:87;39869:1;:11;;39881:5;39869:18;;;;;;;;:::i;:::-;;;;;;;;;39862:25;;;39593:301;;;;:::o;34055:282::-;34172:19;;;34134:4;34172:19;;;:8;:19;;;;;:30;;:42;34134:4;34239:33;34252:6;34172:42;34239:12;:33::i;:::-;34224:48;-1:-1:-1;34290:10:108;;;;;;:40;;;-1:-1:-1;;34304:11:108;:26;34290:40;34283:47;34055:282;-1:-1:-1;;;;;34055:282:108:o;33541:220::-;33647:5;:12;33607:15;;33638:21;;;;33634:81;;33682:22;;-1:-1:-1;;;33682:22:108;;;;;;;;;;;33634:81;33731:5;33737;33731:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;33724:30;;;;;;;;;;;;;;;;;;;;;33731:12;33724:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33724:30:108;;33541:220;-1:-1:-1;;;;;;;33541:220:108:o;27693:87::-;6491:13;:11;:13::i;:::-;27761:3:::1;:12;27767:6:::0;27761:3;:12:::1;:::i;24639:151::-:0;6491:13;:11;:13::i;:::-;24704:5:::1;:16:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;24704:16:108;;;;;;;;24715:4;;24704:16:::1;;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;::::1;:::i;:::-;-1:-1:-1::0;24704:16:108::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;24745:15:108;;24762:20:::1;::::0;::::1;::::0;24735:48:::1;::::0;::::1;::::0;-1:-1:-1;24735:48:108::1;::::0;24745:15;24762:20;24735:48:::1;:::i;:::-;;;;;;;;24639:151:::0;:::o;23915:237::-;6491:13;:11;:13::i;:::-;23990:19:::1;::::0;::::1;;::::0;;;:8:::1;:19;::::0;;;;:26;-1:-1:-1;;;23990:26:108;::::1;;;:35;;::::0;;23986:74:::1;;24034:26;;-1:-1:-1::0;;;24034:26:108::1;;;;;;;;;;;23986:74;24071:19;::::0;::::1;24100:5;24071:19:::0;;;:8:::1;:19;::::0;;;;;:34;;;::::1;::::0;;24120:25;::::1;::::0;24100:5;24120:25:::1;23915:237:::0;:::o;32460:290::-;32640:17;;32613:6;;32640:17;;32635:55;;32666:24;;-1:-1:-1;;;32666:24:108;;;;;;;;;;;32635:55;-1:-1:-1;;;;32460:290:108;;;;;;;;;;:::o;34371:296::-;34447:12;34491:13;;;:5;:13;;;;;;;;-1:-1:-1;;;;;34530:21:108;;;;;;;;;;;34565:10;;;34561:49;;34598:1;34591:8;;;;;;34561:49;34626:4;:17;;34652:1;34644:5;:9;;;;:::i;:::-;34626:28;;;;;;;;:::i;:::-;;;;;;;;;;:34;-1:-1:-1;;;34626:34:108;;;;;34371:296;-1:-1:-1;;;;;34371:296:108:o;37923:147::-;38029:18;;;;:8;:18;;;;;:34;;38022:41;;37989:21;;38029:34;38022:41;;;:::i;5442:17::-;;;;;;;:::i;14395:2224::-;14573:17;;14536:16;;14573:17;;14568:55;;14599:24;;-1:-1:-1;;;14599:24:108;;;;;;;;;;;14568:55;14645:57;;-1:-1:-1;;;14645:57:108;;:6;;:22;;:57;;14668:9;;14679:15;;;;14696:5;;14645:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14745:19;;;14712:30;14745:19;;;:8;:19;;;;;14780:14;;14634:68;;-1:-1:-1;14745:19:108;-1:-1:-1;;;14780:14:108;;;;14775:54;;14803:26;;-1:-1:-1;;;14803:26:108;;;;;;;;;;;14775:54;14919:19;14894:44;;14890:82;;;14947:25;;-1:-1:-1;;;14947:25:108;;;;;;;;;;;14890:82;15036:27;735:10:64;15050:12:108;656:96:64;15036:27:108;15032:68;;;15072:28;;-1:-1:-1;;;15072:28:108;;;;;;;;;;;15032:68;15187:39;735:10:64;15202:12:108;656:96:64;15187:39:108;15182:80;;15235:27;;-1:-1:-1;;;15235:27:108;;;;;;;;;;;15182:80;15273:21;15297:18;;;:8;:18;;;;;15405;;-1:-1:-1;;;15405:18:108;;;;:22;;;:48;;-1:-1:-1;15431:18:108;;-1:-1:-1;;;15431:18:108;;;;:22;;15405:48;15401:93;;;15462:32;;-1:-1:-1;;;15462:32:108;;;;;;;;;;;15401:93;15558:18;;-1:-1:-1;;;15558:18:108;;;;:22;15554:60;;15589:25;;-1:-1:-1;;;15589:25:108;;;;;;;;;;;15554:60;15724:25;;15661:89;;-1:-1:-1;;;15661:89:108;;:6;;:12;;:89;;15674:9;;15685:15;;;;15710:4;;15717:5;;-1:-1:-1;;;15724:25:108;;;;;;15661:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15829:16:108;;-1:-1:-1;;;15829:16:108;;;;;:21;;-1:-1:-1;15825:59:108;;-1:-1:-1;15825:59:108;15852:17;;;:32;;;;;;;-1:-1:-1;15852:32:108;;;;;;;;;;;15825:59;15953:13;;;:28;;735:10:64;-1:-1:-1;;;;;;15953:28:108;;;;;;16069:41;;16120:28;;-1:-1:-1;;;16097:12:108;16069:41;;;16120:28;;;-1:-1:-1;;;16120:28:108;;;;;;;16158:22;;;:40;16183:15;;16158:22;:40;:::i;:::-;-1:-1:-1;16208:10:108;;;:22;16221:9;16208:10;:22;:::i;:::-;-1:-1:-1;16240:12:108;;;:20;;;16325:21;;16316:95;;-1:-1:-1;;;16316:95:108;;16300:12;;-1:-1:-1;;;;;16325:21:108;;16316:46;;:95;;735:10:64;;16377:9:108;;16388:15;;;;16240:20;;16316:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16299:112;;16426:7;16421:51;;16442:30;;-1:-1:-1;;;16442:30:108;;;;;;;;;;;16421:51;16511:75;;;735:10:64;-1:-1:-1;;;;;16511:75:108;;16552:15;;16569:5;16576:9;16511:75;;;;;;;;;:::i;:::-;;;;;;;;16597:15;;;14395:2224;;;;;;;:::o;27814:187::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;27898:25:108;::::1;27894:68;;27932:30;;-1:-1:-1::0;;;27932:30:108::1;;;;;;;;;;;27894:68;27972:8;:22:::0;;-1:-1:-1;;;;;;27972:22:108::1;-1:-1:-1::0;;;;;27972:22:108;;;::::1;::::0;;;::::1;::::0;;27814:187::o;32120:230::-;32245:17;;32222:6;;32245:17;;32240:55;;32271:24;;-1:-1:-1;;;32271:24:108;;;;;;;;;;;32240:55;-1:-1:-1;;;;32120:230:108;;;;;;;;;:::o;38307:127::-;38405:18;;;;:8;:18;;;;;:22;;38398:29;;38368:18;;38405:22;38398:29;;;:::i;6885:128::-;6935:38;735:10:64;4235:17:108;6935:12;:38::i;:::-;:43;;6977:1;6935:43;6931:75;;6987:19;;-1:-1:-1;;;6987:19:108;;;;;;;;;;;10913:533;735:10:64;-1:-1:-1;;;;;11075:24:108;;;11071:146;;11115:41;4235:17;735:10:64;11150:5:108;11115:8;:41::i;:::-;11170:36;4235:17;11191:8;11201:4;11170:8;:36::i;:::-;11265:13;;:17;11261:145;;11303:9;11298:98;11322:6;:13;11318:1;:17;11298:98;;;11360:5;11371:6;11378:1;11371:9;;;;;;;;:::i;:::-;;;;;;;;;;;;11360:21;;;;;;;-1:-1:-1;11360:21:108;;;;;;;;;;;11371:9;;11360:21;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11360:21:108;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;11337:3:108;;11298:98;;;;11261:145;-1:-1:-1;;11415:17:108;:24;;-1:-1:-1;;11415:24:108;11435:4;11415:24;;;10913:533::o;6581:116::-;735:10:64;6656:4:108;6632:29;6628:62;;6670:20;;-1:-1:-1;;;6670:20:108;;;;;;;;;;;27253:192;27336:55;;-1:-1:-1;;;27336:55:108;;27360:5;27336:55;;;43352:25:180;43393:18;;;43386:34;;;-1:-1:-1;;;;;43456:55:180;;43436:18;;;43429:83;43555:14;;43548:22;43528:18;;;43521:50;27336:15:108;;:23;;43324:19:180;;27336:55:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27431:6;27406:32;;27422:7;-1:-1:-1;;;;;27406:32:108;27414:6;27406:32;;;;;;;;;;27253:192;;;:::o;24362:243::-;24462:96;;-1:-1:-1;;;24462:96:108;;:15;;:28;;:96;;24491:8;;24501:10;;24513:9;;24524:15;;24541:16;;24462:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24573:25:108;;;;;;-1:-1:-1;24573:25:108;;-1:-1:-1;24573:25:108;;;24362:243;;:::o;21797:1562::-;21907:21;21931:18;;;:8;:18;;;;;22076:17;;;;:22;;:48;;-1:-1:-1;22102:18:108;;-1:-1:-1;;;22102:18:108;;;;:22;;22076:48;:74;;;-1:-1:-1;22128:18:108;;-1:-1:-1;;;22128:18:108;;;;:22;;22076:74;:100;;;-1:-1:-1;22154:18:108;;-1:-1:-1;;;22154:18:108;;;;:22;;22076:100;:173;;;-1:-1:-1;22215:19:108;;;;22196:16;;22237:12;;22196:38;;22215:19;;;;;-1:-1:-1;;;22196:16:108;;;;:38;:::i;:::-;:53;;;22076:173;22059:266;;;22281:33;;-1:-1:-1;;;22281:33:108;;;;;;;;;;;22059:266;22454:16;;-1:-1:-1;;;22454:16:108;;;;22485:34;22500:7;22454:16;22485:14;:34::i;:::-;22480:75;;22528:27;;-1:-1:-1;;;22528:27:108;;;;;;;;;;;22480:75;22864:19;22886:24;22900:9;22886:13;:24::i;:::-;:36;;-1:-1:-1;;;22936:26:108;;;;;:83;;-1:-1:-1;23003:16:108;;-1:-1:-1;;;23003:16:108;;;;22966:34;22979:7;22988:11;22966:12;:34::i;:::-;:53;;;22936:83;22932:151;;;23042:30;;-1:-1:-1;;;23042:30:108;;;;;;;;;;;22932:151;-1:-1:-1;;;;;23143:24:108;;;;;;:15;;;:24;;;;;;;;23139:62;;;23176:25;;-1:-1:-1;;;23176:25:108;;;;;;;;;;;23139:62;23254:38;23265:8;23275:7;23284;23254:10;:38::i;:::-;23336:7;23308:44;;23326:8;23317:7;-1:-1:-1;;;;;23308:44:108;;23345:6;23308:44;;;;;;:::i;:::-;;;;;;;;21897:1462;;;21797:1562;;;;:::o;28671:849::-;28736:4;28841:18;;;:8;:18;;;;;28914:24;;28736:4;;28900:39;;-1:-1:-1;;;28914:24:108;;;;28900:13;:39::i;:::-;29159:33;;;;29344:17;;;;;;-1:-1:-1;;;;29159:33:108;;;;;29344:22;;;;:168;;-1:-1:-1;29470:27:108;;;;4488:3;;29444:53;;29470:27;-1:-1:-1;;;29470:27:108;;;;;-1:-1:-1;;;29444:23:108;;;:53;:::i;:::-;29443:69;;;;;;:::i;:::-;29402:17;;;;29386:33;;;;:13;:33;:::i;:::-;:126;;29336:177;28671:849;-1:-1:-1;;;;;28671:849:108:o;29724:709::-;29789:4;29900:18;;;:8;:18;;;;;29973:24;;29789:4;;29959:39;;-1:-1:-1;;;29973:24:108;;;;29959:13;:39::i;:::-;30129:33;;;;30323:17;;;;;;-1:-1:-1;;;;30129:33:108;;;;;30323:22;;;;:103;;-1:-1:-1;30389:23:108;;;;:37;;4488:3;;-1:-1:-1;;;30389:23:108;;;;:37;:::i;:::-;30365:20;;;;30349:36;;;;:13;:36;:::i;6105:126:75:-;6151:13;6183:41;:5;6210:13;6183:26;:41::i;:::-;6176:48;;6105:126;:::o;6557:135::-;6606:13;6638:47;:8;6668:16;6638:29;:47::i;30924:159:108:-;31013:63;;-1:-1:-1;;;31013:63:108;;31039:8;31013:63;;;45425:25:180;45466:18;;;45459:34;;;-1:-1:-1;;;;;45529:55:180;;45509:18;;;45502:83;45633:4;45621:17;;45601:18;;;45594:45;31013:15:108;;:25;;45397:19:180;;31013:63:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30924:159;;;:::o;3376:267:70:-;3470:13;1390:66;3499:46;;3495:142;;3568:15;3577:5;3568:8;:15::i;:::-;3561:22;;;;3495:142;3621:5;3614:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:380;2139:13;2164:11;2178:16;2189:4;2178:10;:16::i;:::-;2302;;;2313:4;2302:16;;;;;;;;;2164:30;;-1:-1:-1;2282:17:70;;2302:16;;;;;;;;;-1:-1:-1;;;2367:16:70;;;-1:-1:-1;2412:4:70;2403:14;;2396:28;;;;-1:-1:-1;2367:16:70;2080:380::o;2532:247::-;2593:7;2665:4;2629:40;;2692:4;2683:13;;2679:71;;;2719:20;;-1:-1:-1;;;2719:20:70;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;448:286:180;506:6;559:2;547:9;538:7;534:23;530:32;527:52;;;575:1;572;565:12;527:52;601:23;;-1:-1:-1;;;;;;653:32:180;;643:43;;633:71;;700:1;697;690:12;633:71;723:5;448:286;-1:-1:-1;;;448:286:180:o;931:226::-;990:6;1043:2;1031:9;1022:7;1018:23;1014:32;1011:52;;;1059:1;1056;1049:12;1011:52;-1:-1:-1;1104:23:180;;931:226;-1:-1:-1;931:226:180:o;1162:289::-;1204:3;1242:5;1236:12;1269:6;1264:3;1257:19;1325:6;1318:4;1311:5;1307:16;1300:4;1295:3;1291:14;1285:47;1377:1;1370:4;1361:6;1356:3;1352:16;1348:27;1341:38;1440:4;1433:2;1429:7;1424:2;1416:6;1412:15;1408:29;1403:3;1399:39;1395:50;1388:57;;;1162:289;;;;:::o;1456:220::-;1605:2;1594:9;1587:21;1568:4;1625:45;1666:2;1655:9;1651:18;1643:6;1625:45;:::i;1681:159::-;1748:20;;1808:6;1797:18;;1787:29;;1777:57;;1830:1;1827;1820:12;1845:184;1903:6;1956:2;1944:9;1935:7;1931:23;1927:32;1924:52;;;1972:1;1969;1962:12;1924:52;1995:28;2013:9;1995:28;:::i;2523:367::-;2586:8;2596:6;2650:3;2643:4;2635:6;2631:17;2627:27;2617:55;;2668:1;2665;2658:12;2617:55;-1:-1:-1;2691:20:180;;-1:-1:-1;;;;;2723:30:180;;2720:50;;;2766:1;2763;2756:12;2720:50;2803:4;2795:6;2791:17;2779:29;;2863:3;2856:4;2846:6;2843:1;2839:14;2831:6;2827:27;2823:38;2820:47;2817:67;;;2880:1;2877;2870:12;2817:67;2523:367;;;;;:::o;2895:1298::-;3081:6;3089;3097;3105;3113;3121;3129;3137;3190:3;3178:9;3169:7;3165:23;3161:33;3158:53;;;3207:1;3204;3197:12;3158:53;3230:28;3248:9;3230:28;:::i;:::-;3220:38;-1:-1:-1;3327:2:180;3312:18;;3299:32;;-1:-1:-1;3406:2:180;3391:18;;3378:32;-1:-1:-1;;;;;3422:30:180;;3419:50;;;3465:1;3462;3455:12;3419:50;3504:70;3566:7;3557:6;3546:9;3542:22;3504:70;:::i;:::-;3593:8;;-1:-1:-1;3478:96:180;-1:-1:-1;;3681:2:180;3666:18;;3653:32;-1:-1:-1;;;;;3697:32:180;;3694:52;;;3742:1;3739;3732:12;3694:52;3781:72;3845:7;3834:8;3823:9;3819:24;3781:72;:::i;:::-;3872:8;;-1:-1:-1;3755:98:180;-1:-1:-1;;3960:3:180;3945:19;;3932:33;-1:-1:-1;;;;;3977:32:180;;3974:52;;;4022:1;4019;4012:12;3974:52;4061:72;4125:7;4114:8;4103:9;4099:24;4061:72;:::i;:::-;2895:1298;;;;-1:-1:-1;2895:1298:180;;-1:-1:-1;2895:1298:180;;;;;;4152:8;-1:-1:-1;;;2895:1298:180:o;4581:347::-;4632:8;4642:6;4696:3;4689:4;4681:6;4677:17;4673:27;4663:55;;4714:1;4711;4704:12;4663:55;-1:-1:-1;4737:20:180;;-1:-1:-1;;;;;4769:30:180;;4766:50;;;4812:1;4809;4802:12;4766:50;4849:4;4841:6;4837:17;4825:29;;4901:3;4894:4;4885:6;4877;4873:19;4869:30;4866:39;4863:59;;;4918:1;4915;4908:12;4933:595;5020:6;5028;5036;5044;5097:2;5085:9;5076:7;5072:23;5068:32;5065:52;;;5113:1;5110;5103:12;5065:52;5136:28;5154:9;5136:28;:::i;:::-;5126:38;;5215:2;5204:9;5200:18;5187:32;-1:-1:-1;;;;;5234:6:180;5231:30;5228:50;;;5274:1;5271;5264:12;5228:50;5313:58;5363:7;5354:6;5343:9;5339:22;5313:58;:::i;:::-;4933:595;;5390:8;;-1:-1:-1;5287:84:180;;5494:2;5479:18;5466:32;;4933:595;-1:-1:-1;;;;4933:595:180:o;5715:154::-;-1:-1:-1;;;;;5794:5:180;5790:54;5783:5;5780:65;5770:93;;5859:1;5856;5849:12;5874:806;5971:6;5979;5987;5995;6003;6056:3;6044:9;6035:7;6031:23;6027:33;6024:53;;;6073:1;6070;6063:12;6024:53;6112:9;6099:23;6131:31;6156:5;6131:31;:::i;:::-;6181:5;-1:-1:-1;6238:2:180;6223:18;;6210:32;6251:33;6210:32;6251:33;:::i;:::-;6303:7;-1:-1:-1;6383:2:180;6368:18;;6355:32;;-1:-1:-1;6464:2:180;6449:18;;6436:32;-1:-1:-1;;;;;6480:30:180;;6477:50;;;6523:1;6520;6513:12;6477:50;6562:58;6612:7;6603:6;6592:9;6588:22;6562:58;:::i;:::-;5874:806;;;;-1:-1:-1;5874:806:180;;-1:-1:-1;6639:8:180;;6536:84;5874:806;-1:-1:-1;;;5874:806:180:o;7123:346::-;7191:6;7199;7252:2;7240:9;7231:7;7227:23;7223:32;7220:52;;;7268:1;7265;7258:12;7220:52;-1:-1:-1;;7313:23:180;;;7433:2;7418:18;;;7405:32;;-1:-1:-1;7123:346:180:o;7474:367::-;7542:6;7550;7603:2;7591:9;7582:7;7578:23;7574:32;7571:52;;;7619:1;7616;7609:12;7571:52;7664:23;;;-1:-1:-1;7763:2:180;7748:18;;7735:32;7776:33;7735:32;7776:33;:::i;:::-;7828:7;7818:17;;;7474:367;;;;;:::o;8651:127::-;8712:10;8707:3;8703:20;8700:1;8693:31;8743:4;8740:1;8733:15;8767:4;8764:1;8757:15;8783:255;8855:2;8849:9;8897:6;8885:19;;-1:-1:-1;;;;;8919:34:180;;8955:22;;;8916:62;8913:88;;;8981:18;;:::i;:::-;9017:2;9010:22;8783:255;:::o;9043:253::-;9115:2;9109:9;9157:4;9145:17;;-1:-1:-1;;;;;9177:34:180;;9213:22;;;9174:62;9171:88;;;9239:18;;:::i;9301:257::-;9373:4;9367:11;;;9405:17;;-1:-1:-1;;;;;9437:34:180;;9473:22;;;9434:62;9431:88;;;9499:18;;:::i;9563:275::-;9634:2;9628:9;9699:2;9680:13;;-1:-1:-1;;9676:27:180;9664:40;;-1:-1:-1;;;;;9719:34:180;;9755:22;;;9716:62;9713:88;;;9781:18;;:::i;:::-;9817:2;9810:22;9563:275;;-1:-1:-1;9563:275:180:o;9843:450::-;9908:5;9940:1;-1:-1:-1;;;;;9956:6:180;9953:30;9950:56;;;9986:18;;:::i;:::-;-1:-1:-1;10052:2:180;10031:15;;-1:-1:-1;;10027:29:180;10058:4;10023:40;10081:21;10023:40;10081:21;:::i;:::-;10072:30;;;10125:6;10118:5;10111:21;10165:3;10156:6;10151:3;10147:16;10144:25;10141:45;;;10182:1;10179;10172:12;10141:45;10231:6;10226:3;10219:4;10212:5;10208:16;10195:43;10285:1;10278:4;10269:6;10262:5;10258:18;10254:29;10247:40;9843:450;;;;;:::o;10298:222::-;10341:5;10394:3;10387:4;10379:6;10375:17;10371:27;10361:55;;10412:1;10409;10402:12;10361:55;10434:80;10510:3;10501:6;10488:20;10481:4;10473:6;10469:17;10434:80;:::i;10525:163::-;10592:20;;10652:10;10641:22;;10631:33;;10621:61;;10678:1;10675;10668:12;10693:156;10759:20;;10819:4;10808:16;;10798:27;;10788:55;;10839:1;10836;10829:12;10854:842;10911:5;10959:6;10947:9;10942:3;10938:19;10934:32;10931:52;;;10979:1;10976;10969:12;10931:52;11001:22;;:::i;:::-;11068:23;;11100:22;;10992:31;-1:-1:-1;11154:37:180;11187:2;11172:18;;11154:37;:::i;:::-;11149:2;11142:5;11138:14;11131:61;11224:37;11257:2;11246:9;11242:18;11224:37;:::i;:::-;11219:2;11212:5;11208:14;11201:61;11294:37;11327:2;11316:9;11312:18;11294:37;:::i;:::-;11289:2;11282:5;11278:14;11271:61;11365:38;11398:3;11387:9;11383:19;11365:38;:::i;:::-;11359:3;11352:5;11348:15;11341:63;11437:38;11470:3;11459:9;11455:19;11437:38;:::i;:::-;11431:3;11424:5;11420:15;11413:63;11509:37;11541:3;11530:9;11526:19;11509:37;:::i;:::-;11503:3;11496:5;11492:15;11485:62;11580:37;11612:3;11601:9;11597:19;11580:37;:::i;:::-;11574:3;11567:5;11563:15;11556:62;11651:38;11684:3;11673:9;11669:19;11651:38;:::i;:::-;11645:3;11638:5;11634:15;11627:63;10854:842;;;;:::o;11701:903::-;11763:5;11811:6;11799:9;11794:3;11790:19;11786:32;11783:52;;;11831:1;11828;11821:12;11783:52;11853:22;;:::i;:::-;11844:31;;11911:9;11898:23;-1:-1:-1;;;;;11936:6:180;11933:30;11930:50;;;11976:1;11973;11966:12;11930:50;12003:46;12045:3;12036:6;12025:9;12021:22;12003:46;:::i;:::-;11996:5;11989:61;;12102:2;12091:9;12087:18;12074:32;12115:33;12140:7;12115:33;:::i;:::-;12175:2;12164:14;;12157:31;12241:2;12226:18;;12213:32;-1:-1:-1;;;;;12257:32:180;;12254:52;;;12302:1;12299;12292:12;12254:52;12325:24;;12380:4;12372:13;;12368:23;-1:-1:-1;12358:51:180;;12405:1;12402;12395:12;12358:51;12441:70;12507:3;12502:2;12489:16;12484:2;12480;12476:11;12441:70;:::i;:::-;12436:2;12429:5;12425:14;12418:94;;12544:53;12593:3;12588:2;12577:9;12573:18;12544:53;:::i;:::-;12539:2;12532:5;12528:14;12521:77;11701:903;;;;:::o;12609:362::-;12702:6;12755:2;12743:9;12734:7;12730:23;12726:32;12723:52;;;12771:1;12768;12761:12;12723:52;12811:9;12798:23;-1:-1:-1;;;;;12836:6:180;12833:30;12830:50;;;12876:1;12873;12866:12;12830:50;12899:66;12957:7;12948:6;12937:9;12933:22;12899:66;:::i;:::-;12889:76;12609:362;-1:-1:-1;;;;12609:362:180:o;12976:247::-;13035:6;13088:2;13076:9;13067:7;13063:23;13059:32;13056:52;;;13104:1;13101;13094:12;13056:52;13143:9;13130:23;13162:31;13187:5;13162:31;:::i;13228:812::-;13334:6;13342;13350;13358;13366;13419:3;13407:9;13398:7;13394:23;13390:33;13387:53;;;13436:1;13433;13426:12;13387:53;13459:28;13477:9;13459:28;:::i;:::-;13449:38;;13538:2;13527:9;13523:18;13510:32;-1:-1:-1;;;;;13557:6:180;13554:30;13551:50;;;13597:1;13594;13587:12;13551:50;13636:58;13686:7;13677:6;13666:9;13662:22;13636:58;:::i;:::-;13713:8;;-1:-1:-1;13610:84:180;-1:-1:-1;;13817:2:180;13802:18;;13789:32;;-1:-1:-1;13898:2:180;13883:18;;13870:32;-1:-1:-1;;;;;13914:32:180;;13911:52;;;13959:1;13956;13949:12;13911:52;13982;14026:7;14015:8;14004:9;14000:24;13982:52;:::i;:::-;13972:62;;;13228:812;;;;;;;;:::o;14045:182::-;14102:6;14155:2;14143:9;14134:7;14130:23;14126:32;14123:52;;;14171:1;14168;14161:12;14123:52;14194:27;14211:9;14194:27;:::i;14479:324::-;14551:6;14559;14567;14620:2;14608:9;14599:7;14595:23;14591:32;14588:52;;;14636:1;14633;14626:12;14588:52;14659:27;14676:9;14659:27;:::i;:::-;14649:37;;14705:36;14737:2;14726:9;14722:18;14705:36;:::i;:::-;14695:46;;14760:37;14793:2;14782:9;14778:18;14760:37;:::i;:::-;14750:47;;14479:324;;;;;:::o;15031:118::-;15117:5;15110:13;15103:21;15096:5;15093:32;15083:60;;15139:1;15136;15129:12;15154:382;15219:6;15227;15280:2;15268:9;15259:7;15255:23;15251:32;15248:52;;;15296:1;15293;15286:12;15248:52;15335:9;15322:23;15354:31;15379:5;15354:31;:::i;:::-;15404:5;-1:-1:-1;15461:2:180;15446:18;;15433:32;15474:30;15433:32;15474:30;:::i;16289:296::-;16355:6;16363;16416:2;16404:9;16395:7;16391:23;16387:32;16384:52;;;16432:1;16429;16422:12;16384:52;16477:23;;;-1:-1:-1;16543:36:180;16575:2;16560:18;;16543:36;:::i;:::-;16533:46;;16289:296;;;;;:::o;16590:198::-;16665:4;-1:-1:-1;;;;;16690:6:180;16687:30;16684:56;;;16720:18;;:::i;:::-;-1:-1:-1;16765:1:180;16761:14;16777:4;16757:25;;16590:198::o;16793:1108::-;16911:6;16964:2;16952:9;16943:7;16939:23;16935:32;16932:52;;;16980:1;16977;16970:12;16932:52;17020:9;17007:23;-1:-1:-1;;;;;17045:6:180;17042:30;17039:50;;;17085:1;17082;17075:12;17039:50;17108:22;;17161:4;17153:13;;17149:27;-1:-1:-1;17139:55:180;;17190:1;17187;17180:12;17139:55;17230:2;17217:16;17253:79;17269:62;17324:6;17269:62;:::i;:::-;17253:79;:::i;:::-;17354:3;17378:6;17373:3;17366:19;17410:2;17405:3;17401:12;17394:19;;17465:2;17455:6;17452:1;17448:14;17444:2;17440:23;17436:32;17422:46;;17491:7;17483:6;17480:19;17477:39;;;17512:1;17509;17502:12;17477:39;17544:2;17540;17536:11;17556:315;17572:6;17567:3;17564:15;17556:315;;;17658:3;17645:17;-1:-1:-1;;;;;17681:11:180;17678:35;17675:55;;;17726:1;17723;17716:12;17675:55;17755:73;17820:7;17815:2;17801:11;17797:2;17793:20;17789:29;17755:73;:::i;:::-;17743:86;;-1:-1:-1;17858:2:180;17849:12;;;;17589;17556:315;;;-1:-1:-1;17890:5:180;16793:1108;-1:-1:-1;;;;;;16793:1108:180:o;17906:345::-;18055:2;18040:18;;18088:1;18077:13;;18067:144;;18133:10;18128:3;18124:20;18121:1;18114:31;18168:4;18165:1;18158:15;18196:4;18193:1;18186:15;18067:144;18220:25;;;17906:345;:::o;18256:652::-;18353:6;18361;18369;18422:2;18410:9;18401:7;18397:23;18393:32;18390:52;;;18438:1;18435;18428:12;18390:52;18483:23;;;-1:-1:-1;18581:2:180;18566:18;;18553:32;-1:-1:-1;;;;;18597:30:180;;18594:50;;;18640:1;18637;18630:12;18594:50;18663;18705:7;18696:6;18685:9;18681:22;18663:50;:::i;:::-;18653:60;;;18766:2;18755:9;18751:18;18738:32;-1:-1:-1;;;;;18785:8:180;18782:32;18779:52;;;18827:1;18824;18817:12;18779:52;18850;18894:7;18883:8;18872:9;18868:24;18850:52;:::i;:::-;18840:62;;;18256:652;;;;;:::o;18913:594::-;19000:6;19008;19016;19024;19077:2;19065:9;19056:7;19052:23;19048:32;19045:52;;;19093:1;19090;19083:12;19045:52;19138:23;;;-1:-1:-1;19204:36:180;19236:2;19221:18;;19204:36;:::i;:::-;19194:46;;19291:2;19280:9;19276:18;19263:32;-1:-1:-1;;;;;19310:6:180;19307:30;19304:50;;;19350:1;19347;19340:12;19304:50;19389:58;19439:7;19430:6;19419:9;19415:22;19389:58;:::i;:::-;18913:594;;;;-1:-1:-1;19466:8:180;-1:-1:-1;;;;18913:594:180:o;19592:911::-;19674:5;19668:12;19663:3;19656:25;19742:10;19734:4;19727:5;19723:16;19717:23;19713:40;19706:4;19701:3;19697:14;19690:64;19815:10;19807:4;19800:5;19796:16;19790:23;19786:40;19779:4;19774:3;19770:14;19763:64;19873:4;19866:5;19862:16;19856:23;19888:47;19929:4;19924:3;19920:14;19906:12;7922:10;7911:22;7899:35;;7846:94;19888:47;;19983:4;19976:5;19972:16;19966:23;19998:49;20041:4;20036:3;20032:14;20016;2311:6;2300:18;2288:31;;2235:90;19998:49;;20095:4;20088:5;20084:16;20078:23;20110:49;20153:4;20148:3;20144:14;20128;2311:6;2300:18;2288:31;;2235:90;20110:49;;20207:4;20200:5;20196:16;20190:23;20222:48;20264:4;20259:3;20255:14;20239;19579:4;19568:16;19556:29;;19512:75;20222:48;;20318:4;20311:5;20307:16;20301:23;20333:48;20375:4;20370:3;20366:14;20350;19579:4;19568:16;19556:29;;19512:75;20333:48;;20429:6;20422:5;20418:18;20412:25;20446:51;20489:6;20484:3;20480:16;20464:14;7922:10;7911:22;7899:35;;7846:94;20446:51;;19592:911;;:::o;20508:258::-;20700:3;20685:19;;20713:47;20689:9;20742:6;20713:47;:::i;20771:1261::-;21177:3;21172;21168:13;21160:6;21156:26;21145:9;21138:45;21219:3;21214:2;21203:9;21199:18;21192:31;21119:4;21246:46;21287:3;21276:9;21272:19;21264:6;21246:46;:::i;:::-;21340:9;21332:6;21328:22;21323:2;21312:9;21308:18;21301:50;21374:33;21400:6;21392;21374:33;:::i;:::-;21438:2;21423:18;;21416:34;;;-1:-1:-1;;;;;21487:55:180;;21481:3;21466:19;;21459:84;21574:3;21559:19;;21552:35;;;21624:22;;;21618:3;21603:19;;21596:51;21696:13;;21718:22;;;21768:2;21794:15;;;;-1:-1:-1;21756:15:180;;;;-1:-1:-1;21837:169:180;21851:6;21848:1;21845:13;21837:169;;;21912:13;;21900:26;;21955:2;21981:15;;;;21946:12;;;;21873:1;21866:9;21837:169;;;-1:-1:-1;22023:3:180;;20771:1261;-1:-1:-1;;;;;;;;;;;20771:1261:180:o;22037:1120::-;22088:5;22136:4;22124:9;22119:3;22115:19;22111:30;22108:50;;;22154:1;22151;22144:12;22108:50;22176:22;;:::i;:::-;22167:31;;22234:9;22221:23;-1:-1:-1;;;;;22259:6:180;22256:30;22253:50;;;22299:1;22296;22289:12;22253:50;22322:22;;22375:4;22367:13;;22363:23;-1:-1:-1;22353:51:180;;22400:1;22397;22390:12;22353:51;22440:2;22427:16;22463:79;22479:62;22534:6;22479:62;:::i;22463:79::-;22564:3;22588:6;22583:3;22576:19;22620:4;22615:3;22611:14;22604:21;;22677:4;22667:6;22664:1;22660:14;22656:2;22652:23;22648:34;22634:48;;22705:3;22697:6;22694:15;22691:35;;;22722:1;22719;22712:12;22691:35;22754:4;22750:2;22746:13;22735:24;;22768:151;22784:6;22779:3;22776:15;22768:151;;;22852:22;22870:3;22852:22;:::i;:::-;22840:35;;22904:4;22801:14;;;;22895;;;;22768:151;;;22928:20;;-1:-1:-1;;;23001:4:180;22986:20;;22973:34;-1:-1:-1;;;;;23019:32:180;;23016:52;;;23064:1;23061;23054:12;23016:52;23102:48;23146:3;23135:8;23124:9;23120:24;23102:48;:::i;:::-;23095:4;23088:5;23084:16;23077:74;;22037:1120;;;;:::o;23162:1221::-;23278:6;23286;23339:2;23327:9;23318:7;23314:23;23310:32;23307:52;;;23355:1;23352;23345:12;23307:52;23394:9;23381:23;23413:31;23438:5;23413:31;:::i;:::-;23463:5;-1:-1:-1;23519:2:180;23504:18;;23491:32;-1:-1:-1;;;;;23535:30:180;;23532:50;;;23578:1;23575;23568:12;23532:50;23601:22;;23654:4;23646:13;;23642:27;-1:-1:-1;23632:55:180;;23683:1;23680;23673:12;23632:55;23723:2;23710:16;23746:79;23762:62;23817:6;23762:62;:::i;23746:79::-;23847:3;23871:6;23866:3;23859:19;23903:2;23898:3;23894:12;23887:19;;23958:2;23948:6;23945:1;23941:14;23937:2;23933:23;23929:32;23915:46;;23984:7;23976:6;23973:19;23970:39;;;24005:1;24002;23995:12;23970:39;24037:2;24033;24029:11;24049:304;24065:6;24060:3;24057:15;24049:304;;;24151:3;24138:17;-1:-1:-1;;;;;24174:11:180;24171:35;24168:55;;;24219:1;24216;24209:12;24168:55;24248:62;24302:7;24297:2;24283:11;24279:2;24275:20;24271:29;24248:62;:::i;:::-;24236:75;;-1:-1:-1;24340:2:180;24331:12;;;;24082;24049:304;;;24053:3;24372:5;24362:15;;;;;;23162:1221;;;;;:::o;24388:298::-;24455:6;24463;24516:2;24504:9;24495:7;24491:23;24487:32;24484:52;;;24532:1;24529;24522:12;24484:52;24555:28;24573:9;24555:28;:::i;:::-;24545:38;24652:2;24637:18;;;;24624:32;;-1:-1:-1;;;24388:298:180:o;24691:319::-;24758:6;24766;24819:2;24807:9;24798:7;24794:23;24790:32;24787:52;;;24835:1;24832;24825:12;24787:52;24874:9;24861:23;24893:31;24918:5;24893:31;:::i;:::-;24943:5;-1:-1:-1;24967:37:180;25000:2;24985:18;;24967:37;:::i;25015:432::-;25067:3;25105:5;25099:12;25132:6;25127:3;25120:19;25164:4;25159:3;25155:14;25148:21;;25203:4;25196:5;25192:16;25226:1;25236:186;25250:6;25247:1;25244:13;25236:186;;;25315:13;;25330:6;25311:26;25299:39;;25367:4;25358:14;;;;25395:17;;;;25272:1;25265:9;25236:186;;;-1:-1:-1;25438:3:180;;25015:432;-1:-1:-1;;;;25015:432:180:o;25452:258::-;25629:2;25618:9;25611:21;25592:4;25649:55;25700:2;25689:9;25685:18;25677:6;25649:55;:::i;25715:322::-;25784:6;25837:2;25825:9;25816:7;25812:23;25808:32;25805:52;;;25853:1;25850;25843:12;25805:52;25893:9;25880:23;-1:-1:-1;;;;;25918:6:180;25915:30;25912:50;;;25958:1;25955;25948:12;25912:50;25981;26023:7;26014:6;26003:9;25999:22;25981:50;:::i;26042:340::-;26124:6;26177:2;26165:9;26156:7;26152:23;26148:32;26145:52;;;26193:1;26190;26183:12;26145:52;26233:9;26220:23;-1:-1:-1;;;;;26258:6:180;26255:30;26252:50;;;26298:1;26295;26288:12;26252:50;26321:55;26368:7;26359:6;26348:9;26344:22;26321:55;:::i;26387:1349::-;26547:6;26555;26563;26571;26579;26587;26595;26603;26656:3;26644:9;26635:7;26631:23;26627:33;26624:53;;;26673:1;26670;26663:12;26624:53;26712:9;26699:23;26731:31;26756:5;26731:31;:::i;:::-;26781:5;-1:-1:-1;26838:2:180;26823:18;;26810:32;26851:33;26810:32;26851:33;:::i;:::-;26903:7;-1:-1:-1;26961:2:180;26946:18;;26933:32;-1:-1:-1;;;;;26977:30:180;;26974:50;;;27020:1;27017;27010:12;26974:50;27059:70;27121:7;27112:6;27101:9;27097:22;27059:70;:::i;:::-;27148:8;;-1:-1:-1;27033:96:180;-1:-1:-1;;27236:2:180;27221:18;;27208:32;-1:-1:-1;;;;;27252:32:180;;27249:52;;;27297:1;27294;27287:12;27249:52;27336:72;27400:7;27389:8;27378:9;27374:24;27336:72;:::i;:::-;27427:8;;-1:-1:-1;27310:98:180;-1:-1:-1;;27515:3:180;27500:19;;27487:33;-1:-1:-1;;;;;27532:32:180;;27529:52;;;27577:1;27574;27567:12;27529:52;27616:60;27668:7;27657:8;27646:9;27642:24;27616:60;:::i;27741:367::-;27809:6;27817;27870:2;27858:9;27849:7;27845:23;27841:32;27838:52;;;27886:1;27883;27876:12;27838:52;27925:9;27912:23;27944:31;27969:5;27944:31;:::i;28373:927::-;28479:6;28487;28495;28503;28511;28519;28572:3;28560:9;28551:7;28547:23;28543:33;28540:53;;;28589:1;28586;28579:12;28540:53;28628:9;28615:23;28647:31;28672:5;28647:31;:::i;:::-;28697:5;-1:-1:-1;28754:2:180;28739:18;;28726:32;28767:33;28726:32;28767:33;:::i;:::-;28819:7;-1:-1:-1;28899:2:180;28884:18;;28871:32;;-1:-1:-1;29002:2:180;28987:18;;28974:32;;-1:-1:-1;29083:3:180;29068:19;;29055:33;-1:-1:-1;;;;;29100:30:180;;29097:50;;;29143:1;29140;29133:12;29097:50;29182:58;29232:7;29223:6;29212:9;29208:22;29182:58;:::i;:::-;28373:927;;;;-1:-1:-1;28373:927:180;;-1:-1:-1;28373:927:180;;29259:8;;28373:927;-1:-1:-1;;;28373:927:180:o;29305:380::-;29384:1;29380:12;;;;29427;;;29448:61;;29502:4;29494:6;29490:17;29480:27;;29448:61;29555:2;29547:6;29544:14;29524:18;29521:38;29518:161;;29601:10;29596:3;29592:20;29589:1;29582:31;29636:4;29633:1;29626:15;29664:4;29661:1;29654:15;29518:161;;29305:380;;;:::o;29690:127::-;29751:10;29746:3;29742:20;29739:1;29732:31;29782:4;29779:1;29772:15;29806:4;29803:1;29796:15;29822:521;29899:4;29905:6;29965:11;29952:25;30059:2;30055:7;30044:8;30028:14;30024:29;30020:43;30000:18;29996:68;29986:96;;30078:1;30075;30068:12;29986:96;30105:33;;30157:20;;;-1:-1:-1;;;;;;30189:30:180;;30186:50;;;30232:1;30229;30222:12;30186:50;30265:4;30253:17;;-1:-1:-1;30296:14:180;30292:27;;;30282:38;;30279:58;;;30333:1;30330;30323:12;30348:271;30531:6;30523;30518:3;30505:33;30487:3;30557:16;;30582:13;;;30557:16;30348:271;-1:-1:-1;30348:271:180:o;30749:517::-;30850:2;30845:3;30842:11;30839:421;;;30886:5;30883:1;30876:16;30930:4;30927:1;30917:18;31000:2;30988:10;30984:19;30981:1;30977:27;30971:4;30967:38;31036:4;31024:10;31021:20;31018:47;;;-1:-1:-1;31059:4:180;31018:47;31114:2;31109:3;31105:12;31102:1;31098:20;31092:4;31088:31;31078:41;;31169:81;31187:2;31180:5;31177:13;31169:81;;;31246:1;31232:16;;31213:1;31202:13;31169:81;;;31173:3;;30749:517;;;:::o;31442:1295::-;31566:3;31560:10;-1:-1:-1;;;;;31585:6:180;31582:30;31579:56;;;31615:18;;:::i;:::-;31644:96;31733:6;31693:38;31725:4;31719:11;31693:38;:::i;:::-;31687:4;31644:96;:::i;:::-;31789:4;31820:2;31809:14;;31837:1;31832:648;;;;32524:1;32541:6;32538:89;;;-1:-1:-1;32593:19:180;;;32587:26;32538:89;-1:-1:-1;;31399:1:180;31395:11;;;31391:24;31387:29;31377:40;31423:1;31419:11;;;31374:57;32640:81;;31802:929;;31832:648;30696:1;30689:14;;;30733:4;30720:18;;-1:-1:-1;;31868:20:180;;;31985:222;31999:7;31996:1;31993:14;31985:222;;;32081:19;;;32075:26;32060:42;;32188:4;32173:20;;;;32141:1;32129:14;;;;32015:12;31985:222;;;31989:3;32235:6;32226:7;32223:19;32220:201;;;32296:19;;;32290:26;-1:-1:-1;;32379:1:180;32375:14;;;32391:3;32371:24;32367:37;32363:42;32348:58;32333:74;;32220:201;-1:-1:-1;;;;32467:1:180;32451:14;;;32447:22;32434:36;;-1:-1:-1;31442:1295:180:o;32941:266::-;33029:6;33024:3;33017:19;33081:6;33074:5;33067:4;33062:3;33058:14;33045:43;-1:-1:-1;33133:1:180;33108:16;;;33126:4;33104:27;;;33097:38;;;;33189:2;33168:15;;;-1:-1:-1;;33164:29:180;33155:39;;;33151:50;;32941:266::o;33212:1030::-;33289:3;33320;33344:6;33339:3;33332:19;33376:4;33371:3;33367:14;33360:21;;33434:4;33424:6;33421:1;33417:14;33410:5;33406:26;33402:37;33462:5;33485:1;33495:721;33509:6;33506:1;33503:13;33495:721;;;33574:16;;;-1:-1:-1;;33570:30:180;33558:43;;33640:20;;33715:14;33711:26;;;-1:-1:-1;;33707:40:180;33683:65;;33673:93;;33762:1;33759;33752:12;33673:93;33794:30;;33915:4;33902:18;;;33853:21;-1:-1:-1;;;;;33936:32:180;;33933:52;;;33981:1;33978;33971:12;33933:52;34034:8;34018:14;34014:29;34005:7;34001:43;33998:63;;;34057:1;34054;34047:12;33998:63;34082:50;34127:4;34117:8;34108:7;34082:50;:::i;:::-;34167:4;34192:14;;;;34074:58;;-1:-1:-1;34155:17:180;;;;;-1:-1:-1;;33531:1:180;33524:9;33495:721;;;-1:-1:-1;34232:4:180;;33212:1030;-1:-1:-1;;;;;;33212:1030:180:o;34247:1364::-;34643:2;34655:21;;;34628:18;;34711:22;;;34595:4;34791:6;34764:3;34749:19;;34595:4;34825:304;34839:6;34836:1;34833:13;34825:304;;;34914:6;34901:20;34934:31;34959:5;34934:31;:::i;:::-;-1:-1:-1;;;;;34990:54:180;34978:67;;35074:4;35102:17;;;;35065:14;;;;34861:1;34854:9;34825:304;;;34829:3;35176:9;35171:3;35167:19;35160:4;35149:9;35145:20;35138:49;35208:6;35203:3;35196:19;35238:66;35230:6;35227:78;35224:98;;;35318:1;35315;35308:12;35224:98;35352:6;35349:1;35345:14;35331:28;;35405:6;35397;35390:4;35385:3;35381:14;35368:44;35431:16;35487:18;;;35507:4;35483:29;;;35478:2;35463:18;;35456:57;35530:75;;35591:13;;35583:6;35575;35530:75;:::i;:::-;35522:83;34247:1364;-1:-1:-1;;;;;;;;;34247:1364:180:o;35929:405::-;36160:6;36152;36148:19;36137:9;36130:38;36204:2;36199;36188:9;36184:18;36177:30;36111:4;36224:61;36281:2;36270:9;36266:18;36258:6;36250;36224:61;:::i;:::-;36216:69;;36321:6;36316:2;36305:9;36301:18;36294:34;35929:405;;;;;;;:::o;36339:184::-;36409:6;36462:2;36450:9;36441:7;36437:23;36433:32;36430:52;;;36478:1;36475;36468:12;36430:52;-1:-1:-1;36501:16:180;;36339:184;-1:-1:-1;36339:184:180:o;36528:127::-;36589:10;36584:3;36580:20;36577:1;36570:31;36620:4;36617:1;36610:15;36644:4;36641:1;36634:15;36660:179;36759:14;36728:22;;;36752;;;36724:51;;36787:23;;36784:49;;;36813:18;;:::i;36844:1194::-;-1:-1:-1;;;;;36961:3:180;36958:27;36955:53;;;36988:18;;:::i;:::-;37017:93;37106:3;37066:38;37098:4;37092:11;37066:38;:::i;:::-;37060:4;37017:93;:::i;:::-;37136:1;37161:2;37156:3;37153:11;37178:1;37173:607;;;;37824:1;37841:3;37838:93;;;-1:-1:-1;37897:19:180;;;37884:33;37838:93;-1:-1:-1;;31399:1:180;31395:11;;;31391:24;31387:29;31377:40;31423:1;31419:11;;;31374:57;37944:78;;37146:886;;37173:607;30696:1;30689:14;;;30733:4;30720:18;;-1:-1:-1;;37209:17:180;;;37323:229;37337:7;37334:1;37331:14;37323:229;;;37426:19;;;37413:33;37398:49;;37533:4;37518:20;;;;37486:1;37474:14;;;;37353:12;37323:229;;;37327:3;37580;37571:7;37568:16;37565:159;;;37704:1;37700:6;37694:3;37688;37685:1;37681:11;37677:21;37673:34;37669:39;37656:9;37651:3;37647:19;37634:33;37630:79;37622:6;37615:95;37565:159;;;37767:1;37761:3;37758:1;37754:11;37750:19;37744:4;37737:33;37146:886;;36844:1194;;;:::o;39345:125::-;39410:9;;;39431:10;;;39428:36;;;39444:18;;:::i;39475:806::-;39865:3;39854:9;39847:22;39906:1;39900:3;39889:9;39885:19;39878:30;39946:3;39939:4;39928:9;39924:20;39917:33;39828:4;39973:62;40030:3;40019:9;40015:19;40007:6;39999;39973:62;:::i;:::-;40071:6;40066:2;40055:9;40051:18;40044:34;40114:6;40109:2;40098:9;40094:18;40087:34;40158:6;40152:3;40141:9;40137:19;40130:35;40214:9;40206:6;40202:22;40196:3;40185:9;40181:19;40174:51;40242:33;40268:6;40260;40242:33;:::i;40635:421::-;40860:2;40849:9;40842:21;40823:4;40886:55;40937:2;40926:9;40922:18;40914:6;40886:55;:::i;:::-;40989:9;40981:6;40977:22;40972:2;40961:9;40957:18;40950:50;41017:33;41043:6;41035;41017:33;:::i;41061:128::-;41128:9;;;41149:11;;;41146:37;;;41163:18;;:::i;41194:618::-;41479:6;41471;41467:19;41456:9;41449:38;41523:3;41518:2;41507:9;41503:18;41496:31;41430:4;41544:62;41601:3;41590:9;41586:19;41578:6;41570;41544:62;:::i;:::-;-1:-1:-1;;;;;41642:55:180;;;;41637:2;41622:18;;41615:83;-1:-1:-1;41729:2:180;41714:18;;41707:34;;;;41790:14;41778:27;41772:3;41757:19;;;41750:56;41536:70;41194:618;-1:-1:-1;;;41194:618:180:o;41817:519::-;-1:-1:-1;;;;;42060:6:180;42056:55;42045:9;42038:74;42160:6;42152;42148:19;42143:2;42132:9;42128:18;42121:47;42204:3;42199:2;42188:9;42184:18;42177:31;42019:4;42225:62;42282:3;42271:9;42267:19;42259:6;42251;42225:62;:::i;:::-;42217:70;;42323:6;42318:2;42307:9;42303:18;42296:34;41817:519;;;;;;;;:::o;42341:245::-;42408:6;42461:2;42449:9;42440:7;42436:23;42432:32;42429:52;;;42477:1;42474;42467:12;42429:52;42509:9;42503:16;42528:28;42550:5;42528:28;:::i;42591:478::-;42824:2;42813:9;42806:21;42787:4;42850:61;42907:2;42896:9;42892:18;42884:6;42876;42850:61;:::i;:::-;42947:6;42942:2;42931:9;42927:18;42920:34;43002:9;42994:6;42990:22;42985:2;42974:9;42970:18;42963:50;43030:33;43056:6;43048;43030:33;:::i;:::-;43022:41;42591:478;-1:-1:-1;;;;;;;42591:478:180:o;43582:1211::-;43973:6;43962:9;43955:25;44016:6;44011:2;44000:9;43996:18;43989:34;44071:6;44063;44059:19;44054:2;44043:9;44039:18;44032:47;44115:3;44110:2;44099:9;44095:18;44088:31;43936:4;44154:6;44148:13;44198:6;44192:3;44181:9;44177:19;44170:35;44228:52;44275:3;44264:9;44260:19;44246:12;44228:52;:::i;:::-;44214:66;;-1:-1:-1;;;;;44339:2:180;44331:6;44327:15;44321:22;44317:71;44311:3;44300:9;44296:19;44289:100;44438:2;44430:6;44426:15;44420:22;44511:3;44507:8;44495:9;44487:6;44483:22;44479:37;44473:3;44462:9;44458:19;44451:66;44540:41;44574:6;44558:14;44540:41;:::i;:::-;44526:55;;;44630:2;44622:6;44618:15;44612:22;44643:65;44703:3;44692:9;44688:19;44672:14;44643:65;:::i;:::-;-1:-1:-1;;;;;;80:54:180;;44782:3;44767:19;;68:67;44725:6;-1:-1:-1;44740:47:180;14:127;44798:167;44893:10;44866:18;;;44886;;;44862:43;;44917:19;;44914:45;;;44939:18;;:::i;44970:168::-;45043:9;;;45074;;45091:15;;;45085:22;;45071:37;45061:71;;45112:18;;:::i","linkReferences":{"src/libraries/Checks.sol":{"Checks":[{"start":5426,"length":20},{"start":6691,"length":20},{"start":10616,"length":20},{"start":11082,"length":20}]},"src/libraries/PowersUtilities.sol":{"PowersUtilities":[{"start":12118,"length":20},{"start":12269,"length":20},{"start":13356,"length":20}]}},"immutableReferences":{"51912":[{"start":13216,"length":32}],"51915":[{"start":13265,"length":32}],"65151":[{"start":3503,"length":32},{"start":4701,"length":32},{"start":6583,"length":32},{"start":10790,"length":32}],"65154":[{"start":2794,"length":32},{"start":5114,"length":32}],"65157":[{"start":3698,"length":32},{"start":4533,"length":32}],"65160":[{"start":2494,"length":32}],"65163":[{"start":3021,"length":32},{"start":12311,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","DENOMINATOR()":"918f8674","FOUNDED_AT()":"5532f99b","MANDATE_REGISTRY()":"9100808e","MAX_CALLDATA_LENGTH()":"edf2a596","MAX_EXECUTIONS_LENGTH()":"f6226e7c","MAX_RETURN_DATA_LENGTH()":"7c1b5539","PUBLIC_ROLE()":"3ca7c02a","addFlow((uint16[],string))":"a3751098","adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))":"24bbb203","assignRole(uint256,address)":"685b824a","blacklistAddress(address,bool)":"455a4396","canCallMandate(address,uint16)":"93d7dae5","cancel(uint16,bytes,uint256)":"12561b1a","castVote(uint256,uint8)":"56781388","castVoteWithReason(uint256,uint8,string)":"7b3c71d3","closeConstitute()":"0d7abeaa","closeConstitute(address)":"7258883f","closeConstitute(address,(uint16[],string)[])":"8973be04","constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])":"5d7c9ce3","editFlowByIndex(uint8,uint8,uint16)":"3fc42d2e","eip712Domain()":"84b0196e","flows(uint256)":"8180d29e","fulfill(uint16,uint256,address[],uint256[],bytes[])":"0de6a601","getActionCalldata(uint256)":"d902bf3a","getActionData(uint256)":"4583476b","getActionReturnData(uint256,uint256)":"41bd157d","getActionState(uint256)":"666ca2d6","getActionUri(uint256)":"f2a0bb75","getActionVoteData(uint256)":"2179e04e","getAdoptedMandate(uint16)":"1031bdb0","getAmountRoleHolders(uint256)":"b4324dd3","getConditions(uint16)":"831af379","getFlowCount()":"afe2658b","getFlowDescriptionAtIndex(uint8)":"36126216","getFlowMandatesAtIndex(uint8)":"9a0435d4","getLatestFulfillment(uint16)":"040b8c24","getMandateActionAtIndex(uint16,uint256)":"8a4359e0","getMandateCounter()":"055dbe10","getQuantityMandateActions(uint16)":"edfd2e87","getRoleHolderAtIndex(uint256,uint256)":"199093bb","getRoleLabel(uint256)":"0398f05f","getRoleMetadata(uint256)":"2d90fe5f","getTreasury()":"3b19e84a","hasRoleSince(address,uint256)":"cc5812cf","hasVoted(uint256,address)":"43859632","isBlacklisted(address)":"fe575a87","labelRole(uint256,string,string)":"76ff7577","mandateCounter()":"e88efe35","name()":"06fdde03","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","paymaster()":"16e4cbf9","propose(uint16,bytes,uint256,string)":"2e2d8253","removeFlow(uint8)":"519fcfb0","request(uint16,bytes,uint256,string)":"ebef6d97","revokeMandate(uint16)":"b367cac0","revokeRole(uint256,address)":"1d0b19e7","setPaymaster(address)":"2a97fa77","setTreasury(address)":"f0f44260","setUri(string)":"9b642de1","supportsInterface(bytes4)":"01ffc9a7","uri()":"eac989f8","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxCallDataLength_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxReturnDataLength_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxExecutionsLength_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"mandateRegistry_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionAlreadyFulfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionAlreadyInitiated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionNotProposed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__AddressBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__AlreadyCastVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CalldataTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CallerNotTargetMandate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotAddPowersAddressAsMember\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotAddZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotCallMandate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotSetPublicRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotSetZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ConstituteClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ConstituteOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ConstitutionAlreadyExecuted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ExecutionArrayTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ExternalContractBlacklisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"}],\"name\":\"Powers__IncorrectInterface\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidCallData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidFlowIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidLabel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMandateId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMandateIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMaxCallDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMaxExecutionsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidName\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidReturnCallDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidVoteType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__JoinedAfterVoteStart\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__LabelTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__LockedRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__MandateFulfillCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__MandateNotActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"}],\"name\":\"Powers__MandateNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__MandateRequestFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NoMembersInRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NoVoteNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NotProposerAction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__OnlyPowers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__PayableNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ProposedActionNotActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__UnexpectedActionState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__UriTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__VoteWithPublicRoleDisallowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"name\":\"ActionFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ActionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"blacklisted\",\"type\":\"bool\"}],\"name\":\"BlacklistSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index1\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index2\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"FlowAdapted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16[]\",\"name\":\"mandateIds\",\"type\":\"uint16[]\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"name\":\"FlowAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"FlowDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"FundsReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"MandateAdopted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"MandateRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPaymaster\",\"type\":\"address\"}],\"name\":\"PaymasterSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"Powers__Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"ProposedActionCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"executeCalldata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposedActionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"RoleLabel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"access\",\"type\":\"bool\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"support\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FOUNDED_AT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANDATE_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CALLDATA_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_EXECUTIONS_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RETURN_DATA_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PUBLIC_ROLE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16[]\",\"name\":\"mandateIds\",\"type\":\"uint16[]\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"internalType\":\"struct PowersTypes.Flow\",\"name\":\"flow\",\"type\":\"tuple\"}],\"name\":\"addFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allowedRole\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"votingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timelock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"throttleExecution\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"needFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"needNotFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"quorum\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"succeedAt\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"maxExecutionDelay\",\"type\":\"uint32\"}],\"internalType\":\"struct PowersTypes.Conditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"internalType\":\"struct PowersTypes.MandateInitData\",\"name\":\"mandateInitData\",\"type\":\"tuple\"}],\"name\":\"adoptMandate\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"assignRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"blacklisted\",\"type\":\"bool\"}],\"name\":\"blacklistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"canCallMandate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"support\",\"type\":\"uint8\"}],\"name\":\"castVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"support\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"castVoteWithReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"closeConstitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"closeConstitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint16[]\",\"name\":\"mandateIds\",\"type\":\"uint16[]\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"internalType\":\"struct PowersTypes.Flow[]\",\"name\":\"_flows\",\"type\":\"tuple[]\"}],\"name\":\"closeConstitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allowedRole\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"votingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timelock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"throttleExecution\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"needFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"needNotFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"quorum\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"succeedAt\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"maxExecutionDelay\",\"type\":\"uint32\"}],\"internalType\":\"struct PowersTypes.Conditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"internalType\":\"struct PowersTypes.MandateInitData[]\",\"name\":\"constituentMandates\",\"type\":\"tuple[]\"}],\"name\":\"constitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index1\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"index2\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"editFlowByIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"flows\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"name\":\"fulfill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionCalldata\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionData\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"uint48\",\"name\":\"proposedAt\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"requestedAt\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"fulfilledAt\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"cancelledAt\",\"type\":\"uint48\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getActionReturnData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionState\",\"outputs\":[{\"internalType\":\"enum PowersTypes.ActionState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionUri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionVoteData\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"voteStart\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"voteDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"voteEnd\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"againstVotes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"forVotes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"abstainVotes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"voterCountSnapshot\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getAdoptedMandate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"mandate\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"getAmountRoleHolders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMembers\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getConditions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allowedRole\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"votingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timelock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"throttleExecution\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"needFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"needNotFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"quorum\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"succeedAt\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"maxExecutionDelay\",\"type\":\"uint32\"}],\"internalType\":\"struct PowersTypes.Conditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlowCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"getFlowDescriptionAtIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"getFlowMandatesAtIndex\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getLatestFulfillment\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"latestFulfillment\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMandateActionAtIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMandateCounter\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getQuantityMandateActions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"quantityMandateActions\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleHolderAtIndex\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"getRoleLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"getRoleMetadata\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"hasRoleSince\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasVoted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"labelRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mandateCounter\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uriAction\",\"type\":\"string\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"removeFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uriAction\",\"type\":\"string\"}],\"name\":\"request\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"revokeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPaymaster\",\"type\":\"address\"}],\"name\":\"setPaymaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newUri\",\"type\":\"string\"}],\"name\":\"setUri\",\"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\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"ActionFulfilled(uint16,uint256,address[],uint256[],bytes[])\":{\"params\":{\"actionId\":\"the id of the action\",\"calldatas\":\"the calldatas of the action\",\"mandateId\":\"the id of the mandate\",\"targets\":\"the targets of the action\",\"values\":\"the values of the action\"}},\"ActionRequested(address,uint16,bytes,uint256,string)\":{\"params\":{\"caller\":\"the address of the caller\",\"description\":\"the description of the mandate action\",\"mandateCalldata\":\"the calldata of the mandate\",\"mandateId\":\"the id of the mandate\",\"nonce\":\"the nonce of the action\"}},\"BlacklistSet(address,bool)\":{\"params\":{\"account\":\"the address of the account\",\"blacklisted\":\"the blacklisted status of the account\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"FlowAdapted(uint8,uint8,uint16)\":{\"params\":{\"index1\":\"the index of the flow before adaptation\",\"index2\":\"the index of the mandate within the flow\",\"mandateId\":\"the id of the mandate that will be placed at index2 in flow of index1.\"}},\"FlowAdded(uint16[],string)\":{\"params\":{\"mandateIds\":\"the ids of the mandates in the flow\",\"nameDescription\":\"the name and description of the flow\"}},\"FlowDeleted(uint8)\":{\"params\":{\"index\":\"the index of the flow in the flows array\"}},\"FundsReceived(address,uint256)\":{\"params\":{\"sender\":\"the address of the sender\",\"value\":\"the amount of funds received\"}},\"MandateAdopted(uint16)\":{\"params\":{\"mandateId\":\"the id of the mandate\"}},\"MandateRevoked(uint16)\":{\"params\":{\"mandateId\":\"the id of the mandate\"}},\"PaymasterSet(address)\":{\"params\":{\"newPaymaster\":\"the address of the new paymaster\"}},\"Powers__Initialized(address,string,string)\":{\"params\":{\"contractAddress\":\"the address of the contract\",\"name\":\"the name of the contract\",\"uri\":\"the uri of the contract\"}},\"ProposedActionCancelled(uint256)\":{\"params\":{\"actionId\":\"the id of the proposal\"}},\"ProposedActionCreated(uint256,address,uint16,string,bytes,uint256,uint256,uint256,string)\":{\"params\":{\"actionId\":\"the id of the proposal\",\"caller\":\"the address of the caller\",\"description\":\"the description of the proposal\",\"executeCalldata\":\"the calldata to be passed to the mandate\",\"mandateId\":\"the id of the mandate\",\"signature\":\"the signature of the proposal\",\"voteEnd\":\"the end of the voting period\",\"voteStart\":\"the start of the voting period\"}},\"RoleLabel(uint256,string)\":{\"params\":{\"label\":\"the label assigned to the role\",\"roleId\":\"the id of the role\"}},\"RoleSet(uint256,address,bool)\":{\"params\":{\"access\":\"whether the account has access to the role\",\"account\":\"the address of the account that has the role\",\"roleId\":\"the id of the role\"}},\"VoteCast(address,uint256,uint8,string)\":{\"params\":{\"account\":\"the address of the account that cast the vote\",\"actionId\":\"the id of the proposal\",\"reason\":\"the reason for the vote\",\"support\":\"support of the vote: Against, For or Abstain.\"}}},\"kind\":\"dev\",\"methods\":{\"addFlow((uint16[],string))\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"flow\":\"The flow to add\"}},\"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"mandateInitData\":\"The data of the mandate\"}},\"assignRole(uint256,address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"account\":\"The address to grant the role to\",\"roleId\":\"The identifier of the role to assign\"}},\"blacklistAddress(address,bool)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"account\":\"The address to blacklist\",\"blacklisted\":\"The blacklisted status of the account\"}},\"canCallMandate(address,uint16)\":{\"params\":{\"caller\":\"The address attempting to call the mandate\",\"mandateId\":\"The mandate id to check\"},\"returns\":{\"_0\":\"True if the caller has permission, false otherwise\"}},\"cancel(uint16,bytes,uint256)\":{\"details\":\"the account to cancel must be the account that created the proposedAction.\",\"params\":{\"mandateCalldata\":\"The original encoded function call data\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"_0\":\"The unique identifier of the cancelled proposal\"}},\"castVote(uint256,uint8)\":{\"details\":\"Vote types: 0=Against, 1=For, 2=Abstain\",\"params\":{\"actionId\":\"The unique identifier of the proposal\",\"support\":\"The type of vote to cast\"}},\"castVoteWithReason(uint256,uint8,string)\":{\"details\":\"Same as castVote but includes a reason string\",\"params\":{\"actionId\":\"The unique identifier of the proposal\",\"reason\":\"A human-readable explanation for the vote\",\"support\":\"The type of vote to cast\"}},\"closeConstitute()\":{\"details\":\"Can only be called by an admin account\"},\"closeConstitute(address)\":{\"details\":\"Can only be called by an admin account\",\"params\":{\"newAdmin\":\"The address of the new admin account\"}},\"closeConstitute(address,(uint16[],string)[])\":{\"details\":\"Can only be called by an admin account\",\"params\":{\"flows\":\"The initial governance flows to set in the protocol\",\"newAdmin\":\"The address of the new admin account\"}},\"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])\":{\"details\":\"WARNING: any adopted mandate needs to be audited carefully as it will give powers to role holders over the organisation.\",\"params\":{\"mandates\":\"The list of mandate contracts to activate\"}},\"constructor\":{\"params\":{\"mandateRegistry_\":\"MandateRegistry address this org enforces mandate membership against. Pass address(0) to adopt any address implementing IMandate, with no registry restriction.\",\"maxCallDataLength_\":\"maximum length of calldata for a mandate\",\"maxExecutionsLength_\":\"maximum length of executions for a mandate\",\"maxReturnDataLength_\":\"maximum length of return data for a mandate\",\"name_\":\"name of the contract\",\"uri_\":\"uri of the contract\"}},\"editFlowByIndex(uint8,uint8,uint16)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"index1\":\"The index of the flow to edit\",\"index2\":\"The index of the mandate in the flow to replace\",\"mandateId\":\"The id of the new mandate to add to the flow\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"fulfill(uint16,uint256,address[],uint256[],bytes[])\":{\"details\":\"Can only be called by an active mandate contract\",\"params\":{\"actionId\":\"The unique identifier of the action\",\"calldatas\":\"The list of encoded function calls\",\"mandateId\":\"The id of the mandate\",\"targets\":\"The list of contract addresses to call\",\"values\":\"The list of ETH values to send with each call\"}},\"getActionCalldata(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the action\"},\"returns\":{\"callData\":\"The calldata for the action\"}},\"getActionData(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"caller\":\"- the address of the caller\",\"cancelledAt\":\"- the block number at which the action was cancelled\",\"fulfilledAt\":\"- the block number at which the action was fulfilled\",\"mandateId\":\"- the id of the mandate that the action is associated with\",\"nonce\":\"- the nonce of the action\",\"proposedAt\":\"- the block number at which the action was proposed\",\"requestedAt\":\"- the block number at which the action was requested\"}},\"getActionReturnData(uint256,uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the action\",\"index\":\"The index of the return data\"},\"returns\":{\"returnData\":\"The return data for the action\"}},\"getActionState(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"_0\":\"the current state of the proposal\"}},\"getActionUri(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the action\"},\"returns\":{\"_uri\":\"The URI for the action\"}},\"getActionVoteData(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"abstainVotes\":\"- the number of abstain votes\",\"againstVotes\":\"- the number of votes against the action\",\"forVotes\":\"- the number of votes for the action\",\"voteDuration\":\"- the duration of the voting period\",\"voteEnd\":\"- the block number at which voting ends\",\"voteStart\":\"- the block number at which voting starts\",\"voterCountSnapshot\":\"- the eligible-voter count snapshotted at voteStart (quorum/threshold denominator)\"}},\"getAdoptedMandate(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"active\":\"The active status of the mandate\",\"mandate\":\"The address of the mandate\",\"mandateHash\":\"The hash of the mandate\"}},\"getAmountRoleHolders(uint256)\":{\"params\":{\"roleId\":\"The identifier of the role\"},\"returns\":{\"amountMembers\":\"the number of role holders\"}},\"getConditions(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"conditions\":\"The conditions of the mandate\"}},\"getFlowDescriptionAtIndex(uint8)\":{\"params\":{\"index\":\"The index of the flow\"},\"returns\":{\"_0\":\"description The human-readable description of the flow\"}},\"getFlowMandatesAtIndex(uint8)\":{\"params\":{\"index\":\"The index of the flow\"},\"returns\":{\"_0\":\"The ids of the mandates in the flow\"}},\"getLatestFulfillment(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"latestFulfillment\":\"The latest fulfillment of the mandate\"}},\"getMandateActionAtIndex(uint16,uint256)\":{\"params\":{\"index\":\"The index of the action\",\"mandateId\":\"The id of the mandate\"},\"returns\":{\"actionId\":\"The action at the index\"}},\"getMandateCounter()\":{\"details\":\"Added this function to expose mandateCounter at IPowers interface level.\",\"returns\":{\"_0\":\"The total number of adopted mandates\"}},\"getQuantityMandateActions(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"quantityMandateActions\":\"The quantity of actions of the mandate\"}},\"getRoleHolderAtIndex(uint256,uint256)\":{\"params\":{\"index\":\"The index of the role holder\",\"roleId\":\"The identifier of the role\"},\"returns\":{\"account\":\"The address of the role holder\"}},\"getRoleLabel(uint256)\":{\"params\":{\"roleId\":\"The identifier of the role\"},\"returns\":{\"label\":\"The label of the role\"}},\"getRoleMetadata(uint256)\":{\"params\":{\"roleId\":\"The identifier of the role\"},\"returns\":{\"metadata\":\"The URI of the role\"}},\"getTreasury()\":{\"returns\":{\"_0\":\"The treasury address\"}},\"hasRoleSince(address,uint256)\":{\"params\":{\"account\":\"The address to check\",\"roleId\":\"The identifier of the role\"},\"returns\":{\"since\":\"the block number since holding the role, 0 if never held\"}},\"hasVoted(uint256,address)\":{\"params\":{\"account\":\"The address to check\",\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"_0\":\"True if the account has voted, false otherwise\"}},\"isBlacklisted(address)\":{\"params\":{\"account\":\"The address to check\"},\"returns\":{\"_0\":\"The blacklisted status of the account\"}},\"labelRole(uint256,string,string)\":{\"details\":\"Optional. Can only be called through the protocol itself\",\"params\":{\"label\":\"The human-readable label for the role\",\"metadata\":\"The URI for the role metadata\",\"roleId\":\"The identifier of the role to label\"}},\"propose(uint16,bytes,uint256,string)\":{\"details\":\"Only callable if the mandate requires voting (quorum > 0)note that no checks are run. If account has acces to mandate and it requires a vote - the account wil be able to create proposals.\",\"params\":{\"mandateCalldata\":\"The encoded function call data for the mandate\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\",\"uriDescription\":\"A human-readable description of the proposal\"},\"returns\":{\"actionId\":\"The unique identifier of the created proposal\"}},\"removeFlow(uint8)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"index\":\"The index of the flow to remove\"}},\"request(uint16,bytes,uint256,string)\":{\"details\":\"The request -> fulfill functions follow a call-and-return mechanism. This allows for async execution of mandates.\",\"params\":{\"mandateCalldata\":\"The encoded function call data for the mandate\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\",\"uriDescription\":\"A human-readable description of the action\"}},\"revokeMandate(uint16)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"mandateId\":\"The id of the mandate\"}},\"revokeRole(uint256,address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"account\":\"The address to remove the role from\",\"roleId\":\"The identifier of the role to remove\"}},\"setPaymaster(address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"newPaymaster\":\"The new paymaster address\"}},\"setTreasury(address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"newTreasury\":\"The new treasury address\"}},\"setUri(string)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"newUri\":\"The new URI string\"}},\"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()\":{\"returns\":{\"_0\":\"the version string\"}}},\"stateVariables\":{\"MANDATE_REGISTRY\":{\"details\":\"address(0) means no registry is enforced \\u2014 any address implementing IMandate can be adopted, as before. This value is immutable: an org that wants to use a different registry must redeploy.\"},\"_actions\":{\"details\":\"Mapping from actionId to Action struct\"},\"_blacklist\":{\"details\":\"Mapping from account to blacklisted status\"},\"_constituteClosed\":{\"details\":\"Is the constitute phase closed? Note: no actions can be started when the constitute phase is open.\"},\"mandates\":{\"details\":\"Mapping from mandateId to AdoptedMandate struct\"},\"roles\":{\"details\":\"Mapping from roleId to Role struct\"},\"uri\":{\"details\":\"Can be altered\"}},\"version\":1},\"userdoc\":{\"errors\":{\"Powers__ActionAlreadyFulfilled()\":[{\"notice\":\"Emitted when an action is already fulfilled.\"}],\"Powers__ActionAlreadyInitiated()\":[{\"notice\":\"Emitted when an action has already been initiated.\"}],\"Powers__ActionCancelled()\":[{\"notice\":\"Emitted when an action has been cancelled.\"}],\"Powers__ActionNotProposed()\":[{\"notice\":\"Emitted when an action does not exist.\"}],\"Powers__ActionNotRequested()\":[{\"notice\":\"Emitted when an action has not been initiated yet.\"}],\"Powers__AddressBlacklisted()\":[{\"notice\":\"Emitted when an address is blacklisted.\"}],\"Powers__AlreadyCastVote()\":[{\"notice\":\"Emitted when a mandate is not adopted.\"}],\"Powers__CalldataTooLong()\":[{\"notice\":\"Emitted when a calldata is too long.\"}],\"Powers__CallerNotTargetMandate()\":[{\"notice\":\"Emitted when the caller is not the target mandate.\"}],\"Powers__CannotAddPowersAddressAsMember()\":[{\"notice\":\"Emitted when the Powers contract itself is added as a member of a role.\"}],\"Powers__CannotAddZeroAddress()\":[{\"notice\":\"Emitted when a zero address is added.\"}],\"Powers__CannotCallMandate()\":[{\"notice\":\"Emitted when an account cannot call a mandate.\"}],\"Powers__CannotSetPublicRole()\":[{\"notice\":\"Emitted when a role is locked.\"}],\"Powers__CannotSetZeroAddress()\":[{\"notice\":\"Emitted when trying to set the treasury to the zero address.\"}],\"Powers__ConstituteClosed()\":[{\"notice\":\"Emitted when the constitute phase is closed.\"}],\"Powers__ConstituteOpen()\":[{\"notice\":\"Emitted when the constitute phase is still open.\"}],\"Powers__ConstitutionAlreadyExecuted()\":[{\"notice\":\"Emitted when a constitution has already been executed.\"}],\"Powers__ExecutionArrayTooLong()\":[{\"notice\":\"Emitted when an array is too long.\"}],\"Powers__ExternalContractBlacklisted()\":[{\"notice\":\"Emitted when an external contract is blacklisted.\"}],\"Powers__IncorrectInterface(address)\":[{\"notice\":\"Emitted when an incorrect interface is called.\"}],\"Powers__InvalidAddress()\":[{\"notice\":\"Emitted when an invalid address is used.\"}],\"Powers__InvalidCallData()\":[{\"notice\":\"Emitted when a callData is invalid.\"}],\"Powers__InvalidFlowIndex()\":[{\"notice\":\"Emitted when trying to set an invalid flow.\"}],\"Powers__InvalidIndex()\":[{\"notice\":\"Emitted when an index is invalid.\"}],\"Powers__InvalidLabel()\":[{\"notice\":\"Emitted when a label is invalid.\"}],\"Powers__InvalidMandateId()\":[{\"notice\":\"Emitted when trying to set an invalid mandate in a flow.\"}],\"Powers__InvalidMandateIndex()\":[{\"notice\":\"Emitted when trying to adapt a flow with an invalid mandate index.\"}],\"Powers__InvalidMaxCallDataLength()\":[{\"notice\":\"Emitted when a max call data length is invalid.\"}],\"Powers__InvalidMaxExecutionsLength()\":[{\"notice\":\"Emitted when a max executions length is invalid.\"}],\"Powers__InvalidName()\":[{\"notice\":\"Emitted when a name is invalid.\"}],\"Powers__InvalidReturnCallDataLength()\":[{\"notice\":\"Emitted when a max call data length is invalid.\"}],\"Powers__InvalidVoteType()\":[{\"notice\":\"Emitted when a vote type is invalid.\"}],\"Powers__JoinedAfterVoteStart()\":[{\"notice\":\"Emitted when an account that joined the voting role after voteStart attempts to vote.\"}],\"Powers__LabelTooLong()\":[{\"notice\":\"Emitted when a label is too long.\"}],\"Powers__LockedRole()\":[{\"notice\":\"Emitted when a role is locked.\"}],\"Powers__MandateFulfillCallFailed()\":[{\"notice\":\"Emitted when a mandate fulfill call fails.\"}],\"Powers__MandateNotActive()\":[{\"notice\":\"Emitted when a mandate is not active.\"}],\"Powers__MandateNotRegistered(address)\":[{\"notice\":\"Emitted when a mandate is not registered (or not active) in this Powers instance's MANDATE_REGISTRY.\"}],\"Powers__MandateRequestFailed()\":[{\"notice\":\"Emitted when a mandate request fails.\"}],\"Powers__NoMembersInRole()\":[{\"notice\":\"Emitted when a role has no members.\"}],\"Powers__NoVoteNeeded()\":[{\"notice\":\"Emitted when a function is called that does not need a vote.\"}],\"Powers__NotAContract()\":[{\"notice\":\"Emitted when an external contract is not a contract.\"}],\"Powers__NotProposerAction()\":[{\"notice\":\"Emitted when the caller is not the proposer of the action.\"}],\"Powers__OnlyAdmin()\":[{\"notice\":\"Emitted when the caller is not the admin.\"}],\"Powers__OnlyPowers()\":[{\"notice\":\"Emitted when a function is called from a contract that is not Powers.\"}],\"Powers__PayableNotEnabled()\":[{\"notice\":\"Emitted when payable is not enabled.\"}],\"Powers__ProposedActionNotActive()\":[{\"notice\":\"Emitted when a proposed action is not active.\"}],\"Powers__UnexpectedActionState()\":[{\"notice\":\"Emitted when an action is in an unexpected state.\"}],\"Powers__UriTooLong()\":[{\"notice\":\"Emitted when a URI is too long.\"}],\"Powers__VoteWithPublicRoleDisallowed()\":[{\"notice\":\"Emitted when a vote with public role is attempted.\"}]},\"events\":{\"ActionFulfilled(uint16,uint256,address[],uint256[],bytes[])\":{\"notice\":\"Emitted when an executive action has been executed.\"},\"ActionRequested(address,uint16,bytes,uint256,string)\":{\"notice\":\"Emitted when executive action is requested.\"},\"BlacklistSet(address,bool)\":{\"notice\":\"Emitted when a address is blacklisted.\"},\"FlowAdapted(uint8,uint8,uint16)\":{\"notice\":\"Emitted when a flow is adapted.\"},\"FlowAdded(uint16[],string)\":{\"notice\":\"Emitted when a flow is added.\"},\"FlowDeleted(uint8)\":{\"notice\":\"Emitted when a flow is deleted.\"},\"FundsReceived(address,uint256)\":{\"notice\":\"Emitted when protocol receives funds.\"},\"MandateAdopted(uint16)\":{\"notice\":\"Emitted when a mandate is adopted.\"},\"MandateRevoked(uint16)\":{\"notice\":\"Emitted when a mandate is revoked.\"},\"PaymasterSet(address)\":{\"notice\":\"Emitted when the paymaster address is updated.\"},\"Powers__Initialized(address,string,string)\":{\"notice\":\"Emitted when protocol is initialized.\"},\"ProposedActionCancelled(uint256)\":{\"notice\":\"Emitted when a proposal is cancelled.\"},\"ProposedActionCreated(uint256,address,uint16,string,bytes,uint256,uint256,uint256,string)\":{\"notice\":\"Emitted when a proposal is created.\"},\"RoleLabel(uint256,string)\":{\"notice\":\"Emitted when a role is labelled.\"},\"RoleSet(uint256,address,bool)\":{\"notice\":\"Emitted when a role is set.\"},\"VoteCast(address,uint256,uint8,string)\":{\"notice\":\"Emitted when a vote is cast.\"}},\"kind\":\"user\",\"methods\":{\"ADMIN_ROLE()\":{\"notice\":\"Role identifier for the admin role\"},\"DENOMINATOR()\":{\"notice\":\"Denominator used for percentage calculations (100%)\"},\"FOUNDED_AT()\":{\"notice\":\"block number at which the Powers contract was deployed.\"},\"MANDATE_REGISTRY()\":{\"notice\":\"Address of the MandateRegistry this org enforces mandate membership against.\"},\"MAX_CALLDATA_LENGTH()\":{\"notice\":\"Maximum length of calldata for a mandate action\"},\"MAX_EXECUTIONS_LENGTH()\":{\"notice\":\"Maximum number of execution targets per action\"},\"MAX_RETURN_DATA_LENGTH()\":{\"notice\":\"Maximum length of return data stored from execution\"},\"PUBLIC_ROLE()\":{\"notice\":\"Role identifier for the public role (everyone)\"},\"addFlow((uint16[],string))\":{\"notice\":\"Adds flows\"},\"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))\":{\"notice\":\"Activates a new mandate in the protocol\"},\"assignRole(uint256,address)\":{\"notice\":\"Grants a role to an account\"},\"blacklistAddress(address,bool)\":{\"notice\":\"Blacklists an account\"},\"canCallMandate(address,uint16)\":{\"notice\":\"Checks if an account has permission to call a mandate\"},\"cancel(uint16,bytes,uint256)\":{\"notice\":\"Cancels an existing proposal\"},\"castVote(uint256,uint8)\":{\"notice\":\"Casts a vote on an active proposal\"},\"castVoteWithReason(uint256,uint8,string)\":{\"notice\":\"Casts a vote on an active proposal with an explanation\"},\"closeConstitute()\":{\"notice\":\"Closes the constitute phase, preventing further mandates from being added\"},\"closeConstitute(address)\":{\"notice\":\"Closes the constitute phase, preventing further mandates from being added\"},\"closeConstitute(address,(uint16[],string)[])\":{\"notice\":\"Closes the constitute phase, preventing further mandates from being added, and sets the initial flows.\"},\"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])\":{\"notice\":\"Initializes the DAO by activating its founding mandates\"},\"constructor\":{\"notice\":\"Sets the value for {name} at the time of construction.\"},\"editFlowByIndex(uint8,uint8,uint16)\":{\"notice\":\"Edits a flow by replacing a mandate in the flow with another mandate\"},\"flows(uint256)\":{\"notice\":\"array of flows to provide human and mandate readable structure to governance.\"},\"fulfill(uint16,uint256,address[],uint256[],bytes[])\":{\"notice\":\"Completes an action by executing the actual calls\"},\"getActionCalldata(uint256)\":{\"notice\":\"Gets the calldata for a specific action\"},\"getActionData(uint256)\":{\"notice\":\"gets the data of an actionId that are not an array.\"},\"getActionReturnData(uint256,uint256)\":{\"notice\":\"Gets the return data for a specific action\"},\"getActionState(uint256)\":{\"notice\":\"Gets the current state of a proposal\"},\"getActionUri(uint256)\":{\"notice\":\"Gets the URI for a specific action\"},\"getActionVoteData(uint256)\":{\"notice\":\"gets the vote data of an actionId that are not an array.\"},\"getAdoptedMandate(uint16)\":{\"notice\":\"Checks if a mandate is currently active\"},\"getAmountRoleHolders(uint256)\":{\"notice\":\"Gets the total number of accounts holding a specific role\"},\"getConditions(uint16)\":{\"notice\":\"Gets the conditions of a mandate\"},\"getFlowCount()\":{\"notice\":\"Gets the quantity of governance flows for a mandate\"},\"getFlowDescriptionAtIndex(uint8)\":{\"notice\":\"Gets the description of a governance flow at a specific index\"},\"getFlowMandatesAtIndex(uint8)\":{\"notice\":\"Gets the mandates of a governance flow at a specific index\"},\"getLatestFulfillment(uint16)\":{\"notice\":\"Gets the latest fulfillment of a mandate\"},\"getMandateActionAtIndex(uint16,uint256)\":{\"notice\":\"Gets the actions of a mandate\"},\"getMandateCounter()\":{\"notice\":\"Gets the total number of adopted mandates\"},\"getQuantityMandateActions(uint16)\":{\"notice\":\"Gets the quantity of actions of a mandate\"},\"getRoleHolderAtIndex(uint256,uint256)\":{\"notice\":\"Gets the holder of a role at a specific index\"},\"getRoleLabel(uint256)\":{\"notice\":\"Gets the label of a role\"},\"getRoleMetadata(uint256)\":{\"notice\":\"Gets the URI of a role\"},\"getTreasury()\":{\"notice\":\"Getter for treasury address.\"},\"hasRoleSince(address,uint256)\":{\"notice\":\"Gets the block number since which an account has held a role\"},\"hasVoted(uint256,address)\":{\"notice\":\"Checks if an account has voted on a specific proposal\"},\"isBlacklisted(address)\":{\"notice\":\"Checks if an account is blacklisted\"},\"labelRole(uint256,string,string)\":{\"notice\":\"Assigns a human-readable label and URI to a role\"},\"mandateCounter()\":{\"notice\":\"Number of mandates that have been initiated throughout the life of the organisation\"},\"name()\":{\"notice\":\"Name of the DAO\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Allows the contract to receive ERC1155 batch transfers once the constitution is closed.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Allows the contract to receive ERC1155 tokens once the constitution is closed.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Allows the contract to receive ERC721 tokens once the constitution is closed.\"},\"paymaster()\":{\"notice\":\"Address to the paymaster of the organisation\"},\"propose(uint16,bytes,uint256,string)\":{\"notice\":\"Creates a new proposal for an action that requires voting\"},\"removeFlow(uint8)\":{\"notice\":\"Removes a flow\"},\"request(uint16,bytes,uint256,string)\":{\"notice\":\"Initiates an action to be executed through a mandate\"},\"revokeMandate(uint16)\":{\"notice\":\"Deactivates an existing mandate\"},\"revokeRole(uint256,address)\":{\"notice\":\"Removes a role from an account\"},\"setPaymaster(address)\":{\"notice\":\"Sets the paymaster address\"},\"setTreasury(address)\":{\"notice\":\"Sets the treasury address\"},\"setUri(string)\":{\"notice\":\"Updates the protocol's metadata URI\"},\"uri()\":{\"notice\":\"URI to metadata of the DAO\"},\"version()\":{\"notice\":\"Gets the protocol version\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Powers.sol\":\"Powers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"lib/openzeppelin-contracts/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99\",\"dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4\",\"dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x7c7ad70641a7f8cd44def0857ec97b0e40bfd073b2d6037a5f57ce9527ee9bc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e05c6572dfe769f7aea6f3a8002951cc12d143d980dad29f6c5feedf9408bc14\",\"dweb:/ipfs/QmXM7C8YEptxisZiEefXUrwdXt3zMaCobmkCchxTtDg1oK\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/Mandate.sol\":{\"keccak256\":\"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929\",\"dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P\"]},\"src/Powers.sol\":{\"keccak256\":\"0xcda7b17de7d16d26a4f5add3f0c9436ba4dec1510c94dee944d67979883b10c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7707b12cbc5418d71f98360293131fbbea226d5c5c3cbf51598ac72ab3f35e42\",\"dweb:/ipfs/QmRFVs3ipEAgVsi3tC2iougZV9X1nZpCLNC2j2QGLKYm98\"]},\"src/core/helpers/MandateRegistry.sol\":{\"keccak256\":\"0xe859949e3164fca43cce647b9eecdcfa5442db90697c6d000c945173ed168e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8f90214fdace0b52df72684d5a2ed7f85ea2e6a79d4faa8b15832850d08ade2\",\"dweb:/ipfs/QmaXZpQ839qef6RiqGCVfar2Xv8EXt2BbDRE4w1nDf5kZX\"]},\"src/interfaces/IMandate.sol\":{\"keccak256\":\"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931\",\"dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A\"]},\"src/interfaces/IPowers.sol\":{\"keccak256\":\"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec\",\"dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp\"]},\"src/interfaces/PowersErrors.sol\":{\"keccak256\":\"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882\",\"dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf\"]},\"src/interfaces/PowersEvents.sol\":{\"keccak256\":\"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d\",\"dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB\"]},\"src/interfaces/PowersTypes.sol\":{\"keccak256\":\"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740\",\"dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK\"]},\"src/libraries/Checks.sol\":{\"keccak256\":\"0xfa4f4b800a694dcf02d3746190e00592299ccebed45b6fce170445d7e66c7e48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5001fe28d43a2d90782f859e3fa276fbc39d5cc65b3ff1d72b4bd4e99b909564\",\"dweb:/ipfs/QmXMfWEYN9RtjhWZYnpmpdWnd9FnYULbZnyB89PLqLxYff\"]},\"src/libraries/MandateUtilities.sol\":{\"keccak256\":\"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad\",\"dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC\"]},\"src/libraries/PowersUtilities.sol\":{\"keccak256\":\"0x2e7261ec42774bf281178d506856213d199bb652c9a8867b543b47878de65406\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7772019701eb8437442c89f95cf2c2ba5d37ca5aa13b9f40f69e29ef0c39d7d1\",\"dweb:/ipfs/QmW7uzD68d1JhW6bacja5qFFuZijwCf98num1wEPKoDRU9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"uri_","type":"string"},{"internalType":"uint256","name":"maxCallDataLength_","type":"uint256"},{"internalType":"uint256","name":"maxReturnDataLength_","type":"uint256"},{"internalType":"uint256","name":"maxExecutionsLength_","type":"uint256"},{"internalType":"address","name":"mandateRegistry_","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[],"type":"error","name":"Powers__ActionAlreadyFulfilled"},{"inputs":[],"type":"error","name":"Powers__ActionAlreadyInitiated"},{"inputs":[],"type":"error","name":"Powers__ActionCancelled"},{"inputs":[],"type":"error","name":"Powers__ActionNotProposed"},{"inputs":[],"type":"error","name":"Powers__ActionNotRequested"},{"inputs":[],"type":"error","name":"Powers__AddressBlacklisted"},{"inputs":[],"type":"error","name":"Powers__AlreadyCastVote"},{"inputs":[],"type":"error","name":"Powers__CalldataTooLong"},{"inputs":[],"type":"error","name":"Powers__CallerNotTargetMandate"},{"inputs":[],"type":"error","name":"Powers__CannotAddPowersAddressAsMember"},{"inputs":[],"type":"error","name":"Powers__CannotAddZeroAddress"},{"inputs":[],"type":"error","name":"Powers__CannotCallMandate"},{"inputs":[],"type":"error","name":"Powers__CannotSetPublicRole"},{"inputs":[],"type":"error","name":"Powers__CannotSetZeroAddress"},{"inputs":[],"type":"error","name":"Powers__ConstituteClosed"},{"inputs":[],"type":"error","name":"Powers__ConstituteOpen"},{"inputs":[],"type":"error","name":"Powers__ConstitutionAlreadyExecuted"},{"inputs":[],"type":"error","name":"Powers__ExecutionArrayTooLong"},{"inputs":[],"type":"error","name":"Powers__ExternalContractBlacklisted"},{"inputs":[{"internalType":"address","name":"targetMandate","type":"address"}],"type":"error","name":"Powers__IncorrectInterface"},{"inputs":[],"type":"error","name":"Powers__InvalidAddress"},{"inputs":[],"type":"error","name":"Powers__InvalidCallData"},{"inputs":[],"type":"error","name":"Powers__InvalidFlowIndex"},{"inputs":[],"type":"error","name":"Powers__InvalidIndex"},{"inputs":[],"type":"error","name":"Powers__InvalidLabel"},{"inputs":[],"type":"error","name":"Powers__InvalidMandateId"},{"inputs":[],"type":"error","name":"Powers__InvalidMandateIndex"},{"inputs":[],"type":"error","name":"Powers__InvalidMaxCallDataLength"},{"inputs":[],"type":"error","name":"Powers__InvalidMaxExecutionsLength"},{"inputs":[],"type":"error","name":"Powers__InvalidName"},{"inputs":[],"type":"error","name":"Powers__InvalidReturnCallDataLength"},{"inputs":[],"type":"error","name":"Powers__InvalidVoteType"},{"inputs":[],"type":"error","name":"Powers__JoinedAfterVoteStart"},{"inputs":[],"type":"error","name":"Powers__LabelTooLong"},{"inputs":[],"type":"error","name":"Powers__LockedRole"},{"inputs":[],"type":"error","name":"Powers__MandateFulfillCallFailed"},{"inputs":[],"type":"error","name":"Powers__MandateNotActive"},{"inputs":[{"internalType":"address","name":"targetMandate","type":"address"}],"type":"error","name":"Powers__MandateNotRegistered"},{"inputs":[],"type":"error","name":"Powers__MandateRequestFailed"},{"inputs":[],"type":"error","name":"Powers__NoMembersInRole"},{"inputs":[],"type":"error","name":"Powers__NoVoteNeeded"},{"inputs":[],"type":"error","name":"Powers__NotAContract"},{"inputs":[],"type":"error","name":"Powers__NotProposerAction"},{"inputs":[],"type":"error","name":"Powers__OnlyAdmin"},{"inputs":[],"type":"error","name":"Powers__OnlyPowers"},{"inputs":[],"type":"error","name":"Powers__PayableNotEnabled"},{"inputs":[],"type":"error","name":"Powers__ProposedActionNotActive"},{"inputs":[],"type":"error","name":"Powers__UnexpectedActionState"},{"inputs":[],"type":"error","name":"Powers__UriTooLong"},{"inputs":[],"type":"error","name":"Powers__VoteWithPublicRoleDisallowed"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true},{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true},{"internalType":"address[]","name":"targets","type":"address[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]","indexed":false}],"type":"event","name":"ActionFulfilled","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":true},{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true},{"internalType":"bytes","name":"mandateCalldata","type":"bytes","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"string","name":"description","type":"string","indexed":false}],"type":"event","name":"ActionRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"blacklisted","type":"bool","indexed":true}],"type":"event","name":"BlacklistSet","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint8","name":"index1","type":"uint8","indexed":false},{"internalType":"uint8","name":"index2","type":"uint8","indexed":false},{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":false}],"type":"event","name":"FlowAdapted","anonymous":false},{"inputs":[{"internalType":"uint16[]","name":"mandateIds","type":"uint16[]","indexed":false},{"internalType":"string","name":"nameDescription","type":"string","indexed":false}],"type":"event","name":"FlowAdded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8","indexed":true}],"type":"event","name":"FlowDeleted","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"FundsReceived","anonymous":false},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true}],"type":"event","name":"MandateAdopted","anonymous":false},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true}],"type":"event","name":"MandateRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"newPaymaster","type":"address","indexed":true}],"type":"event","name":"PaymasterSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"string","name":"uri","type":"string","indexed":false}],"type":"event","name":"Powers__Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true}],"type":"event","name":"ProposedActionCancelled","anonymous":false},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":true},{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true},{"internalType":"string","name":"signature","type":"string","indexed":false},{"internalType":"bytes","name":"executeCalldata","type":"bytes","indexed":false},{"internalType":"uint256","name":"voteStart","type":"uint256","indexed":false},{"internalType":"uint256","name":"voteEnd","type":"uint256","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"string","name":"description","type":"string","indexed":false}],"type":"event","name":"ProposedActionCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256","indexed":true},{"internalType":"string","name":"label","type":"string","indexed":false}],"type":"event","name":"RoleLabel","anonymous":false},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"access","type":"bool","indexed":true}],"type":"event","name":"RoleSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true},{"internalType":"uint8","name":"support","type":"uint8","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"VoteCast","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FOUNDED_AT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANDATE_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CALLDATA_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_EXECUTIONS_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_RETURN_DATA_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PUBLIC_ROLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct PowersTypes.Flow","name":"flow","type":"tuple","components":[{"internalType":"uint16[]","name":"mandateIds","type":"uint16[]"},{"internalType":"string","name":"nameDescription","type":"string"}]}],"stateMutability":"nonpayable","type":"function","name":"addFlow"},{"inputs":[{"internalType":"struct PowersTypes.MandateInitData","name":"mandateInitData","type":"tuple","components":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"address","name":"targetMandate","type":"address"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"struct PowersTypes.Conditions","name":"conditions","type":"tuple","components":[{"internalType":"uint256","name":"allowedRole","type":"uint256"},{"internalType":"uint32","name":"votingPeriod","type":"uint32"},{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"uint32","name":"throttleExecution","type":"uint32"},{"internalType":"uint16","name":"needFulfilled","type":"uint16"},{"internalType":"uint16","name":"needNotFulfilled","type":"uint16"},{"internalType":"uint8","name":"quorum","type":"uint8"},{"internalType":"uint8","name":"succeedAt","type":"uint8"},{"internalType":"uint32","name":"maxExecutionDelay","type":"uint32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"adoptMandate","outputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"assignRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"blacklistAddress"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"canCallMandate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"castVote"},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"castVoteWithReason"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"closeConstitute"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"closeConstitute"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"struct PowersTypes.Flow[]","name":"_flows","type":"tuple[]","components":[{"internalType":"uint16[]","name":"mandateIds","type":"uint16[]"},{"internalType":"string","name":"nameDescription","type":"string"}]}],"stateMutability":"nonpayable","type":"function","name":"closeConstitute"},{"inputs":[{"internalType":"struct PowersTypes.MandateInitData[]","name":"constituentMandates","type":"tuple[]","components":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"address","name":"targetMandate","type":"address"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"struct PowersTypes.Conditions","name":"conditions","type":"tuple","components":[{"internalType":"uint256","name":"allowedRole","type":"uint256"},{"internalType":"uint32","name":"votingPeriod","type":"uint32"},{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"uint32","name":"throttleExecution","type":"uint32"},{"internalType":"uint16","name":"needFulfilled","type":"uint16"},{"internalType":"uint16","name":"needNotFulfilled","type":"uint16"},{"internalType":"uint8","name":"quorum","type":"uint8"},{"internalType":"uint8","name":"succeedAt","type":"uint8"},{"internalType":"uint32","name":"maxExecutionDelay","type":"uint32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"constitute"},{"inputs":[{"internalType":"uint8","name":"index1","type":"uint8"},{"internalType":"uint8","name":"index2","type":"uint8"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"editFlowByIndex"},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"flows","outputs":[{"internalType":"string","name":"nameDescription","type":"string"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"fulfill"},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionCalldata","outputs":[{"internalType":"bytes","name":"callData","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionData","outputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"uint48","name":"proposedAt","type":"uint48"},{"internalType":"uint48","name":"requestedAt","type":"uint48"},{"internalType":"uint48","name":"fulfilledAt","type":"uint48"},{"internalType":"uint48","name":"cancelledAt","type":"uint48"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionReturnData","outputs":[{"internalType":"bytes","name":"returnData","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionState","outputs":[{"internalType":"enum PowersTypes.ActionState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionUri","outputs":[{"internalType":"string","name":"_uri","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionVoteData","outputs":[{"internalType":"uint48","name":"voteStart","type":"uint48"},{"internalType":"uint32","name":"voteDuration","type":"uint32"},{"internalType":"uint256","name":"voteEnd","type":"uint256"},{"internalType":"uint32","name":"againstVotes","type":"uint32"},{"internalType":"uint32","name":"forVotes","type":"uint32"},{"internalType":"uint32","name":"abstainVotes","type":"uint32"},{"internalType":"uint32","name":"voterCountSnapshot","type":"uint32"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getAdoptedMandate","outputs":[{"internalType":"address","name":"mandate","type":"address"},{"internalType":"bytes32","name":"mandateHash","type":"bytes32"},{"internalType":"bool","name":"active","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAmountRoleHolders","outputs":[{"internalType":"uint256","name":"amountMembers","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getConditions","outputs":[{"internalType":"struct PowersTypes.Conditions","name":"conditions","type":"tuple","components":[{"internalType":"uint256","name":"allowedRole","type":"uint256"},{"internalType":"uint32","name":"votingPeriod","type":"uint32"},{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"uint32","name":"throttleExecution","type":"uint32"},{"internalType":"uint16","name":"needFulfilled","type":"uint16"},{"internalType":"uint16","name":"needNotFulfilled","type":"uint16"},{"internalType":"uint8","name":"quorum","type":"uint8"},{"internalType":"uint8","name":"succeedAt","type":"uint8"},{"internalType":"uint32","name":"maxExecutionDelay","type":"uint32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFlowCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"getFlowDescriptionAtIndex","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"getFlowMandatesAtIndex","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getLatestFulfillment","outputs":[{"internalType":"uint48","name":"latestFulfillment","type":"uint48"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getMandateActionAtIndex","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMandateCounter","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getQuantityMandateActions","outputs":[{"internalType":"uint256","name":"quantityMandateActions","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleHolderAtIndex","outputs":[{"internalType":"address","name":"account","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleMetadata","outputs":[{"internalType":"string","name":"metadata","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTreasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"hasRoleSince","outputs":[{"internalType":"uint48","name":"since","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"string","name":"label","type":"string"},{"internalType":"string","name":"metadata","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"labelRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"mandateCounter","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paymaster","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"string","name":"uriAction","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"propose","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeFlow"},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"string","name":"uriAction","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"request","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"revokeMandate"},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"newPaymaster","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPaymaster"},{"inputs":[{"internalType":"address payable","name":"newTreasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"string","name":"newUri","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setUri"},{"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":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addFlow((uint16[],string))":{"details":"Can only be called through the protocol itself","params":{"flow":"The flow to add"}},"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))":{"details":"Can only be called through the protocol itself","params":{"mandateInitData":"The data of the mandate"}},"assignRole(uint256,address)":{"details":"Can only be called through the protocol itself","params":{"account":"The address to grant the role to","roleId":"The identifier of the role to assign"}},"blacklistAddress(address,bool)":{"details":"Can only be called through the protocol itself","params":{"account":"The address to blacklist","blacklisted":"The blacklisted status of the account"}},"canCallMandate(address,uint16)":{"params":{"caller":"The address attempting to call the mandate","mandateId":"The mandate id to check"},"returns":{"_0":"True if the caller has permission, false otherwise"}},"cancel(uint16,bytes,uint256)":{"details":"the account to cancel must be the account that created the proposedAction.","params":{"mandateCalldata":"The original encoded function call data","mandateId":"The id of the mandate","nonce":"The nonce for the action"},"returns":{"_0":"The unique identifier of the cancelled proposal"}},"castVote(uint256,uint8)":{"details":"Vote types: 0=Against, 1=For, 2=Abstain","params":{"actionId":"The unique identifier of the proposal","support":"The type of vote to cast"}},"castVoteWithReason(uint256,uint8,string)":{"details":"Same as castVote but includes a reason string","params":{"actionId":"The unique identifier of the proposal","reason":"A human-readable explanation for the vote","support":"The type of vote to cast"}},"closeConstitute()":{"details":"Can only be called by an admin account"},"closeConstitute(address)":{"details":"Can only be called by an admin account","params":{"newAdmin":"The address of the new admin account"}},"closeConstitute(address,(uint16[],string)[])":{"details":"Can only be called by an admin account","params":{"flows":"The initial governance flows to set in the protocol","newAdmin":"The address of the new admin account"}},"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])":{"details":"WARNING: any adopted mandate needs to be audited carefully as it will give powers to role holders over the organisation.","params":{"mandates":"The list of mandate contracts to activate"}},"constructor":{"params":{"mandateRegistry_":"MandateRegistry address this org enforces mandate membership against. Pass address(0) to adopt any address implementing IMandate, with no registry restriction.","maxCallDataLength_":"maximum length of calldata for a mandate","maxExecutionsLength_":"maximum length of executions for a mandate","maxReturnDataLength_":"maximum length of return data for a mandate","name_":"name of the contract","uri_":"uri of the contract"}},"editFlowByIndex(uint8,uint8,uint16)":{"details":"Can only be called through the protocol itself","params":{"index1":"The index of the flow to edit","index2":"The index of the mandate in the flow to replace","mandateId":"The id of the new mandate to add to the flow"}},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"fulfill(uint16,uint256,address[],uint256[],bytes[])":{"details":"Can only be called by an active mandate contract","params":{"actionId":"The unique identifier of the action","calldatas":"The list of encoded function calls","mandateId":"The id of the mandate","targets":"The list of contract addresses to call","values":"The list of ETH values to send with each call"}},"getActionCalldata(uint256)":{"params":{"actionId":"The unique identifier of the action"},"returns":{"callData":"The calldata for the action"}},"getActionData(uint256)":{"params":{"actionId":"The unique identifier of the proposal"},"returns":{"caller":"- the address of the caller","cancelledAt":"- the block number at which the action was cancelled","fulfilledAt":"- the block number at which the action was fulfilled","mandateId":"- the id of the mandate that the action is associated with","nonce":"- the nonce of the action","proposedAt":"- the block number at which the action was proposed","requestedAt":"- the block number at which the action was requested"}},"getActionReturnData(uint256,uint256)":{"params":{"actionId":"The unique identifier of the action","index":"The index of the return data"},"returns":{"returnData":"The return data for the action"}},"getActionState(uint256)":{"params":{"actionId":"The unique identifier of the proposal"},"returns":{"_0":"the current state of the proposal"}},"getActionUri(uint256)":{"params":{"actionId":"The unique identifier of the action"},"returns":{"_uri":"The URI for the action"}},"getActionVoteData(uint256)":{"params":{"actionId":"The unique identifier of the proposal"},"returns":{"abstainVotes":"- the number of abstain votes","againstVotes":"- the number of votes against the action","forVotes":"- the number of votes for the action","voteDuration":"- the duration of the voting period","voteEnd":"- the block number at which voting ends","voteStart":"- the block number at which voting starts","voterCountSnapshot":"- the eligible-voter count snapshotted at voteStart (quorum/threshold denominator)"}},"getAdoptedMandate(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"active":"The active status of the mandate","mandate":"The address of the mandate","mandateHash":"The hash of the mandate"}},"getAmountRoleHolders(uint256)":{"params":{"roleId":"The identifier of the role"},"returns":{"amountMembers":"the number of role holders"}},"getConditions(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"conditions":"The conditions of the mandate"}},"getFlowDescriptionAtIndex(uint8)":{"params":{"index":"The index of the flow"},"returns":{"_0":"description The human-readable description of the flow"}},"getFlowMandatesAtIndex(uint8)":{"params":{"index":"The index of the flow"},"returns":{"_0":"The ids of the mandates in the flow"}},"getLatestFulfillment(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"latestFulfillment":"The latest fulfillment of the mandate"}},"getMandateActionAtIndex(uint16,uint256)":{"params":{"index":"The index of the action","mandateId":"The id of the mandate"},"returns":{"actionId":"The action at the index"}},"getMandateCounter()":{"details":"Added this function to expose mandateCounter at IPowers interface level.","returns":{"_0":"The total number of adopted mandates"}},"getQuantityMandateActions(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"quantityMandateActions":"The quantity of actions of the mandate"}},"getRoleHolderAtIndex(uint256,uint256)":{"params":{"index":"The index of the role holder","roleId":"The identifier of the role"},"returns":{"account":"The address of the role holder"}},"getRoleLabel(uint256)":{"params":{"roleId":"The identifier of the role"},"returns":{"label":"The label of the role"}},"getRoleMetadata(uint256)":{"params":{"roleId":"The identifier of the role"},"returns":{"metadata":"The URI of the role"}},"getTreasury()":{"returns":{"_0":"The treasury address"}},"hasRoleSince(address,uint256)":{"params":{"account":"The address to check","roleId":"The identifier of the role"},"returns":{"since":"the block number since holding the role, 0 if never held"}},"hasVoted(uint256,address)":{"params":{"account":"The address to check","actionId":"The unique identifier of the proposal"},"returns":{"_0":"True if the account has voted, false otherwise"}},"isBlacklisted(address)":{"params":{"account":"The address to check"},"returns":{"_0":"The blacklisted status of the account"}},"labelRole(uint256,string,string)":{"details":"Optional. Can only be called through the protocol itself","params":{"label":"The human-readable label for the role","metadata":"The URI for the role metadata","roleId":"The identifier of the role to label"}},"propose(uint16,bytes,uint256,string)":{"details":"Only callable if the mandate requires voting (quorum > 0)note that no checks are run. If account has acces to mandate and it requires a vote - the account wil be able to create proposals.","params":{"mandateCalldata":"The encoded function call data for the mandate","mandateId":"The id of the mandate","nonce":"The nonce for the action","uriDescription":"A human-readable description of the proposal"},"returns":{"actionId":"The unique identifier of the created proposal"}},"removeFlow(uint8)":{"details":"Can only be called through the protocol itself","params":{"index":"The index of the flow to remove"}},"request(uint16,bytes,uint256,string)":{"details":"The request -> fulfill functions follow a call-and-return mechanism. This allows for async execution of mandates.","params":{"mandateCalldata":"The encoded function call data for the mandate","mandateId":"The id of the mandate","nonce":"The nonce for the action","uriDescription":"A human-readable description of the action"}},"revokeMandate(uint16)":{"details":"Can only be called through the protocol itself","params":{"mandateId":"The id of the mandate"}},"revokeRole(uint256,address)":{"details":"Can only be called through the protocol itself","params":{"account":"The address to remove the role from","roleId":"The identifier of the role to remove"}},"setPaymaster(address)":{"details":"Can only be called through the protocol itself","params":{"newPaymaster":"The new paymaster address"}},"setTreasury(address)":{"details":"Can only be called through the protocol itself","params":{"newTreasury":"The new treasury address"}},"setUri(string)":{"details":"Can only be called through the protocol itself","params":{"newUri":"The new URI string"}},"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()":{"returns":{"_0":"the version string"}}},"version":1},"userdoc":{"kind":"user","methods":{"ADMIN_ROLE()":{"notice":"Role identifier for the admin role"},"DENOMINATOR()":{"notice":"Denominator used for percentage calculations (100%)"},"FOUNDED_AT()":{"notice":"block number at which the Powers contract was deployed."},"MANDATE_REGISTRY()":{"notice":"Address of the MandateRegistry this org enforces mandate membership against."},"MAX_CALLDATA_LENGTH()":{"notice":"Maximum length of calldata for a mandate action"},"MAX_EXECUTIONS_LENGTH()":{"notice":"Maximum number of execution targets per action"},"MAX_RETURN_DATA_LENGTH()":{"notice":"Maximum length of return data stored from execution"},"PUBLIC_ROLE()":{"notice":"Role identifier for the public role (everyone)"},"addFlow((uint16[],string))":{"notice":"Adds flows"},"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))":{"notice":"Activates a new mandate in the protocol"},"assignRole(uint256,address)":{"notice":"Grants a role to an account"},"blacklistAddress(address,bool)":{"notice":"Blacklists an account"},"canCallMandate(address,uint16)":{"notice":"Checks if an account has permission to call a mandate"},"cancel(uint16,bytes,uint256)":{"notice":"Cancels an existing proposal"},"castVote(uint256,uint8)":{"notice":"Casts a vote on an active proposal"},"castVoteWithReason(uint256,uint8,string)":{"notice":"Casts a vote on an active proposal with an explanation"},"closeConstitute()":{"notice":"Closes the constitute phase, preventing further mandates from being added"},"closeConstitute(address)":{"notice":"Closes the constitute phase, preventing further mandates from being added"},"closeConstitute(address,(uint16[],string)[])":{"notice":"Closes the constitute phase, preventing further mandates from being added, and sets the initial flows."},"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])":{"notice":"Initializes the DAO by activating its founding mandates"},"constructor":{"notice":"Sets the value for {name} at the time of construction."},"editFlowByIndex(uint8,uint8,uint16)":{"notice":"Edits a flow by replacing a mandate in the flow with another mandate"},"flows(uint256)":{"notice":"array of flows to provide human and mandate readable structure to governance."},"fulfill(uint16,uint256,address[],uint256[],bytes[])":{"notice":"Completes an action by executing the actual calls"},"getActionCalldata(uint256)":{"notice":"Gets the calldata for a specific action"},"getActionData(uint256)":{"notice":"gets the data of an actionId that are not an array."},"getActionReturnData(uint256,uint256)":{"notice":"Gets the return data for a specific action"},"getActionState(uint256)":{"notice":"Gets the current state of a proposal"},"getActionUri(uint256)":{"notice":"Gets the URI for a specific action"},"getActionVoteData(uint256)":{"notice":"gets the vote data of an actionId that are not an array."},"getAdoptedMandate(uint16)":{"notice":"Checks if a mandate is currently active"},"getAmountRoleHolders(uint256)":{"notice":"Gets the total number of accounts holding a specific role"},"getConditions(uint16)":{"notice":"Gets the conditions of a mandate"},"getFlowCount()":{"notice":"Gets the quantity of governance flows for a mandate"},"getFlowDescriptionAtIndex(uint8)":{"notice":"Gets the description of a governance flow at a specific index"},"getFlowMandatesAtIndex(uint8)":{"notice":"Gets the mandates of a governance flow at a specific index"},"getLatestFulfillment(uint16)":{"notice":"Gets the latest fulfillment of a mandate"},"getMandateActionAtIndex(uint16,uint256)":{"notice":"Gets the actions of a mandate"},"getMandateCounter()":{"notice":"Gets the total number of adopted mandates"},"getQuantityMandateActions(uint16)":{"notice":"Gets the quantity of actions of a mandate"},"getRoleHolderAtIndex(uint256,uint256)":{"notice":"Gets the holder of a role at a specific index"},"getRoleLabel(uint256)":{"notice":"Gets the label of a role"},"getRoleMetadata(uint256)":{"notice":"Gets the URI of a role"},"getTreasury()":{"notice":"Getter for treasury address."},"hasRoleSince(address,uint256)":{"notice":"Gets the block number since which an account has held a role"},"hasVoted(uint256,address)":{"notice":"Checks if an account has voted on a specific proposal"},"isBlacklisted(address)":{"notice":"Checks if an account is blacklisted"},"labelRole(uint256,string,string)":{"notice":"Assigns a human-readable label and URI to a role"},"mandateCounter()":{"notice":"Number of mandates that have been initiated throughout the life of the organisation"},"name()":{"notice":"Name of the DAO"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"notice":"Allows the contract to receive ERC1155 batch transfers once the constitution is closed."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"notice":"Allows the contract to receive ERC1155 tokens once the constitution is closed."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Allows the contract to receive ERC721 tokens once the constitution is closed."},"paymaster()":{"notice":"Address to the paymaster of the organisation"},"propose(uint16,bytes,uint256,string)":{"notice":"Creates a new proposal for an action that requires voting"},"removeFlow(uint8)":{"notice":"Removes a flow"},"request(uint16,bytes,uint256,string)":{"notice":"Initiates an action to be executed through a mandate"},"revokeMandate(uint16)":{"notice":"Deactivates an existing mandate"},"revokeRole(uint256,address)":{"notice":"Removes a role from an account"},"setPaymaster(address)":{"notice":"Sets the paymaster address"},"setTreasury(address)":{"notice":"Sets the treasury address"},"setUri(string)":{"notice":"Updates the protocol's metadata URI"},"uri()":{"notice":"URI to metadata of the DAO"},"version()":{"notice":"Gets the protocol version"}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Powers.sol":"Powers"},"evmVersion":"cancun","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/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620","urls":["bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8","dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"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/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c","urls":["bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99","dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4","urls":["bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4","dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0x7c7ad70641a7f8cd44def0857ec97b0e40bfd073b2d6037a5f57ce9527ee9bc5","urls":["bzz-raw://e05c6572dfe769f7aea6f3a8002951cc12d143d980dad29f6c5feedf9408bc14","dweb:/ipfs/QmXM7C8YEptxisZiEefXUrwdXt3zMaCobmkCchxTtDg1oK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/Mandate.sol":{"keccak256":"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d","urls":["bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929","dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P"],"license":"MIT"},"src/Powers.sol":{"keccak256":"0xcda7b17de7d16d26a4f5add3f0c9436ba4dec1510c94dee944d67979883b10c0","urls":["bzz-raw://7707b12cbc5418d71f98360293131fbbea226d5c5c3cbf51598ac72ab3f35e42","dweb:/ipfs/QmRFVs3ipEAgVsi3tC2iougZV9X1nZpCLNC2j2QGLKYm98"],"license":"MIT"},"src/core/helpers/MandateRegistry.sol":{"keccak256":"0xe859949e3164fca43cce647b9eecdcfa5442db90697c6d000c945173ed168e11","urls":["bzz-raw://f8f90214fdace0b52df72684d5a2ed7f85ea2e6a79d4faa8b15832850d08ade2","dweb:/ipfs/QmaXZpQ839qef6RiqGCVfar2Xv8EXt2BbDRE4w1nDf5kZX"],"license":"MIT"},"src/interfaces/IMandate.sol":{"keccak256":"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa","urls":["bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931","dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A"],"license":"MIT"},"src/interfaces/IPowers.sol":{"keccak256":"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690","urls":["bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec","dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp"],"license":"MIT"},"src/interfaces/PowersErrors.sol":{"keccak256":"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098","urls":["bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882","dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf"],"license":"MIT"},"src/interfaces/PowersEvents.sol":{"keccak256":"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e","urls":["bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d","dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB"],"license":"MIT"},"src/interfaces/PowersTypes.sol":{"keccak256":"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878","urls":["bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740","dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK"],"license":"MIT"},"src/libraries/Checks.sol":{"keccak256":"0xfa4f4b800a694dcf02d3746190e00592299ccebed45b6fce170445d7e66c7e48","urls":["bzz-raw://5001fe28d43a2d90782f859e3fa276fbc39d5cc65b3ff1d72b4bd4e99b909564","dweb:/ipfs/QmXMfWEYN9RtjhWZYnpmpdWnd9FnYULbZnyB89PLqLxYff"],"license":"MIT"},"src/libraries/MandateUtilities.sol":{"keccak256":"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5","urls":["bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad","dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC"],"license":"MIT"},"src/libraries/PowersUtilities.sol":{"keccak256":"0x2e7261ec42774bf281178d506856213d199bb652c9a8867b543b47878de65406","urls":["bzz-raw://7772019701eb8437442c89f95cf2c2ba5d37ca5aa13b9f40f69e29ef0c39d7d1","dweb:/ipfs/QmW7uzD68d1JhW6bacja5qFFuZijwCf98num1wEPKoDRU9"],"license":"MIT"}},"version":1},"id":108} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"uri_","type":"string","internalType":"string"},{"name":"maxCallDataLength_","type":"uint256","internalType":"uint256"},{"name":"maxReturnDataLength_","type":"uint256","internalType":"uint256"},{"name":"maxExecutionsLength_","type":"uint256","internalType":"uint256"},{"name":"mandateRegistry_","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FOUNDED_AT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MANDATE_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"MAX_CALLDATA_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_EXECUTIONS_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_RETURN_DATA_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PUBLIC_ROLE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addFlow","inputs":[{"name":"flow","type":"tuple","internalType":"struct PowersTypes.Flow","components":[{"name":"mandateIds","type":"uint16[]","internalType":"uint16[]"},{"name":"nameDescription","type":"string","internalType":"string"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adoptMandate","inputs":[{"name":"mandateInitData","type":"tuple","internalType":"struct PowersTypes.MandateInitData","components":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"targetMandate","type":"address","internalType":"address"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"conditions","type":"tuple","internalType":"struct PowersTypes.Conditions","components":[{"name":"allowedRole","type":"uint256","internalType":"uint256"},{"name":"votingPeriod","type":"uint32","internalType":"uint32"},{"name":"timelock","type":"uint32","internalType":"uint32"},{"name":"throttleExecution","type":"uint32","internalType":"uint32"},{"name":"needFulfilled","type":"uint16","internalType":"uint16"},{"name":"needNotFulfilled","type":"uint16","internalType":"uint16"},{"name":"quorum","type":"uint8","internalType":"uint8"},{"name":"succeedAt","type":"uint8","internalType":"uint8"},{"name":"maxExecutionDelay","type":"uint32","internalType":"uint32"}]}]}],"outputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"stateMutability":"nonpayable"},{"type":"function","name":"assignRole","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklistAddress","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"blacklisted","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canCallMandate","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancel","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"castVote","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"support","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"castVoteWithReason","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"support","type":"uint8","internalType":"uint8"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeConstitute","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeConstitute","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeConstitute","inputs":[{"name":"newAdmin","type":"address","internalType":"address"},{"name":"_flows","type":"tuple[]","internalType":"struct PowersTypes.Flow[]","components":[{"name":"mandateIds","type":"uint16[]","internalType":"uint16[]"},{"name":"nameDescription","type":"string","internalType":"string"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"constitute","inputs":[{"name":"constituentMandates","type":"tuple[]","internalType":"struct PowersTypes.MandateInitData[]","components":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"targetMandate","type":"address","internalType":"address"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"conditions","type":"tuple","internalType":"struct PowersTypes.Conditions","components":[{"name":"allowedRole","type":"uint256","internalType":"uint256"},{"name":"votingPeriod","type":"uint32","internalType":"uint32"},{"name":"timelock","type":"uint32","internalType":"uint32"},{"name":"throttleExecution","type":"uint32","internalType":"uint32"},{"name":"needFulfilled","type":"uint16","internalType":"uint16"},{"name":"needNotFulfilled","type":"uint16","internalType":"uint16"},{"name":"quorum","type":"uint8","internalType":"uint8"},{"name":"succeedAt","type":"uint8","internalType":"uint8"},{"name":"maxExecutionDelay","type":"uint32","internalType":"uint32"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"editFlowByIndex","inputs":[{"name":"index1","type":"uint8","internalType":"uint8"},{"name":"index2","type":"uint8","internalType":"uint8"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flows","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"fulfill","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"targets","type":"address[]","internalType":"address[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActionCalldata","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getActionData","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"proposedAt","type":"uint48","internalType":"uint48"},{"name":"requestedAt","type":"uint48","internalType":"uint48"},{"name":"fulfilledAt","type":"uint48","internalType":"uint48"},{"name":"cancelledAt","type":"uint48","internalType":"uint48"},{"name":"caller","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getActionReturnData","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"returnData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getActionState","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint8","internalType":"enum PowersTypes.ActionState"}],"stateMutability":"view"},{"type":"function","name":"getActionUri","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"_uri","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getActionVoteData","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"voteStart","type":"uint48","internalType":"uint48"},{"name":"voteDuration","type":"uint32","internalType":"uint32"},{"name":"voteEnd","type":"uint256","internalType":"uint256"},{"name":"againstVotes","type":"uint32","internalType":"uint32"},{"name":"forVotes","type":"uint32","internalType":"uint32"},{"name":"abstainVotes","type":"uint32","internalType":"uint32"},{"name":"voterCountSnapshot","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getAdoptedMandate","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"mandate","type":"address","internalType":"address"},{"name":"mandateHash","type":"bytes32","internalType":"bytes32"},{"name":"active","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAmountRoleHolders","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountMembers","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getConditions","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"conditions","type":"tuple","internalType":"struct PowersTypes.Conditions","components":[{"name":"allowedRole","type":"uint256","internalType":"uint256"},{"name":"votingPeriod","type":"uint32","internalType":"uint32"},{"name":"timelock","type":"uint32","internalType":"uint32"},{"name":"throttleExecution","type":"uint32","internalType":"uint32"},{"name":"needFulfilled","type":"uint16","internalType":"uint16"},{"name":"needNotFulfilled","type":"uint16","internalType":"uint16"},{"name":"quorum","type":"uint8","internalType":"uint8"},{"name":"succeedAt","type":"uint8","internalType":"uint8"},{"name":"maxExecutionDelay","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getFlowCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFlowDescriptionAtIndex","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getFlowMandatesAtIndex","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint16[]","internalType":"uint16[]"}],"stateMutability":"view"},{"type":"function","name":"getLatestFulfillment","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"latestFulfillment","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getMandateActionAtIndex","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMandateCounter","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"getQuantityMandateActions","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"quantityMandateActions","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleHolderAtIndex","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"account","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRoleLabel","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getRoleMetadata","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"metadata","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getTreasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"hasRoleSince","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"roleId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"since","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"hasVoted","inputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isBlacklisted","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"labelRole","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"label","type":"string","internalType":"string"},{"name":"metadata","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mandateCounter","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"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":"view"},{"type":"function","name":"paymaster","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"propose","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"uriAction","type":"string","internalType":"string"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeFlow","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"request","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"uriAction","type":"string","internalType":"string"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokeMandate","inputs":[{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"roleId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymaster","inputs":[{"name":"newPaymaster","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"newTreasury","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUri","inputs":[{"name":"newUri","type":"string","internalType":"string"}],"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":"uri","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"event","name":"ActionFulfilled","inputs":[{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"targets","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false},{"type":"event","name":"ActionRequested","inputs":[{"name":"caller","type":"address","indexed":true,"internalType":"address"},{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"description","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"BlacklistSet","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"blacklisted","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"FlowAdapted","inputs":[{"name":"index1","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"index2","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"mandateId","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"FlowAdded","inputs":[{"name":"mandateIds","type":"uint16[]","indexed":false,"internalType":"uint16[]"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"FlowDeleted","inputs":[{"name":"index","type":"uint8","indexed":true,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"FundsReceived","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MandateAdopted","inputs":[{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"MandateRevoked","inputs":[{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"PaymasterSet","inputs":[{"name":"newPaymaster","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Powers__Initialized","inputs":[{"name":"contractAddress","type":"address","indexed":false,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"uri","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"ProposedActionCancelled","inputs":[{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProposedActionCreated","inputs":[{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"caller","type":"address","indexed":true,"internalType":"address"},{"name":"mandateId","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"signature","type":"string","indexed":false,"internalType":"string"},{"name":"executeCalldata","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"voteStart","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"voteEnd","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"description","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"RoleLabel","inputs":[{"name":"roleId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"label","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"RoleSet","inputs":[{"name":"roleId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"access","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"VoteCast","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"actionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"support","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"Powers__ActionAlreadyFulfilled","inputs":[]},{"type":"error","name":"Powers__ActionAlreadyInitiated","inputs":[]},{"type":"error","name":"Powers__ActionCancelled","inputs":[]},{"type":"error","name":"Powers__ActionNotProposed","inputs":[]},{"type":"error","name":"Powers__ActionNotRequested","inputs":[]},{"type":"error","name":"Powers__AddressBlacklisted","inputs":[]},{"type":"error","name":"Powers__AlreadyCastVote","inputs":[]},{"type":"error","name":"Powers__CalldataTooLong","inputs":[]},{"type":"error","name":"Powers__CallerNotTargetMandate","inputs":[]},{"type":"error","name":"Powers__CannotAddPowersAddressAsMember","inputs":[]},{"type":"error","name":"Powers__CannotAddZeroAddress","inputs":[]},{"type":"error","name":"Powers__CannotCallMandate","inputs":[]},{"type":"error","name":"Powers__CannotSetPublicRole","inputs":[]},{"type":"error","name":"Powers__CannotSetZeroAddress","inputs":[]},{"type":"error","name":"Powers__ConstituteClosed","inputs":[]},{"type":"error","name":"Powers__ConstituteOpen","inputs":[]},{"type":"error","name":"Powers__ConstitutionAlreadyExecuted","inputs":[]},{"type":"error","name":"Powers__ExecutionArrayTooLong","inputs":[]},{"type":"error","name":"Powers__ExternalContractBlacklisted","inputs":[]},{"type":"error","name":"Powers__IncorrectInterface","inputs":[{"name":"targetMandate","type":"address","internalType":"address"}]},{"type":"error","name":"Powers__InvalidAddress","inputs":[]},{"type":"error","name":"Powers__InvalidCallData","inputs":[]},{"type":"error","name":"Powers__InvalidFlowIndex","inputs":[]},{"type":"error","name":"Powers__InvalidIndex","inputs":[]},{"type":"error","name":"Powers__InvalidLabel","inputs":[]},{"type":"error","name":"Powers__InvalidMandateId","inputs":[]},{"type":"error","name":"Powers__InvalidMandateIndex","inputs":[]},{"type":"error","name":"Powers__InvalidMaxCallDataLength","inputs":[]},{"type":"error","name":"Powers__InvalidMaxExecutionsLength","inputs":[]},{"type":"error","name":"Powers__InvalidName","inputs":[]},{"type":"error","name":"Powers__InvalidReturnCallDataLength","inputs":[]},{"type":"error","name":"Powers__InvalidVoteType","inputs":[]},{"type":"error","name":"Powers__JoinedAfterVoteStart","inputs":[]},{"type":"error","name":"Powers__LabelTooLong","inputs":[]},{"type":"error","name":"Powers__LockedRole","inputs":[]},{"type":"error","name":"Powers__MandateFulfillCallFailed","inputs":[]},{"type":"error","name":"Powers__MandateNotActive","inputs":[]},{"type":"error","name":"Powers__MandateNotRegistered","inputs":[{"name":"targetMandate","type":"address","internalType":"address"}]},{"type":"error","name":"Powers__MandateRequestFailed","inputs":[]},{"type":"error","name":"Powers__NoMembersInRole","inputs":[]},{"type":"error","name":"Powers__NoVoteNeeded","inputs":[]},{"type":"error","name":"Powers__NotAContract","inputs":[]},{"type":"error","name":"Powers__NotProposerAction","inputs":[]},{"type":"error","name":"Powers__OnlyAdmin","inputs":[]},{"type":"error","name":"Powers__OnlyPowers","inputs":[]},{"type":"error","name":"Powers__PayableNotEnabled","inputs":[]},{"type":"error","name":"Powers__ProposedActionNotActive","inputs":[]},{"type":"error","name":"Powers__UnexpectedActionState","inputs":[]},{"type":"error","name":"Powers__UriTooLong","inputs":[]},{"type":"error","name":"Powers__VoteWithPublicRoleDisallowed","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x61020060408190526009805461ffff60a01b1916600160a01b1790556152da38819003908190833981016040819052610037916103ee565b8561005b60408051808201909152600681526576302e362e3160d01b602082015290565b610065825f61021e565b6101205261007481600161021e565b61014052815160208084019190912060e052815190820120610100524660a05261010060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05285515f0361012a57604051634acb0e6d60e01b815260040160405180910390fd5b835f0361014a57604051631c58c0e160e01b815260040160405180910390fd5b825f0361016a5760405163a19bdd3b60e01b815260040160405180910390fd5b815f0361018a57604051638a2b742f60e01b815260040160405180910390fd5b6101965f336001610250565b60066101a28782610513565b5060076101af8682610513565b506101608490526101808390526101a08290526001600160a01b0381166101e052436101c0526040517f8e09415123fab1f9e22246686c8d24ad9f84c70288cd5fa338213bccd3c5fb769061020b90309060069060079061064c565b60405180910390a15050505050506106e3565b5f602083511015610239576102328361030b565b905061024a565b816102448482610513565b5060ff90505b92915050565b6040516393926d2560e01b8152600480820152602481018490526001600160a01b0383166044820152811515606482015273__$4fdb155c07e189d6709d928ad749b812b4$__906393926d25906084015f6040518083038186803b1580156102b6575f5ffd5b505af41580156102c8573d5f5f3e3d5ffd5b50505050801515826001600160a01b0316847f294507a8f5830b538faef39fbdd28f1164f27c8338a32fc7b47ddf82e4c8d9e460405160405180910390a4505050565b5f5f829050601f8151111561033e578260405163305a27a960e01b8152600401610335919061068b565b60405180910390fd5b8051610349826106c0565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610374575f5ffd5b81516001600160401b0381111561038d5761038d610351565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103bb576103bb610351565b6040528181528382016020018510156103d2575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f5f60c08789031215610403575f5ffd5b86516001600160401b03811115610418575f5ffd5b61042489828a01610365565b602089015190975090506001600160401b03811115610441575f5ffd5b61044d89828a01610365565b604089015160608a015160808b015160a08c01519399509197509550935090506001600160a01b0381168114610481575f5ffd5b809150509295509295509295565b600181811c908216806104a357607f821691505b6020821081036104c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561050e57805f5260205f20601f840160051c810160208510156104ec5750805b601f840160051c820191505b8181101561050b575f81556001016104f8565b50505b505050565b81516001600160401b0381111561052c5761052c610351565b6105408161053a845461048f565b846104c7565b6020601f821160018114610572575f831561055b5750848201515b5f19600385901b1c1916600184901b17845561050b565b5f84815260208120601f198516915b828110156105a15787850151825560209485019460019092019101610581565b50848210156105be57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f81546105d98161048f565b8085526001821680156105f3576001811461060f57610643565b60ff1983166020870152602082151560051b8701019350610643565b845f5260205f205f5b8381101561063a5781546020828a010152600182019150602081019050610618565b87016020019450505b50505092915050565b6001600160a01b03841681526060602082018190525f9061066f908301856105cd565b828103604084015261068181856105cd565b9695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104c1575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051614b596107815f395f8181610bcd015261301701525f6109be01525f8181610e7201526111b501525f8181610aea01526113fa01525f8181610daf0152818161125d015281816119b70152612a2601525f6133d101525f6133a001525f50505f50505f50505f50505f5050614b595ff3fe6080604052600436106103d0575f3560e01c8063685b824a11610203578063a375109811610122578063eac989f8116100b7578063f0f4426011610087578063f2a0bb751161006d578063f2a0bb7514610e42578063f6226e7c14610e61578063fe575a8714610e94575f5ffd5b8063f0f4426014610e04578063f23a6e6114610e23575f5ffd5b8063eac989f814610d6b578063ebef6d9714610d7f578063edf2a59614610d9e578063edfd2e8714610dd1575f5ffd5b8063bc197c81116100f2578063bc197c8114610ced578063cc5812cf14610d0c578063d902bf3a14610d2b578063e88efe3514610d4a575f5ffd5b8063a375109814610c6d578063afe2658b14610c8c578063b367cac014610ca0578063b4324dd314610cbf575f5ffd5b806384b0196e11610198578063918f867411610168578063918f867414610bef57806393d7dae514610c035780639a0435d414610c225780639b642de114610c4e575f5ffd5b806384b0196e14610b575780638973be0414610b7e5780638a4359e014610b9d5780639100808e14610bbc575f5ffd5b80637b3c71d3116101d35780637b3c71d314610aba5780637c1b553914610ad95780638180d29e14610b0c578063831af37914610b2b575f5ffd5b8063685b824a14610a4a5780637258883f14610a6957806375b238fc14610a8857806376ff757714610a9b575f5ffd5b80632d90fe5f116102ef578063455a4396116102845780635532f99b116102545780635532f99b146109ad57806356781388146109e05780635d7c9ce3146109ff578063666ca2d614610a1e575f5ffd5b8063455a4396146108735780634583476b14610892578063519fcfb01461096057806354fd4d501461097f575f5ffd5b80633ca7c02a116102bf5780633ca7c02a146107d95780633fc42d2e146107ed57806341bd157d1461080c578063438596321461082b575f5ffd5b80632d90fe5f1461075f5780632e2d82531461077e578063361262161461079d5780633b19e84a146107bc575f5ffd5b806312561b1a116103655780631d0b19e7116103355780631d0b19e71461069c5780632179e04e146106bb57806324bbb203146107215780632a97fa7714610740575f5ffd5b806312561b1a146105e1578063150b7a021461060e57806316e4cbf914610646578063199093bb1461067d575f5ffd5b806306fdde03116103a057806306fdde03146105005780630d7abeaa146105145780630de6a6011461052a5780631031bdb014610549575f5ffd5b806301ffc9a71461041d5780630398f05f14610451578063040b8c241461047d578063055dbe10146104d2575f5ffd5b36610419577f8e47b87b0ef542cdfa1659c551d88bad38aa7f452d2bbb349ab7530dfec8be8f33604080516001600160a01b0390921682523460208301520160405180910390a1005b5f5ffd5b348015610428575f5ffd5b5061043c61043736600461369a565b610ecb565b60405190151581526020015b60405180910390f35b34801561045c575f5ffd5b5061047061046b3660046136c8565b610f1c565b604051610448919061370d565b348015610488575f5ffd5b506104bb610497366004613730565b61ffff165f90815260036020526040902054600160a01b900465ffffffffffff1690565b60405165ffffffffffff9091168152602001610448565b3480156104dd575f5ffd5b50600954600160a01b900461ffff165b60405161ffff9091168152602001610448565b34801561050b575f5ffd5b50610470610fbe565b34801561051f575f5ffd5b5061052861104a565b005b348015610535575f5ffd5b50610528610544366004613790565b61109a565b348015610554575f5ffd5b506105ba610563366004613730565b61ffff165f81815260036020908152604091829020548251308184015280840194909452825180850384018152606090940190925282519201919091206001600160a01b038216929091600160d01b900460ff1690565b604080516001600160a01b0390941684526020840192909252151590820152606001610448565b3480156105ec575f5ffd5b506106006105fb366004613882565b6114e6565b604051908152602001610448565b348015610619575f5ffd5b5061062d6106283660046138eb565b6116e1565b6040516001600160e01b03199091168152602001610448565b348015610651575f5ffd5b50600954610665906001600160a01b031681565b6040516001600160a01b039091168152602001610448565b348015610688575f5ffd5b50610665610697366004613958565b611718565b3480156106a7575f5ffd5b506105286106b6366004613978565b61177a565b3480156106c6575f5ffd5b506106da6106d53660046136c8565b611791565b6040805165ffffffffffff909816885263ffffffff9687166020890152870194909452918416606086015283166080850152821660a08401521660c082015260e001610448565b34801561072c575f5ffd5b506104ed61073b366004613c46565b611821565b34801561074b575f5ffd5b5061052861075a366004613c7f565b61186f565b34801561076a575f5ffd5b506104706107793660046136c8565b6118e7565b348015610789575f5ffd5b50610600610798366004613c9a565b611906565b3480156107a8575f5ffd5b506104706107b7366004613d1b565b611c68565b3480156107c7575f5ffd5b506008546001600160a01b0316610665565b3480156107e4575f5ffd5b506106005f1981565b3480156107f8575f5ffd5b50610528610807366004613d34565b611cc0565b348015610817575f5ffd5b50610470610826366004613958565b611e0f565b348015610836575f5ffd5b5061043c610845366004613978565b5f8281526002602090815260408083206001600160a01b038516845260070190915290205460ff1692915050565b34801561087e575f5ffd5b5061052861088d366004613d81565b611ecc565b34801561089d575f5ffd5b5061090d6108ac3660046136c8565b5f908152600260208190526040909120805491810154600390910154600160f01b830461ffff169365ffffffffffff80851694600160301b8104821694600160601b8204831694600160901b909204909216926001600160a01b0390921691565b6040805161ffff909816885265ffffffffffff96871660208901529486169487019490945291841660608601529290921660808401526001600160a01b0390911660a083015260c082015260e001610448565b34801561096b575f5ffd5b5061052861097a366004613d1b565b611f27565b34801561098a575f5ffd5b5060408051808201909152600681526576302e362e3160d01b6020820152610470565b3480156109b8575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b3480156109eb575f5ffd5b506105286109fa366004613dad565b611fc2565b348015610a0a575f5ffd5b50610528610a19366004613df9565b611fdc565b348015610a29575f5ffd5b50610a3d610a383660046136c8565b6120ad565b6040516104489190613ead565b348015610a55575f5ffd5b50610528610a64366004613978565b6121f6565b348015610a74575f5ffd5b50610528610a83366004613c7f565b612243565b348015610a93575f5ffd5b506106005f81565b348015610aa6575f5ffd5b50610528610ab5366004613ed3565b612269565b348015610ac5575f5ffd5b50610528610ad4366004613f3e565b61234b565b348015610ae4575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610b17575f5ffd5b50610470610b263660046136c8565b612392565b348015610b36575f5ffd5b50610b4a610b45366004613730565b612442565b6040516104489190614043565b348015610b62575f5ffd5b50610b6b61254b565b6040516104489796959493929190614052565b348015610b89575f5ffd5b50610528610b983660046141b4565b61258d565b348015610ba8575f5ffd5b50610600610bb7366004614278565b61259f565b348015610bc7575f5ffd5b506106657f000000000000000000000000000000000000000000000000000000000000000081565b348015610bfa575f5ffd5b50610600606481565b348015610c0e575f5ffd5b5061043c610c1d3660046142a0565b6125fd565b348015610c2d575f5ffd5b50610c41610c3c366004613d1b565b61263f565b6040516104489190614308565b348015610c59575f5ffd5b50610528610c6836600461431a565b6126ff565b348015610c78575f5ffd5b50610528610c8736600461434b565b612713565b348015610c97575f5ffd5b50600a54610600565b348015610cab575f5ffd5b50610528610cba366004613730565b6127bf565b348015610cca575f5ffd5b50610600610cd93660046136c8565b5f9081526004602052604090206001015490565b348015610cf8575f5ffd5b5061062d610d0736600461437c565b612866565b348015610d17575f5ffd5b506104bb610d26366004614428565b6128a0565b348015610d36575f5ffd5b50610470610d453660046136c8565b612918565b348015610d55575f5ffd5b506009546104ed90600160a01b900461ffff1681565b348015610d76575f5ffd5b50610470612937565b348015610d8a575f5ffd5b50610600610d99366004613c9a565b612944565b348015610da9575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610ddc575f5ffd5b50610600610deb366004613730565b61ffff165f908152600360208190526040909120015490565b348015610e0f575f5ffd5b50610528610e1e366004613c7f565b612d71565b348015610e2e575f5ffd5b5061062d610e3d366004614444565b612dc2565b348015610e4d575f5ffd5b50610470610e5c3660046136c8565b612dfb565b348015610e6c575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610e9f575f5ffd5b5061043c610eae366004613c7f565b6001600160a01b03165f9081526005602052604090205460ff1690565b5f6001600160e01b03198216630a85bd0160e11b1480610efb57506001600160e01b03198216630271189760e51b145b80610f1657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f818152600460205260409020600201805460609190610f3b906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610f67906144ba565b8015610fb25780601f10610f8957610100808354040283529160200191610fb2565b820191905f5260205f20905b815481529060010190602001808311610f9557829003601f168201915b50505050509050919050565b60068054610fcb906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff7906144ba565b80156110425780601f1061101957610100808354040283529160200191611042565b820191905f5260205f20905b81548152906001019060200180831161102557829003601f168201915b505050505081565b611052612e1a565b61109833604080515f8082526020820190925290611092565b604080518082019091526060808252602082015281526020019060019003908161106b5790505b50612e4b565b565b61ffff88165f9081526003602052604090208054600160d01b900460ff166110d557604051632e53afcd60e01b815260040160405180910390fd5b80546001600160a01b031633146110ff57604051635574892960e11b815260040160405180910390fd5b5f8881526002602052604090208054600160301b900465ffffffffffff16158061113857508054600160901b900465ffffffffffff1615155b15611156576040516301dd1d1560e71b815260040160405180910390fd5b8054600160601b900465ffffffffffff16156111855760405163a517239560e01b815260040160405180910390fd5b8685811415806111955750808414155b156111b35760405163dbf15fa560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008111156111f45760405163d0b6a17960e01b815260040160405180910390fd5b815471ffffffffffff0000000000000000000000001916600160601b4365ffffffffffff1690810291909117835583547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b9091021783555f5b81811015611491577f000000000000000000000000000000000000000000000000000000000000000086868381811061128e5761128e6144f2565b90506020028101906112a09190614506565b905011156112c157604051631c3bc5e360e31b815260040160405180910390fd5b6112eb8a8a838181106112d6576112d66144f2565b9050602002016020810190610eae9190613c7f565b15611309576040516334d52f6b60e01b815260040160405180910390fd5b5f5f8b8b8481811061131d5761131d6144f2565b90506020020160208101906113329190613c7f565b6001600160a01b03168a8a8581811061134d5761134d6144f2565b90506020020135898986818110611366576113666144f2565b90506020028101906113789190614506565b604051611386929190614548565b5f6040518083038185875af1925050503d805f81146113c0576040519150601f19603f3d011682016040523d82523d5f602084013e6113c5565b606091505b5091509150816113f8578051156113df5780518082602001fd5b604051631d8fb90d60e21b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000815111611446576005850180546001810182555f91825260209091200161144082826145a2565b50611487565b604080515f602082015260058701910160408051601f1981840301815291905281546001810183555f92835260209092209091019061148590826145a2565b505b5050600101611253565b50898b61ffff167f6f483abfdcf4f122955fd235993c09897d9190ed80964fe5cb76daac8a7a8b878b8b8b8b8b8b6040516114d196959493929190614718565b60405180910390a35050505050505050505050565b61ffff84165f9081526003602052604081208054600160d01b900460ff1661152157604051632e53afcd60e01b815260040160405180910390fd5b604051630b704dbd60e11b81525f9073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611560908a908a908a908a906004016147c7565b602060405180830381865af415801561157b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159f91906147f5565b5f81815260026020819052604090912090810154919250906001600160a01b0316336001600160a01b0316146115e857604051637365858560e01b815260040160405180910390fd5b805465ffffffffffff1615801561160d57508054600160301b900465ffffffffffff16155b1561162b5760405163f661f4bf60e01b815260040160405180910390fd5b8054600160601b900465ffffffffffff1615158061165857508054600160901b900465ffffffffffff1615155b156116765760405163b831530960e01b815260040160405180910390fd5b80547fffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff16600160901b4365ffffffffffff160217815560405182907f8eb4cfeba12ece86fc1590773502e55423b37db556543430337376b30d27c42b905f90a2509695505050505050565b600b545f9060ff1661170657604051630889b5b960e31b815260040160405180910390fd5b50630a85bd0160e11b95945050505050565b5f828152600460205260408120600181015483106117495760405163472e61bd60e01b815260040160405180910390fd5b80600101838154811061175e5761175e6144f2565b5f918252602090912001546001600160a01b0316949350505050565b611782612f03565b61178d82825f612f23565b5050565b5f81815260026020526040812080546001820154839283928392839283928392600160c01b90910465ffffffffffff169063ffffffff166117d28183614820565b60019390930154919b909a5065ffffffffffff909216985063ffffffff640100000000820481169850600160401b820481169750600160601b820481169650600160801b909104169350915050565b5f61182a612f03565b50600954600160a01b900461ffff166118438183612fde565b60098054600161ffff600160a01b808404821692909201160261ffff60a01b199091161790555b919050565b611877612f03565b6001600160a01b03811661189e57604051636e7e8feb60e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040517f8be32e66bcd4d1783b05affa4e89ba5fc5e37bea009c896d862c795acf9e842b905f90a250565b5f818152600460205260409020600301805460609190610f3b906144ba565b600b545f9060ff1661192b57604051630889b5b960e31b815260040160405180910390fd5b61ffff86165f9081526003602052604090208054600160d01b900460ff1661196657604051632e53afcd60e01b815260040160405180910390fd5b611971335b886125fd565b61198e57604051637079d1b960e11b815260040160405180910390fd5b61199733610eae565b156119b5576040516334d52f6b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008511156119f657604051631c3bc5e360e31b815260040160405180910390fd5b60028101546001820154604051630b704dbd60e11b815263ffffffff831692600160801b900460ff16919073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611a51908d908d908d908d906004016147c7565b602060405180830381865af4158015611a6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9091906147f5565b5f818152600260205260409020805491965090600160f01b900461ffff1615611acc5760405163fc0e49ff60e01b815260040160405180910390fd5b6003850180546001810182555f91825260209091200186905560048101611af48a8c8361483e565b50805461ffff8c16600160f01b027dffffffffffffffffffffffffffffffffffffffffffffffff00000000000090911665ffffffffffff43161717815560ff8316611b3f575f611b41565b435b815465ffffffffffff91909116600160c01b027fffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff90911617815560ff8316611b89575f611b9b565b5f828152600460205260409020600101545b60018201805473ffffffff000000000000000000000000ffffffff1916600160801b63ffffffff9384160263ffffffff191617918616919091179055600281018054336001600160a01b031990911617905560068101611bfb88826145a2565b506003810188905561ffff8b1633877fb5856a9700a7e851456d3a16348b4ae0fbb11b06ac0af8dbe8e8652c57cc4cbd8d8d43611c3e63ffffffff8c16826148f7565b8f8f604051611c529695949392919061490a565b60405180910390a4505050505095945050505050565b600a5460609060ff831610611c905760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff1681548110611ca657611ca66144f2565b905f5260205f2090600202016001018054610f3b906144ba565b611cc8612f03565b60095461ffff600160a01b90910481169082161115611cfa57604051633a8de3a560e11b815260040160405180910390fd5b600a5460ff841610611d1f5760405163e2190a4d60e01b815260040160405180910390fd5b5f600a8460ff1681548110611d3657611d366144f2565b5f9182526020909120600290910201805490915060ff841610611d6c5760405163321decd960e21b815260040160405180910390fd5b81815f018460ff1681548110611d8457611d846144f2565b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055507fbab75fb33733fb786b1bd731a4e31deb8b360f52fdc6e437843f5803cd84141d848484604051611e019392919060ff938416815291909216602082015261ffff91909116604082015260600190565b60405180910390a150505050565b5f82815260026020526040902060050180546060919083908110611e3557611e356144f2565b905f5260205f20018054611e48906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611e74906144ba565b8015611ebf5780601f10611e9657610100808354040283529160200191611ebf565b820191905f5260205f20905b815481529060010190602001808311611ea257829003601f168201915b5050505050905092915050565b611ed4612f03565b6001600160a01b0382165f81815260056020526040808220805460ff191685151590811790915590519092917f921341769c2075d1ae425396063d5ab65ff5006c4bc0bd0821e50ce51fb6012391a35050565b611f2f612f03565b600a5460ff821610611f545760405163e2190a4d60e01b815260040160405180910390fd5b600a8160ff1681548110611f6a57611f6a6144f2565b5f9182526020822060029091020190611f838282613587565b611f90600183015f6135a9565b505060405160ff8216907fdb9bcd47830726db0b83034aa4bc1b92414a20b1790a2f63434fe60bd243d9e0905f90a250565b61178d82338360405180602001604052805f81525061309d565b611fe4612e1a565b600b5460ff1615612008576040516315ea064b60e31b815260040160405180910390fd5b600954600160a01b900461ffff165f5b8251811015612089575f6001600160a01b031683828151811061203d5761203d6144f2565b6020026020010151602001516001600160a01b0316146120815761207a8284838151811061206d5761206d6144f2565b6020026020010151612fde565b8160010191505b600101612018565b506009805461ffff909216600160a01b0261ffff60a01b1990921691909117905550565b5f818152600260205260408120805465ffffffffffff161580156120df57508054600160301b900465ffffffffffff16155b80156120f957508054600160601b900465ffffffffffff16155b801561211357508054600160901b900465ffffffffffff16155b1561212057505f92915050565b8054600160601b900465ffffffffffff161561213f5750600792915050565b8054600160901b900465ffffffffffff161561215e5750600292915050565b8054600160301b900465ffffffffffff161561217d5750600692915050565b600181015481545f916121a79163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff1690504381106121c2575060039392505050565b6121cb84613280565b15806121dd57506121db8461331f565b155b156121ec575060049392505050565b5060059392505050565b6121fe612f03565b6001600160a01b0381165f9081526005602052604090205460ff1615612237576040516334d52f6b60e01b815260040160405180910390fd5b61178d82826001612f23565b61224b612e1a565b604080515f8082526020820190925261226691839190611092565b50565b612271612f03565b81515f03612292576040516333a0807f60e21b815260040160405180910390fd5b60ff825111156122b5576040516350cc0e8d60e01b815260040160405180910390fd5b60ff815111156122d85760405163d315c6bd60e01b815260040160405180910390fd5b5f8381526004602052604090206002016122f283826145a2565b505f83815260046020526040902060030161230d82826145a2565b50827f4c6d3d4a776b1458bbd518e75903a3f27a0c6f4597b10882784aa64769d56c718360405161233e919061370d565b60405180910390a2505050565b61238c84338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061309d92505050565b50505050565b600a81815481106123a1575f80fd5b905f5260205f2090600202015f915090508060010180546123c1906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546123ed906144ba565b80156124385780601f1061240f57610100808354040283529160200191612438565b820191905f5260205f20905b81548152906001019060200180831161241b57829003601f168201915b5050505050905081565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091525061ffff9081165f908152600360209081526040918290208251610120810184526001820154815260029091015463ffffffff808216938301939093526401000000008104831693820193909352600160401b830482166060820152600160601b8304841660808201526e010000000000000000000000000000830490931660a084015260ff600160801b8304811660c08501527101000000000000000000000000000000000083041660e0840152600160901b9091041661010082015290565b5f6060805f5f5f606061255c613399565b6125646133ca565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b612595612e1a565b61178d8282612e4b565b61ffff82165f90815260036020819052604082209081015483106125d65760405163472e61bd60e01b815260040160405180910390fd5b8060030183815481106125eb576125eb6144f2565b905f5260205f20015491505092915050565b61ffff81165f908152600360205260408120600101548161261e85836128a0565b905065ffffffffffff811615158061263657505f1982145b95945050505050565b600a5460609060ff8316106126675760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff168154811061267d5761267d6144f2565b5f9182526020918290206002909102018054604080518285028101850190915281815292830182828015610fb257602002820191905f5260205f20905f905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116126bc575094979650505050505050565b612707612f03565b600761178d82826145a2565b61271b612f03565b600a80546001810182555f919091528151805183926002027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80191612765918391602001906135e0565b506020820151600182019061277a90826145a2565b5050815160208301516040517fb56a1edd5f36655e5ec0dfaaee335db8dce67084b7e03de2f6771824f68d356593506127b492919061494e565b60405180910390a150565b6127c7612f03565b61ffff81165f90815260036020526040812054600160d01b900460ff161515900361280557604051632e53afcd60e01b815260040160405180910390fd5b61ffff81165f8181526003602052604080822080547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169055517ffb1d94dcf467f70febf412166aaa551737afd946ba6a4b4eac970aaf28a7e74f9190a250565b600b545f9060ff1661288b57604051630889b5b960e31b815260040160405180910390fd5b5063bc197c8160e01b98975050505050505050565b5f8181526004602090815260408083206001600160a01b0386168452918290528220548083036128d4575f92505050610f16565b816001016001826128e59190614972565b815481106128f5576128f56144f2565b5f91825260209091200154600160a01b900465ffffffffffff1695945050505050565b5f818152600260205260409020600401805460609190610f3b906144ba565b60078054610fcb906144ba565b600b545f9060ff1661296957604051630889b5b960e31b815260040160405180910390fd5b604051630b704dbd60e11b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a906129a69089908990899089906004016147c7565b602060405180830381865af41580156129c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e591906147f5565b61ffff87165f908152600360205260409020805491925090600160d01b900460ff16612a2457604051632e53afcd60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000851115612a6557604051631c3bc5e360e31b815260040160405180910390fd5b612a6e33610eae565b15612a8c576040516334d52f6b60e01b815260040160405180910390fd5b612a953361196b565b612ab257604051637079d1b960e11b815260040160405180910390fd5b5f8281526002602052604090208054600160301b900465ffffffffffff16151580612aec57508054600160601b900465ffffffffffff1615155b15612b0a5760405163fc0e49ff60e01b815260040160405180910390fd5b8054600160901b900465ffffffffffff1615612b3957604051632ec3fe1560e11b815260040160405180910390fd5b8154604051633881b32960e01b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__91633881b32991612b8b918c918c918c9130918d91600160a01b90910465ffffffffffff1690600401614985565b5f6040518083038186803b158015612ba1575f5ffd5b505af4158015612bb3573d5f5f3e3d5ffd5b50508254600160f01b900461ffff165f039150612be69050576003820180546001810182555f9182526020909120018390555b600281018054336001600160a01b031990911617905580547dffffffffffffffffffffffffffffffffffff000000000000ffffffffffff16600160301b4365ffffffffffff16027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160f01b61ffff8a160217815560048101612c6b87898361483e565b5060068101612c7a85826145a2565b506003810185905581546040516326a8b78760e11b81525f916001600160a01b031690634d516f0e90612cb99033908d908d908d908d906004016149d1565b6020604051808303815f875af1158015612cd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cf99190614a0f565b905080612d195760405163382654b960e21b815260040160405180910390fd5b61ffff8916336001600160a01b03167f98e1e52af9c2155b4c2b4844cdccf64c85cb13dd804231d177ef6fea4325d4058a8a8a8a604051612d5d9493929190614a2a565b60405180910390a350505095945050505050565b612d79612f03565b6001600160a01b038116612da057604051636e7e8feb60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f9060ff16612de757604051630889b5b960e31b815260040160405180910390fd5b5063f23a6e6160e01b5b9695505050505050565b5f818152600260205260409020600601805460609190610f3b906144ba565b612e24335f6128a0565b65ffffffffffff165f0361109857604051630eaa87a560e21b815260040160405180910390fd5b336001600160a01b03831614612e7257612e665f335f612f23565b612e725f836001612f23565b805115612ef2575f5b8151811015612ef057600a828281518110612e9857612e986144f2565b60209081029190910181015182546001810184555f9384529282902081518051929460020290910192612ed0928492909101906135e0565b5060208201516001820190612ee590826145a2565b505050600101612e7b565b505b5050600b805460ff19166001179055565b3330146110985760405163e890ccbf60e01b815260040160405180910390fd5b6040516393926d2560e01b8152600480820152602481018490526001600160a01b0383166044820152811515606482015273__$4fdb155c07e189d6709d928ad749b812b4$__906393926d25906084015f6040518083038186803b158015612f89575f5ffd5b505af4158015612f9b573d5f5f3e3d5ffd5b50505050801515826001600160a01b0316847f294507a8f5830b538faef39fbdd28f1164f27c8338a32fc7b47ddf82e4c8d9e460405160405180910390a4505050565b60405163b9778ecb60e01b815273__$4fdb155c07e189d6709d928ad749b812b4$__9063b9778ecb9061303f90600390600590879087907f000000000000000000000000000000000000000000000000000000000000000090600401614a60565b5f6040518083038186803b158015613055575f5ffd5b505af4158015613067573d5f5f3e3d5ffd5b505060405161ffff851692507f284812f41d73696d76ff026c35ebc1a8e8bf24544551c55dd0877334dca88a5691505f90a25050565b5f848152600260205260409020805465ffffffffffff1615806130cf57508054600160601b900465ffffffffffff1615155b806130e957508054600160901b900465ffffffffffff1615155b8061310357508054600160301b900465ffffffffffff1615155b8061313d57506001810154815443916131339163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff16105b1561315b576040516322024acd60e21b815260040160405180910390fd5b8054600160f01b900461ffff1661317285826125fd565b61318f57604051637079d1b960e11b815260040160405180910390fd5b5f61319982612442565b5190505f1981148015906131cd57508254600160c01b900465ffffffffffff166131c387836128a0565b65ffffffffffff16115b156131eb5760405163347f49ed60e11b815260040160405180910390fd5b6001600160a01b0386165f90815260078401602052604090205460ff16156132265760405163c9e3c8d960e01b815260040160405180910390fd5b6132318787876133f7565b8460ff1687876001600160a01b03167f5be2678cab71c7d94235767eb1df3c57673f19e805cdc0edbd2e74854ae9f0f98760405161326f919061370d565b60405180910390a450505050505050565b5f818152600260205260408120805482906132a590600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff161580612636575060018301546064906132f29063ffffffff600160601b8204811691600160401b900416614af0565b63ffffffff166133029190614b0c565b60c08301516133149060ff1683614b0c565b111595945050505050565b5f8181526002602052604081208054829061334490600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff1615806126365750600183015461338790606490600160401b900463ffffffff16614b0c565b60e08301516133149060ff1683614b0c565b60606133c57f00000000000000000000000000000000000000000000000000000000000000005f61347a565b905090565b60606133c57f0000000000000000000000000000000000000000000000000000000000000000600161347a565b604051630499d27d60e11b815260026004820152602481018490526001600160a01b038316604482015260ff8216606482015273__$4fdb155c07e189d6709d928ad749b812b4$__90630933a4fa906084015f6040518083038186803b15801561345f575f5ffd5b505af4158015613471573d5f5f3e3d5ffd5b50505050505050565b606060ff83146134945761348d83613523565b9050610f16565b8180546134a0906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546134cc906144ba565b80156135175780601f106134ee57610100808354040283529160200191613517565b820191905f5260205f20905b8154815290600101906020018083116134fa57829003601f168201915b50505050509050610f16565b60605f61352f83613560565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610f1657604051632cd44ac360e21b815260040160405180910390fd5b5080545f8255600f0160109004905f5260205f20908101906122669190613686565b5080546135b5906144ba565b5f825580601f106135c4575050565b601f0160209004905f5260205f20908101906122669190613686565b828054828255905f5260205f2090600f01601090048101928215613676579160200282015f5b8382111561364657835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613606565b80156136745782816101000a81549061ffff0219169055600201602081600101049283019260010302613646565b505b50613682929150613686565b5090565b5b80821115613682575f8155600101613687565b5f602082840312156136aa575f5ffd5b81356001600160e01b0319811681146136c1575f5ffd5b9392505050565b5f602082840312156136d8575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6136c160208301846136df565b803561ffff8116811461186a575f5ffd5b5f60208284031215613740575f5ffd5b6136c18261371f565b5f5f83601f840112613759575f5ffd5b5081356001600160401b0381111561376f575f5ffd5b6020830191508360208260051b8501011115613789575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156137a7575f5ffd5b6137b08961371f565b97506020890135965060408901356001600160401b038111156137d1575f5ffd5b6137dd8b828c01613749565b90975095505060608901356001600160401b038111156137fb575f5ffd5b6138078b828c01613749565b90955093505060808901356001600160401b03811115613825575f5ffd5b6138318b828c01613749565b999c989b5096995094979396929594505050565b5f5f83601f840112613855575f5ffd5b5081356001600160401b0381111561386b575f5ffd5b602083019150836020828501011115613789575f5ffd5b5f5f5f5f60608587031215613895575f5ffd5b61389e8561371f565b935060208501356001600160401b038111156138b8575f5ffd5b6138c487828801613845565b9598909750949560400135949350505050565b6001600160a01b0381168114612266575f5ffd5b5f5f5f5f5f608086880312156138ff575f5ffd5b853561390a816138d7565b9450602086013561391a816138d7565b93506040860135925060608601356001600160401b0381111561393b575f5ffd5b61394788828901613845565b969995985093965092949392505050565b5f5f60408385031215613969575f5ffd5b50508035926020909101359150565b5f5f60408385031215613989575f5ffd5b82359150602083013561399b816138d7565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b03811182821017156139dd576139dd6139a6565b60405290565b604051608081016001600160401b03811182821017156139dd576139dd6139a6565b604080519081016001600160401b03811182821017156139dd576139dd6139a6565b604051601f8201601f191681016001600160401b0381118282101715613a4f57613a4f6139a6565b604052919050565b5f5f6001600160401b03841115613a7057613a706139a6565b50601f8301601f1916602001613a8581613a27565b915050828152838383011115613a99575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112613abe575f5ffd5b6136c183833560208501613a57565b803563ffffffff8116811461186a575f5ffd5b803560ff8116811461186a575f5ffd5b5f6101208284031215613b01575f5ffd5b613b096139ba565b823581529050613b1b60208301613acd565b6020820152613b2c60408301613acd565b6040820152613b3d60608301613acd565b6060820152613b4e6080830161371f565b6080820152613b5f60a0830161371f565b60a0820152613b7060c08301613ae0565b60c0820152613b8160e08301613ae0565b60e0820152613b936101008301613acd565b61010082015292915050565b5f6101808284031215613bb0575f5ffd5b613bb86139e3565b905081356001600160401b03811115613bcf575f5ffd5b613bdb84828501613aaf565b8252506020820135613bec816138d7565b602082015260408201356001600160401b03811115613c09575f5ffd5b8201601f81018413613c19575f5ffd5b613c2884823560208401613a57565b604083015250613c3b8360608401613af0565b606082015292915050565b5f60208284031215613c56575f5ffd5b81356001600160401b03811115613c6b575f5ffd5b613c7784828501613b9f565b949350505050565b5f60208284031215613c8f575f5ffd5b81356136c1816138d7565b5f5f5f5f5f60808688031215613cae575f5ffd5b613cb78661371f565b945060208601356001600160401b03811115613cd1575f5ffd5b613cdd88828901613845565b9095509350506040860135915060608601356001600160401b03811115613d02575f5ffd5b613d0e88828901613aaf565b9150509295509295909350565b5f60208284031215613d2b575f5ffd5b6136c182613ae0565b5f5f5f60608486031215613d46575f5ffd5b613d4f84613ae0565b9250613d5d60208501613ae0565b9150613d6b6040850161371f565b90509250925092565b8015158114612266575f5ffd5b5f5f60408385031215613d92575f5ffd5b8235613d9d816138d7565b9150602083013561399b81613d74565b5f5f60408385031215613dbe575f5ffd5b82359150613dce60208401613ae0565b90509250929050565b5f6001600160401b03821115613def57613def6139a6565b5060051b60200190565b5f60208284031215613e09575f5ffd5b81356001600160401b03811115613e1e575f5ffd5b8201601f81018413613e2e575f5ffd5b8035613e41613e3c82613dd7565b613a27565b8082825260208201915060208360051b850101925086831115613e62575f5ffd5b602084015b83811015613ea25780356001600160401b03811115613e84575f5ffd5b613e9389602083890101613b9f565b84525060209283019201613e67565b509695505050505050565b6020810160088310613ecd57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f60608486031215613ee5575f5ffd5b8335925060208401356001600160401b03811115613f01575f5ffd5b613f0d86828701613aaf565b92505060408401356001600160401b03811115613f28575f5ffd5b613f3486828701613aaf565b9150509250925092565b5f5f5f5f60608587031215613f51575f5ffd5b84359350613f6160208601613ae0565b925060408501356001600160401b03811115613f7b575f5ffd5b613f8787828801613845565b95989497509550505050565b8051825263ffffffff602082015116602083015263ffffffff60408201511660408301526060810151613fce606084018263ffffffff169052565b506080810151613fe4608084018261ffff169052565b5060a0810151613ffa60a084018261ffff169052565b5060c081015161400f60c084018260ff169052565b5060e081015161402460e084018260ff169052565b5061010081015161403e61010084018263ffffffff169052565b505050565b6101208101610f168284613f93565b60ff60f81b8816815260e060208201525f61407060e08301896136df565b828103604084015261408281896136df565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156140d75783518352602093840193909201916001016140b9565b50909b9a5050505050505050505050565b5f604082840312156140f8575f5ffd5b614100613a05565b905081356001600160401b03811115614117575f5ffd5b8201601f81018413614127575f5ffd5b8035614135613e3c82613dd7565b8082825260208201915060208360051b850101925086831115614156575f5ffd5b6020840193505b8284101561417f5761416e8461371f565b82526020938401939091019061415d565b845250505060208201356001600160401b0381111561419c575f5ffd5b6141a884828501613aaf565b60208301525092915050565b5f5f604083850312156141c5575f5ffd5b82356141d0816138d7565b915060208301356001600160401b038111156141ea575f5ffd5b8301601f810185136141fa575f5ffd5b8035614208613e3c82613dd7565b8082825260208201915060208360051b850101925087831115614229575f5ffd5b602084015b838110156142695780356001600160401b0381111561424b575f5ffd5b61425a8a6020838901016140e8565b8452506020928301920161422e565b50809450505050509250929050565b5f5f60408385031215614289575f5ffd5b6142928361371f565b946020939093013593505050565b5f5f604083850312156142b1575f5ffd5b82356142bc816138d7565b9150613dce6020840161371f565b5f8151808452602084019350602083015f5b828110156142fe57815161ffff168652602095860195909101906001016142dc565b5093949350505050565b602081525f6136c160208301846142ca565b5f6020828403121561432a575f5ffd5b81356001600160401b0381111561433f575f5ffd5b613c7784828501613aaf565b5f6020828403121561435b575f5ffd5b81356001600160401b03811115614370575f5ffd5b613c77848285016140e8565b5f5f5f5f5f5f5f5f60a0898b031215614393575f5ffd5b883561439e816138d7565b975060208901356143ae816138d7565b965060408901356001600160401b038111156143c8575f5ffd5b6143d48b828c01613749565b90975095505060608901356001600160401b038111156143f2575f5ffd5b6143fe8b828c01613749565b90955093505060808901356001600160401b0381111561441c575f5ffd5b6138318b828c01613845565b5f5f60408385031215614439575f5ffd5b8235614292816138d7565b5f5f5f5f5f5f60a08789031215614459575f5ffd5b8635614464816138d7565b95506020870135614474816138d7565b9450604087013593506060870135925060808701356001600160401b0381111561449c575f5ffd5b6144a889828a01613845565b979a9699509497509295939492505050565b600181811c908216806144ce57607f821691505b6020821081036144ec57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e1984360301811261451b575f5ffd5b8301803591506001600160401b03821115614534575f5ffd5b602001915036819003821315613789575f5ffd5b818382375f9101908152919050565b601f82111561403e57805f5260205f20601f840160051c8101602085101561457c5750805b601f840160051c820191505b8181101561459b575f8155600101614588565b5050505050565b81516001600160401b038111156145bb576145bb6139a6565b6145cf816145c984546144ba565b84614557565b6020601f821160018114614601575f83156145ea5750848201515b5f19600385901b1c1916600184901b17845561459b565b5f84815260208120601f198516915b828110156146305787850151825560209485019460019092019101614610565b508482101561464d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208501945060208460051b820101835f5b8681101561470c57838303601f19018852813536879003601e190181126146c0575f5ffd5b86016020810190356001600160401b038111156146db575f5ffd5b8036038213156146e9575f5ffd5b6146f485828461465c565b60209a8b019a9095509390930192505060010161469b565b50909695505050505050565b606080825281018690525f8760808301825b8981101561475a57823561473d816138d7565b6001600160a01b031682526020928301929091019060010161472a565b5083810360208501528681527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871115614792575f5ffd5b8660051b91508188602083013701828103602090810160408501526147ba9082018587614684565b9998505050505050505050565b61ffff85168152606060208201525f6147e460608301858761465c565b905082604083015295945050505050565b5f60208284031215614805575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff8181168382160190811115610f1657610f1661480c565b6001600160401b03831115614855576148556139a6565b6148698361486383546144ba565b83614557565b5f601f84116001811461489a575f85156148835750838201355b5f19600387901b1c1916600186901b17835561459b565b5f83815260208120601f198716915b828110156148c957868501358255602094850194600190920191016148a9565b50868210156148e5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610f1657610f1661480c565b60c081525f60c082015260e060208201525f61492a60e08301888a61465c565b86604084015285606084015284608084015282810360a08401526147ba81856136df565b604081525f61496060408301856142ca565b828103602084015261263681856136df565b81810381811115610f1657610f1661480c565b61ffff8716815260a060208201525f6149a260a08301878961465c565b6001600160a01b0395909516604083015250606081019290925265ffffffffffff166080909101529392505050565b6001600160a01b038616815261ffff85166020820152608060408201525f6149fd60808301858761465c565b90508260608301529695505050505050565b5f60208284031215614a1f575f5ffd5b81516136c181613d74565b606081525f614a3d60608301868861465c565b8460208401528281036040840152614a5581856136df565b979650505050505050565b85815284602082015261ffff8416604082015260a060608201525f835161018060a0840152614a936102208401826136df565b90506001600160a01b0360208601511660c08401526040850151609f198483030160e0850152614ac382826136df565b9150506060850151614ad9610100850182613f93565b506001600160a01b03841660808401529050612df1565b63ffffffff8181168382160190811115610f1657610f1661480c565b8082028115828204841417610f1657610f1661480c56fea264697066735822122036eb6099fc7e7a7bc0ddee4c21832b779342965c8ca756027b978896cdba902864736f6c634300081e0033","sourceMap":"3230:37119:113:-:0;;;;;5858:32;;;-1:-1:-1;;;;5858:32:113;-1:-1:-1;;;5858:32:113;;;7816:1095;;;;;;;;3230:37119;7816:1095;;;;;;;;;;:::i;:::-;8108:5;8115:9;33361:15;;;;;;;;;;;;-1:-1:-1;;;33361:15:113;;;;;33296:87;8115:9;3501:45:81;:4;3532:13;3501:30;:45::i;:::-;3493:53;;3567:51;:7;3601:16;3567:33;:51::i;:::-;3556:62;;3642:22;;;;;;;;;;3628:36;;3691:25;;;;;;3674:42;;3744:13;3727:30;;3792:23;4326:11;;4339:14;;4304:80;;;2079:95;4304:80;;;5954:25:187;5995:18;;;5988:34;;;;6038:18;;;6031:34;4355:13:81;6081:18:187;;;6074:34;4378:4:81;6124:19:187;;;6117:61;4268:7:81;;5926:19:187;;4304:80:81;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;;3792:23;3767:48;;-1:-1:-1;;3847:4:81;3825:27;;8140:19:113;;8163:1:::1;8140:24:::0;8136:58:::1;;8173:21;;-1:-1:-1::0;;;8173:21:113::1;;;;;;;;;;;8136:58;8208:18;8230:1;8208:23:::0;8204:70:::1;;8240:34;;-1:-1:-1::0;;;8240:34:113::1;;;;;;;;;;;8204:70;8288:20;8312:1;8288:25:::0;8284:75:::1;;8322:37;;-1:-1:-1::0;;;8322:37:113::1;;;;;;;;;;;8284:75;8373:20;8397:1;8373:25:::0;8369:74:::1;;8407:36;;-1:-1:-1::0;;;8407:36:113::1;;;;;;;;;;;8369:74;8454:40;4235:17;735:10:69::0;8489:4:113::1;8454:8;:40::i;:::-;8572:4;:12;8579:5:::0;8572:4;:12:::1;:::i;:::-;-1:-1:-1::0;8594:3:113::1;:10;8600:4:::0;8594:3;:10:::1;:::i;:::-;-1:-1:-1::0;8614:40:113::1;::::0;;;8664:45:::1;::::0;;;8719:44:::1;::::0;;;-1:-1:-1;;;;;8773:35:113;::::1;;::::0;8831:12:::1;8818:25;::::0;8859:45:::1;::::0;::::1;::::0;::::1;::::0;8887:4:::1;::::0;8894::::1;::::0;8900:3:::1;::::0;8859:45:::1;:::i;:::-;;;;;;;;7816:1095:::0;;;;;;3230:37119;;2893:342:76;2989:11;3038:4;3022:5;3016:19;:26;3012:217;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3012:217;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1390:66:76;;-1:-1:-1;3012:217:76;2893:342;;;;:::o;27253:192:113:-;27336:55;;-1:-1:-1;;;27336:55:113;;27360:5;27336:55;;;6467:25:187;6508:18;;;6501:34;;;-1:-1:-1;;;;;6571:32:187;;6551:18;;;6544:60;6647:14;;6640:22;6620:18;;;6613:50;27336:15:113;;:23;;6439:19:187;;27336:55:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27431:6;27406:32;;27422:7;-1:-1:-1;;;;;27406:32:113;27414:6;27406:32;;;;;;;;;;27253:192;;;:::o;1708:288:76:-;1773:11;1796:17;1822:3;1796:30;;1854:4;1840;:11;:18;1836:74;;;1895:3;1881:18;;-1:-1:-1;;;1881:18:76;;;;;;;;:::i;:::-;;;;;;;;1836:74;1976:11;;1959:13;1976:4;1959:13;:::i;:::-;1951:36;;1708:288;-1:-1:-1;;;1708:288:76:o;14:127:187:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:187;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:187;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:187;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:187;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:187:o;874:1068::-;1009:6;1017;1025;1033;1041;1049;1102:3;1090:9;1081:7;1077:23;1073:33;1070:53;;;1119:1;1116;1109:12;1070:53;1146:16;;-1:-1:-1;;;;;1174:30:187;;1171:50;;;1217:1;1214;1207:12;1171:50;1240:61;1293:7;1284:6;1273:9;1269:22;1240:61;:::i;:::-;1347:2;1332:18;;1326:25;1230:71;;-1:-1:-1;1326:25:187;-1:-1:-1;;;;;;1363:32:187;;1360:52;;;1408:1;1405;1398:12;1360:52;1431:63;1486:7;1475:8;1464:9;1460:24;1431:63;:::i;:::-;1556:2;1541:18;;1535:25;1650:2;1635:18;;1629:25;1746:3;1731:19;;1725:26;1822:3;1807:19;;1801:26;1421:73;;-1:-1:-1;1535:25:187;;-1:-1:-1;1629:25:187;-1:-1:-1;1725:26:187;-1:-1:-1;1801:26:187;-1:-1:-1;;;;;;1858:33:187;;1846:46;;1836:74;;1906:1;1903;1896:12;1836:74;1929:7;1919:17;;;874:1068;;;;;;;;:::o;1947:380::-;2026:1;2022:12;;;;2069;;;2090:61;;2144:4;2136:6;2132:17;2122:27;;2090:61;2197:2;2189:6;2186:14;2166:18;2163:38;2160:161;;2243:10;2238:3;2234:20;2231:1;2224:31;2278:4;2275:1;2268:15;2306:4;2303:1;2296:15;2160:161;;1947:380;;;:::o;2458:518::-;2560:2;2555:3;2552:11;2549:421;;;2596:5;2593:1;2586:16;2640:4;2637:1;2627:18;2710:2;2698:10;2694:19;2691:1;2687:27;2681:4;2677:38;2746:4;2734:10;2731:20;2728:47;;;-1:-1:-1;2769:4:187;2728:47;2824:2;2819:3;2815:12;2812:1;2808:20;2802:4;2798:31;2788:41;;2879:81;2897:2;2890:5;2887:13;2879:81;;;2956:1;2942:16;;2923:1;2912:13;2879:81;;;2883:3;;2549:421;2458:518;;;:::o;3152:1299::-;3272:10;;-1:-1:-1;;;;;3294:30:187;;3291:56;;;3327:18;;:::i;:::-;3356:97;3446:6;3406:38;3438:4;3432:11;3406:38;:::i;:::-;3400:4;3356:97;:::i;:::-;3502:4;3533:2;3522:14;;3550:1;3545:649;;;;4238:1;4255:6;4252:89;;;-1:-1:-1;4307:19:187;;;4301:26;4252:89;-1:-1:-1;;3109:1:187;3105:11;;;3101:24;3097:29;3087:40;3133:1;3129:11;;;3084:57;4354:81;;3515:930;;3545:649;2405:1;2398:14;;;2442:4;2429:18;;-1:-1:-1;;3581:20:187;;;3699:222;3713:7;3710:1;3707:14;3699:222;;;3795:19;;;3789:26;3774:42;;3902:4;3887:20;;;;3855:1;3843:14;;;;3729:12;3699:222;;;3703:3;3949:6;3940:7;3937:19;3934:201;;;4010:19;;;4004:26;-1:-1:-1;;4093:1:187;4089:14;;;4105:3;4085:24;4081:37;4077:42;4062:58;4047:74;;3934:201;-1:-1:-1;;;;4181:1:187;4165:14;;;4161:22;4148:36;;-1:-1:-1;3152:1299:187:o;4456:739::-;4506:3;4547:5;4541:12;4576:36;4602:9;4576:36;:::i;:::-;4621:19;;;4671:1;4656:17;;4682:150;;;;4846:1;4841:348;;;;4649:540;;4682:150;4745:3;4741:8;4730:9;4726:24;4719:4;4714:3;4710:14;4703:48;4817:4;4805:6;4798:14;4791:22;4788:1;4784:30;4779:3;4775:40;4771:51;4764:58;;4682:150;;4841:348;4872:5;4869:1;4862:16;4919:4;4916:1;4906:18;4946:1;4960:177;4974:6;4971:1;4968:13;4960:177;;;5071:7;5065:14;5058:4;5054:1;5049:3;5045:11;5041:22;5034:46;5121:1;5112:7;5108:15;5097:26;;4996:4;4993:1;4989:12;4984:17;;4960:177;;;5161:11;;5174:4;5157:22;;-1:-1:-1;;4649:540:187;;;;4456:739;;;;:::o;5200:490::-;-1:-1:-1;;;;;5419:32:187;;5401:51;;5488:2;5483;5468:18;;5461:30;;;-1:-1:-1;;5514:53:187;;5548:18;;5540:6;5514:53;:::i;:::-;5615:9;5607:6;5603:22;5598:2;5587:9;5583:18;5576:50;5643:41;5677:6;5669;5643:41;:::i;:::-;5635:49;5200:490;-1:-1:-1;;;;;;5200:490:187:o;6674:418::-;6823:2;6812:9;6805:21;6786:4;6855:6;6849:13;6898:6;6893:2;6882:9;6878:18;6871:34;6957:6;6952:2;6944:6;6940:15;6935:2;6924:9;6920:18;6914:50;7013:1;7008:2;6999:6;6988:9;6984:22;6980:31;6973:42;7083:2;7076;7072:7;7067:2;7059:6;7055:15;7051:29;7040:9;7036:45;7032:54;7024:62;;;6674:418;;;;:::o;7097:297::-;7215:12;;7262:4;7251:16;;;7245:23;;7215:12;7280:16;;7277:111;;;-1:-1:-1;;7354:4:187;7350:17;;;;7347:1;7343:25;7339:38;7328:50;;7097:297;-1:-1:-1;7097:297:187:o;:::-;3230:37119:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{"src/libraries/Checks.sol":{"Checks":[{"start":7347,"length":20},{"start":8612,"length":20},{"start":12537,"length":20},{"start":13003,"length":20}]},"src/libraries/PowersUtilities.sol":{"PowersUtilities":[{"start":643,"length":20},{"start":14039,"length":20},{"start":14190,"length":20},{"start":15277,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436106103d0575f3560e01c8063685b824a11610203578063a375109811610122578063eac989f8116100b7578063f0f4426011610087578063f2a0bb751161006d578063f2a0bb7514610e42578063f6226e7c14610e61578063fe575a8714610e94575f5ffd5b8063f0f4426014610e04578063f23a6e6114610e23575f5ffd5b8063eac989f814610d6b578063ebef6d9714610d7f578063edf2a59614610d9e578063edfd2e8714610dd1575f5ffd5b8063bc197c81116100f2578063bc197c8114610ced578063cc5812cf14610d0c578063d902bf3a14610d2b578063e88efe3514610d4a575f5ffd5b8063a375109814610c6d578063afe2658b14610c8c578063b367cac014610ca0578063b4324dd314610cbf575f5ffd5b806384b0196e11610198578063918f867411610168578063918f867414610bef57806393d7dae514610c035780639a0435d414610c225780639b642de114610c4e575f5ffd5b806384b0196e14610b575780638973be0414610b7e5780638a4359e014610b9d5780639100808e14610bbc575f5ffd5b80637b3c71d3116101d35780637b3c71d314610aba5780637c1b553914610ad95780638180d29e14610b0c578063831af37914610b2b575f5ffd5b8063685b824a14610a4a5780637258883f14610a6957806375b238fc14610a8857806376ff757714610a9b575f5ffd5b80632d90fe5f116102ef578063455a4396116102845780635532f99b116102545780635532f99b146109ad57806356781388146109e05780635d7c9ce3146109ff578063666ca2d614610a1e575f5ffd5b8063455a4396146108735780634583476b14610892578063519fcfb01461096057806354fd4d501461097f575f5ffd5b80633ca7c02a116102bf5780633ca7c02a146107d95780633fc42d2e146107ed57806341bd157d1461080c578063438596321461082b575f5ffd5b80632d90fe5f1461075f5780632e2d82531461077e578063361262161461079d5780633b19e84a146107bc575f5ffd5b806312561b1a116103655780631d0b19e7116103355780631d0b19e71461069c5780632179e04e146106bb57806324bbb203146107215780632a97fa7714610740575f5ffd5b806312561b1a146105e1578063150b7a021461060e57806316e4cbf914610646578063199093bb1461067d575f5ffd5b806306fdde03116103a057806306fdde03146105005780630d7abeaa146105145780630de6a6011461052a5780631031bdb014610549575f5ffd5b806301ffc9a71461041d5780630398f05f14610451578063040b8c241461047d578063055dbe10146104d2575f5ffd5b36610419577f8e47b87b0ef542cdfa1659c551d88bad38aa7f452d2bbb349ab7530dfec8be8f33604080516001600160a01b0390921682523460208301520160405180910390a1005b5f5ffd5b348015610428575f5ffd5b5061043c61043736600461369a565b610ecb565b60405190151581526020015b60405180910390f35b34801561045c575f5ffd5b5061047061046b3660046136c8565b610f1c565b604051610448919061370d565b348015610488575f5ffd5b506104bb610497366004613730565b61ffff165f90815260036020526040902054600160a01b900465ffffffffffff1690565b60405165ffffffffffff9091168152602001610448565b3480156104dd575f5ffd5b50600954600160a01b900461ffff165b60405161ffff9091168152602001610448565b34801561050b575f5ffd5b50610470610fbe565b34801561051f575f5ffd5b5061052861104a565b005b348015610535575f5ffd5b50610528610544366004613790565b61109a565b348015610554575f5ffd5b506105ba610563366004613730565b61ffff165f81815260036020908152604091829020548251308184015280840194909452825180850384018152606090940190925282519201919091206001600160a01b038216929091600160d01b900460ff1690565b604080516001600160a01b0390941684526020840192909252151590820152606001610448565b3480156105ec575f5ffd5b506106006105fb366004613882565b6114e6565b604051908152602001610448565b348015610619575f5ffd5b5061062d6106283660046138eb565b6116e1565b6040516001600160e01b03199091168152602001610448565b348015610651575f5ffd5b50600954610665906001600160a01b031681565b6040516001600160a01b039091168152602001610448565b348015610688575f5ffd5b50610665610697366004613958565b611718565b3480156106a7575f5ffd5b506105286106b6366004613978565b61177a565b3480156106c6575f5ffd5b506106da6106d53660046136c8565b611791565b6040805165ffffffffffff909816885263ffffffff9687166020890152870194909452918416606086015283166080850152821660a08401521660c082015260e001610448565b34801561072c575f5ffd5b506104ed61073b366004613c46565b611821565b34801561074b575f5ffd5b5061052861075a366004613c7f565b61186f565b34801561076a575f5ffd5b506104706107793660046136c8565b6118e7565b348015610789575f5ffd5b50610600610798366004613c9a565b611906565b3480156107a8575f5ffd5b506104706107b7366004613d1b565b611c68565b3480156107c7575f5ffd5b506008546001600160a01b0316610665565b3480156107e4575f5ffd5b506106005f1981565b3480156107f8575f5ffd5b50610528610807366004613d34565b611cc0565b348015610817575f5ffd5b50610470610826366004613958565b611e0f565b348015610836575f5ffd5b5061043c610845366004613978565b5f8281526002602090815260408083206001600160a01b038516845260070190915290205460ff1692915050565b34801561087e575f5ffd5b5061052861088d366004613d81565b611ecc565b34801561089d575f5ffd5b5061090d6108ac3660046136c8565b5f908152600260208190526040909120805491810154600390910154600160f01b830461ffff169365ffffffffffff80851694600160301b8104821694600160601b8204831694600160901b909204909216926001600160a01b0390921691565b6040805161ffff909816885265ffffffffffff96871660208901529486169487019490945291841660608601529290921660808401526001600160a01b0390911660a083015260c082015260e001610448565b34801561096b575f5ffd5b5061052861097a366004613d1b565b611f27565b34801561098a575f5ffd5b5060408051808201909152600681526576302e362e3160d01b6020820152610470565b3480156109b8575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b3480156109eb575f5ffd5b506105286109fa366004613dad565b611fc2565b348015610a0a575f5ffd5b50610528610a19366004613df9565b611fdc565b348015610a29575f5ffd5b50610a3d610a383660046136c8565b6120ad565b6040516104489190613ead565b348015610a55575f5ffd5b50610528610a64366004613978565b6121f6565b348015610a74575f5ffd5b50610528610a83366004613c7f565b612243565b348015610a93575f5ffd5b506106005f81565b348015610aa6575f5ffd5b50610528610ab5366004613ed3565b612269565b348015610ac5575f5ffd5b50610528610ad4366004613f3e565b61234b565b348015610ae4575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610b17575f5ffd5b50610470610b263660046136c8565b612392565b348015610b36575f5ffd5b50610b4a610b45366004613730565b612442565b6040516104489190614043565b348015610b62575f5ffd5b50610b6b61254b565b6040516104489796959493929190614052565b348015610b89575f5ffd5b50610528610b983660046141b4565b61258d565b348015610ba8575f5ffd5b50610600610bb7366004614278565b61259f565b348015610bc7575f5ffd5b506106657f000000000000000000000000000000000000000000000000000000000000000081565b348015610bfa575f5ffd5b50610600606481565b348015610c0e575f5ffd5b5061043c610c1d3660046142a0565b6125fd565b348015610c2d575f5ffd5b50610c41610c3c366004613d1b565b61263f565b6040516104489190614308565b348015610c59575f5ffd5b50610528610c6836600461431a565b6126ff565b348015610c78575f5ffd5b50610528610c8736600461434b565b612713565b348015610c97575f5ffd5b50600a54610600565b348015610cab575f5ffd5b50610528610cba366004613730565b6127bf565b348015610cca575f5ffd5b50610600610cd93660046136c8565b5f9081526004602052604090206001015490565b348015610cf8575f5ffd5b5061062d610d0736600461437c565b612866565b348015610d17575f5ffd5b506104bb610d26366004614428565b6128a0565b348015610d36575f5ffd5b50610470610d453660046136c8565b612918565b348015610d55575f5ffd5b506009546104ed90600160a01b900461ffff1681565b348015610d76575f5ffd5b50610470612937565b348015610d8a575f5ffd5b50610600610d99366004613c9a565b612944565b348015610da9575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610ddc575f5ffd5b50610600610deb366004613730565b61ffff165f908152600360208190526040909120015490565b348015610e0f575f5ffd5b50610528610e1e366004613c7f565b612d71565b348015610e2e575f5ffd5b5061062d610e3d366004614444565b612dc2565b348015610e4d575f5ffd5b50610470610e5c3660046136c8565b612dfb565b348015610e6c575f5ffd5b506106007f000000000000000000000000000000000000000000000000000000000000000081565b348015610e9f575f5ffd5b5061043c610eae366004613c7f565b6001600160a01b03165f9081526005602052604090205460ff1690565b5f6001600160e01b03198216630a85bd0160e11b1480610efb57506001600160e01b03198216630271189760e51b145b80610f1657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f818152600460205260409020600201805460609190610f3b906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610f67906144ba565b8015610fb25780601f10610f8957610100808354040283529160200191610fb2565b820191905f5260205f20905b815481529060010190602001808311610f9557829003601f168201915b50505050509050919050565b60068054610fcb906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff7906144ba565b80156110425780601f1061101957610100808354040283529160200191611042565b820191905f5260205f20905b81548152906001019060200180831161102557829003601f168201915b505050505081565b611052612e1a565b61109833604080515f8082526020820190925290611092565b604080518082019091526060808252602082015281526020019060019003908161106b5790505b50612e4b565b565b61ffff88165f9081526003602052604090208054600160d01b900460ff166110d557604051632e53afcd60e01b815260040160405180910390fd5b80546001600160a01b031633146110ff57604051635574892960e11b815260040160405180910390fd5b5f8881526002602052604090208054600160301b900465ffffffffffff16158061113857508054600160901b900465ffffffffffff1615155b15611156576040516301dd1d1560e71b815260040160405180910390fd5b8054600160601b900465ffffffffffff16156111855760405163a517239560e01b815260040160405180910390fd5b8685811415806111955750808414155b156111b35760405163dbf15fa560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008111156111f45760405163d0b6a17960e01b815260040160405180910390fd5b815471ffffffffffff0000000000000000000000001916600160601b4365ffffffffffff1690810291909117835583547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b9091021783555f5b81811015611491577f000000000000000000000000000000000000000000000000000000000000000086868381811061128e5761128e6144f2565b90506020028101906112a09190614506565b905011156112c157604051631c3bc5e360e31b815260040160405180910390fd5b6112eb8a8a838181106112d6576112d66144f2565b9050602002016020810190610eae9190613c7f565b15611309576040516334d52f6b60e01b815260040160405180910390fd5b5f5f8b8b8481811061131d5761131d6144f2565b90506020020160208101906113329190613c7f565b6001600160a01b03168a8a8581811061134d5761134d6144f2565b90506020020135898986818110611366576113666144f2565b90506020028101906113789190614506565b604051611386929190614548565b5f6040518083038185875af1925050503d805f81146113c0576040519150601f19603f3d011682016040523d82523d5f602084013e6113c5565b606091505b5091509150816113f8578051156113df5780518082602001fd5b604051631d8fb90d60e21b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000815111611446576005850180546001810182555f91825260209091200161144082826145a2565b50611487565b604080515f602082015260058701910160408051601f1981840301815291905281546001810183555f92835260209092209091019061148590826145a2565b505b5050600101611253565b50898b61ffff167f6f483abfdcf4f122955fd235993c09897d9190ed80964fe5cb76daac8a7a8b878b8b8b8b8b8b6040516114d196959493929190614718565b60405180910390a35050505050505050505050565b61ffff84165f9081526003602052604081208054600160d01b900460ff1661152157604051632e53afcd60e01b815260040160405180910390fd5b604051630b704dbd60e11b81525f9073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611560908a908a908a908a906004016147c7565b602060405180830381865af415801561157b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159f91906147f5565b5f81815260026020819052604090912090810154919250906001600160a01b0316336001600160a01b0316146115e857604051637365858560e01b815260040160405180910390fd5b805465ffffffffffff1615801561160d57508054600160301b900465ffffffffffff16155b1561162b5760405163f661f4bf60e01b815260040160405180910390fd5b8054600160601b900465ffffffffffff1615158061165857508054600160901b900465ffffffffffff1615155b156116765760405163b831530960e01b815260040160405180910390fd5b80547fffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff16600160901b4365ffffffffffff160217815560405182907f8eb4cfeba12ece86fc1590773502e55423b37db556543430337376b30d27c42b905f90a2509695505050505050565b600b545f9060ff1661170657604051630889b5b960e31b815260040160405180910390fd5b50630a85bd0160e11b95945050505050565b5f828152600460205260408120600181015483106117495760405163472e61bd60e01b815260040160405180910390fd5b80600101838154811061175e5761175e6144f2565b5f918252602090912001546001600160a01b0316949350505050565b611782612f03565b61178d82825f612f23565b5050565b5f81815260026020526040812080546001820154839283928392839283928392600160c01b90910465ffffffffffff169063ffffffff166117d28183614820565b60019390930154919b909a5065ffffffffffff909216985063ffffffff640100000000820481169850600160401b820481169750600160601b820481169650600160801b909104169350915050565b5f61182a612f03565b50600954600160a01b900461ffff166118438183612fde565b60098054600161ffff600160a01b808404821692909201160261ffff60a01b199091161790555b919050565b611877612f03565b6001600160a01b03811661189e57604051636e7e8feb60e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040517f8be32e66bcd4d1783b05affa4e89ba5fc5e37bea009c896d862c795acf9e842b905f90a250565b5f818152600460205260409020600301805460609190610f3b906144ba565b600b545f9060ff1661192b57604051630889b5b960e31b815260040160405180910390fd5b61ffff86165f9081526003602052604090208054600160d01b900460ff1661196657604051632e53afcd60e01b815260040160405180910390fd5b611971335b886125fd565b61198e57604051637079d1b960e11b815260040160405180910390fd5b61199733610eae565b156119b5576040516334d52f6b60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008511156119f657604051631c3bc5e360e31b815260040160405180910390fd5b60028101546001820154604051630b704dbd60e11b815263ffffffff831692600160801b900460ff16919073__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a90611a51908d908d908d908d906004016147c7565b602060405180830381865af4158015611a6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9091906147f5565b5f818152600260205260409020805491965090600160f01b900461ffff1615611acc5760405163fc0e49ff60e01b815260040160405180910390fd5b6003850180546001810182555f91825260209091200186905560048101611af48a8c8361483e565b50805461ffff8c16600160f01b027dffffffffffffffffffffffffffffffffffffffffffffffff00000000000090911665ffffffffffff43161717815560ff8316611b3f575f611b41565b435b815465ffffffffffff91909116600160c01b027fffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff90911617815560ff8316611b89575f611b9b565b5f828152600460205260409020600101545b60018201805473ffffffff000000000000000000000000ffffffff1916600160801b63ffffffff9384160263ffffffff191617918616919091179055600281018054336001600160a01b031990911617905560068101611bfb88826145a2565b506003810188905561ffff8b1633877fb5856a9700a7e851456d3a16348b4ae0fbb11b06ac0af8dbe8e8652c57cc4cbd8d8d43611c3e63ffffffff8c16826148f7565b8f8f604051611c529695949392919061490a565b60405180910390a4505050505095945050505050565b600a5460609060ff831610611c905760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff1681548110611ca657611ca66144f2565b905f5260205f2090600202016001018054610f3b906144ba565b611cc8612f03565b60095461ffff600160a01b90910481169082161115611cfa57604051633a8de3a560e11b815260040160405180910390fd5b600a5460ff841610611d1f5760405163e2190a4d60e01b815260040160405180910390fd5b5f600a8460ff1681548110611d3657611d366144f2565b5f9182526020909120600290910201805490915060ff841610611d6c5760405163321decd960e21b815260040160405180910390fd5b81815f018460ff1681548110611d8457611d846144f2565b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055507fbab75fb33733fb786b1bd731a4e31deb8b360f52fdc6e437843f5803cd84141d848484604051611e019392919060ff938416815291909216602082015261ffff91909116604082015260600190565b60405180910390a150505050565b5f82815260026020526040902060050180546060919083908110611e3557611e356144f2565b905f5260205f20018054611e48906144ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611e74906144ba565b8015611ebf5780601f10611e9657610100808354040283529160200191611ebf565b820191905f5260205f20905b815481529060010190602001808311611ea257829003601f168201915b5050505050905092915050565b611ed4612f03565b6001600160a01b0382165f81815260056020526040808220805460ff191685151590811790915590519092917f921341769c2075d1ae425396063d5ab65ff5006c4bc0bd0821e50ce51fb6012391a35050565b611f2f612f03565b600a5460ff821610611f545760405163e2190a4d60e01b815260040160405180910390fd5b600a8160ff1681548110611f6a57611f6a6144f2565b5f9182526020822060029091020190611f838282613587565b611f90600183015f6135a9565b505060405160ff8216907fdb9bcd47830726db0b83034aa4bc1b92414a20b1790a2f63434fe60bd243d9e0905f90a250565b61178d82338360405180602001604052805f81525061309d565b611fe4612e1a565b600b5460ff1615612008576040516315ea064b60e31b815260040160405180910390fd5b600954600160a01b900461ffff165f5b8251811015612089575f6001600160a01b031683828151811061203d5761203d6144f2565b6020026020010151602001516001600160a01b0316146120815761207a8284838151811061206d5761206d6144f2565b6020026020010151612fde565b8160010191505b600101612018565b506009805461ffff909216600160a01b0261ffff60a01b1990921691909117905550565b5f818152600260205260408120805465ffffffffffff161580156120df57508054600160301b900465ffffffffffff16155b80156120f957508054600160601b900465ffffffffffff16155b801561211357508054600160901b900465ffffffffffff16155b1561212057505f92915050565b8054600160601b900465ffffffffffff161561213f5750600792915050565b8054600160901b900465ffffffffffff161561215e5750600292915050565b8054600160301b900465ffffffffffff161561217d5750600692915050565b600181015481545f916121a79163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff1690504381106121c2575060039392505050565b6121cb84613280565b15806121dd57506121db8461331f565b155b156121ec575060049392505050565b5060059392505050565b6121fe612f03565b6001600160a01b0381165f9081526005602052604090205460ff1615612237576040516334d52f6b60e01b815260040160405180910390fd5b61178d82826001612f23565b61224b612e1a565b604080515f8082526020820190925261226691839190611092565b50565b612271612f03565b81515f03612292576040516333a0807f60e21b815260040160405180910390fd5b60ff825111156122b5576040516350cc0e8d60e01b815260040160405180910390fd5b60ff815111156122d85760405163d315c6bd60e01b815260040160405180910390fd5b5f8381526004602052604090206002016122f283826145a2565b505f83815260046020526040902060030161230d82826145a2565b50827f4c6d3d4a776b1458bbd518e75903a3f27a0c6f4597b10882784aa64769d56c718360405161233e919061370d565b60405180910390a2505050565b61238c84338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061309d92505050565b50505050565b600a81815481106123a1575f80fd5b905f5260205f2090600202015f915090508060010180546123c1906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546123ed906144ba565b80156124385780601f1061240f57610100808354040283529160200191612438565b820191905f5260205f20905b81548152906001019060200180831161241b57829003601f168201915b5050505050905081565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091525061ffff9081165f908152600360209081526040918290208251610120810184526001820154815260029091015463ffffffff808216938301939093526401000000008104831693820193909352600160401b830482166060820152600160601b8304841660808201526e010000000000000000000000000000830490931660a084015260ff600160801b8304811660c08501527101000000000000000000000000000000000083041660e0840152600160901b9091041661010082015290565b5f6060805f5f5f606061255c613399565b6125646133ca565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b612595612e1a565b61178d8282612e4b565b61ffff82165f90815260036020819052604082209081015483106125d65760405163472e61bd60e01b815260040160405180910390fd5b8060030183815481106125eb576125eb6144f2565b905f5260205f20015491505092915050565b61ffff81165f908152600360205260408120600101548161261e85836128a0565b905065ffffffffffff811615158061263657505f1982145b95945050505050565b600a5460609060ff8316106126675760405163472e61bd60e01b815260040160405180910390fd5b600a8260ff168154811061267d5761267d6144f2565b5f9182526020918290206002909102018054604080518285028101850190915281815292830182828015610fb257602002820191905f5260205f20905f905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116126bc575094979650505050505050565b612707612f03565b600761178d82826145a2565b61271b612f03565b600a80546001810182555f919091528151805183926002027fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80191612765918391602001906135e0565b506020820151600182019061277a90826145a2565b5050815160208301516040517fb56a1edd5f36655e5ec0dfaaee335db8dce67084b7e03de2f6771824f68d356593506127b492919061494e565b60405180910390a150565b6127c7612f03565b61ffff81165f90815260036020526040812054600160d01b900460ff161515900361280557604051632e53afcd60e01b815260040160405180910390fd5b61ffff81165f8181526003602052604080822080547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169055517ffb1d94dcf467f70febf412166aaa551737afd946ba6a4b4eac970aaf28a7e74f9190a250565b600b545f9060ff1661288b57604051630889b5b960e31b815260040160405180910390fd5b5063bc197c8160e01b98975050505050505050565b5f8181526004602090815260408083206001600160a01b0386168452918290528220548083036128d4575f92505050610f16565b816001016001826128e59190614972565b815481106128f5576128f56144f2565b5f91825260209091200154600160a01b900465ffffffffffff1695945050505050565b5f818152600260205260409020600401805460609190610f3b906144ba565b60078054610fcb906144ba565b600b545f9060ff1661296957604051630889b5b960e31b815260040160405180910390fd5b604051630b704dbd60e11b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__906316e09b7a906129a69089908990899089906004016147c7565b602060405180830381865af41580156129c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e591906147f5565b61ffff87165f908152600360205260409020805491925090600160d01b900460ff16612a2457604051632e53afcd60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000851115612a6557604051631c3bc5e360e31b815260040160405180910390fd5b612a6e33610eae565b15612a8c576040516334d52f6b60e01b815260040160405180910390fd5b612a953361196b565b612ab257604051637079d1b960e11b815260040160405180910390fd5b5f8281526002602052604090208054600160301b900465ffffffffffff16151580612aec57508054600160601b900465ffffffffffff1615155b15612b0a5760405163fc0e49ff60e01b815260040160405180910390fd5b8054600160901b900465ffffffffffff1615612b3957604051632ec3fe1560e11b815260040160405180910390fd5b8154604051633881b32960e01b815273__$b8401669eb6e3c34470049924d5a7c9ef9$__91633881b32991612b8b918c918c918c9130918d91600160a01b90910465ffffffffffff1690600401614985565b5f6040518083038186803b158015612ba1575f5ffd5b505af4158015612bb3573d5f5f3e3d5ffd5b50508254600160f01b900461ffff165f039150612be69050576003820180546001810182555f9182526020909120018390555b600281018054336001600160a01b031990911617905580547dffffffffffffffffffffffffffffffffffff000000000000ffffffffffff16600160301b4365ffffffffffff16027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160f01b61ffff8a160217815560048101612c6b87898361483e565b5060068101612c7a85826145a2565b506003810185905581546040516326a8b78760e11b81525f916001600160a01b031690634d516f0e90612cb99033908d908d908d908d906004016149d1565b6020604051808303815f875af1158015612cd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cf99190614a0f565b905080612d195760405163382654b960e21b815260040160405180910390fd5b61ffff8916336001600160a01b03167f98e1e52af9c2155b4c2b4844cdccf64c85cb13dd804231d177ef6fea4325d4058a8a8a8a604051612d5d9493929190614a2a565b60405180910390a350505095945050505050565b612d79612f03565b6001600160a01b038116612da057604051636e7e8feb60e11b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f9060ff16612de757604051630889b5b960e31b815260040160405180910390fd5b5063f23a6e6160e01b5b9695505050505050565b5f818152600260205260409020600601805460609190610f3b906144ba565b612e24335f6128a0565b65ffffffffffff165f0361109857604051630eaa87a560e21b815260040160405180910390fd5b336001600160a01b03831614612e7257612e665f335f612f23565b612e725f836001612f23565b805115612ef2575f5b8151811015612ef057600a828281518110612e9857612e986144f2565b60209081029190910181015182546001810184555f9384529282902081518051929460020290910192612ed0928492909101906135e0565b5060208201516001820190612ee590826145a2565b505050600101612e7b565b505b5050600b805460ff19166001179055565b3330146110985760405163e890ccbf60e01b815260040160405180910390fd5b6040516393926d2560e01b8152600480820152602481018490526001600160a01b0383166044820152811515606482015273__$4fdb155c07e189d6709d928ad749b812b4$__906393926d25906084015f6040518083038186803b158015612f89575f5ffd5b505af4158015612f9b573d5f5f3e3d5ffd5b50505050801515826001600160a01b0316847f294507a8f5830b538faef39fbdd28f1164f27c8338a32fc7b47ddf82e4c8d9e460405160405180910390a4505050565b60405163b9778ecb60e01b815273__$4fdb155c07e189d6709d928ad749b812b4$__9063b9778ecb9061303f90600390600590879087907f000000000000000000000000000000000000000000000000000000000000000090600401614a60565b5f6040518083038186803b158015613055575f5ffd5b505af4158015613067573d5f5f3e3d5ffd5b505060405161ffff851692507f284812f41d73696d76ff026c35ebc1a8e8bf24544551c55dd0877334dca88a5691505f90a25050565b5f848152600260205260409020805465ffffffffffff1615806130cf57508054600160601b900465ffffffffffff1615155b806130e957508054600160901b900465ffffffffffff1615155b8061310357508054600160301b900465ffffffffffff1615155b8061313d57506001810154815443916131339163ffffffff90911690600160c01b900465ffffffffffff16614820565b65ffffffffffff16105b1561315b576040516322024acd60e21b815260040160405180910390fd5b8054600160f01b900461ffff1661317285826125fd565b61318f57604051637079d1b960e11b815260040160405180910390fd5b5f61319982612442565b5190505f1981148015906131cd57508254600160c01b900465ffffffffffff166131c387836128a0565b65ffffffffffff16115b156131eb5760405163347f49ed60e11b815260040160405180910390fd5b6001600160a01b0386165f90815260078401602052604090205460ff16156132265760405163c9e3c8d960e01b815260040160405180910390fd5b6132318787876133f7565b8460ff1687876001600160a01b03167f5be2678cab71c7d94235767eb1df3c57673f19e805cdc0edbd2e74854ae9f0f98760405161326f919061370d565b60405180910390a450505050505050565b5f818152600260205260408120805482906132a590600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff161580612636575060018301546064906132f29063ffffffff600160601b8204811691600160401b900416614af0565b63ffffffff166133029190614b0c565b60c08301516133149060ff1683614b0c565b111595945050505050565b5f8181526002602052604081208054829061334490600160f01b900461ffff16612442565b600183015460c0820151919250600160801b900463ffffffff169060ff1615806126365750600183015461338790606490600160401b900463ffffffff16614b0c565b60e08301516133149060ff1683614b0c565b60606133c57f00000000000000000000000000000000000000000000000000000000000000005f61347a565b905090565b60606133c57f0000000000000000000000000000000000000000000000000000000000000000600161347a565b604051630499d27d60e11b815260026004820152602481018490526001600160a01b038316604482015260ff8216606482015273__$4fdb155c07e189d6709d928ad749b812b4$__90630933a4fa906084015f6040518083038186803b15801561345f575f5ffd5b505af4158015613471573d5f5f3e3d5ffd5b50505050505050565b606060ff83146134945761348d83613523565b9050610f16565b8180546134a0906144ba565b80601f01602080910402602001604051908101604052809291908181526020018280546134cc906144ba565b80156135175780601f106134ee57610100808354040283529160200191613517565b820191905f5260205f20905b8154815290600101906020018083116134fa57829003601f168201915b50505050509050610f16565b60605f61352f83613560565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610f1657604051632cd44ac360e21b815260040160405180910390fd5b5080545f8255600f0160109004905f5260205f20908101906122669190613686565b5080546135b5906144ba565b5f825580601f106135c4575050565b601f0160209004905f5260205f20908101906122669190613686565b828054828255905f5260205f2090600f01601090048101928215613676579160200282015f5b8382111561364657835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613606565b80156136745782816101000a81549061ffff0219169055600201602081600101049283019260010302613646565b505b50613682929150613686565b5090565b5b80821115613682575f8155600101613687565b5f602082840312156136aa575f5ffd5b81356001600160e01b0319811681146136c1575f5ffd5b9392505050565b5f602082840312156136d8575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6136c160208301846136df565b803561ffff8116811461186a575f5ffd5b5f60208284031215613740575f5ffd5b6136c18261371f565b5f5f83601f840112613759575f5ffd5b5081356001600160401b0381111561376f575f5ffd5b6020830191508360208260051b8501011115613789575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156137a7575f5ffd5b6137b08961371f565b97506020890135965060408901356001600160401b038111156137d1575f5ffd5b6137dd8b828c01613749565b90975095505060608901356001600160401b038111156137fb575f5ffd5b6138078b828c01613749565b90955093505060808901356001600160401b03811115613825575f5ffd5b6138318b828c01613749565b999c989b5096995094979396929594505050565b5f5f83601f840112613855575f5ffd5b5081356001600160401b0381111561386b575f5ffd5b602083019150836020828501011115613789575f5ffd5b5f5f5f5f60608587031215613895575f5ffd5b61389e8561371f565b935060208501356001600160401b038111156138b8575f5ffd5b6138c487828801613845565b9598909750949560400135949350505050565b6001600160a01b0381168114612266575f5ffd5b5f5f5f5f5f608086880312156138ff575f5ffd5b853561390a816138d7565b9450602086013561391a816138d7565b93506040860135925060608601356001600160401b0381111561393b575f5ffd5b61394788828901613845565b969995985093965092949392505050565b5f5f60408385031215613969575f5ffd5b50508035926020909101359150565b5f5f60408385031215613989575f5ffd5b82359150602083013561399b816138d7565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b03811182821017156139dd576139dd6139a6565b60405290565b604051608081016001600160401b03811182821017156139dd576139dd6139a6565b604080519081016001600160401b03811182821017156139dd576139dd6139a6565b604051601f8201601f191681016001600160401b0381118282101715613a4f57613a4f6139a6565b604052919050565b5f5f6001600160401b03841115613a7057613a706139a6565b50601f8301601f1916602001613a8581613a27565b915050828152838383011115613a99575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112613abe575f5ffd5b6136c183833560208501613a57565b803563ffffffff8116811461186a575f5ffd5b803560ff8116811461186a575f5ffd5b5f6101208284031215613b01575f5ffd5b613b096139ba565b823581529050613b1b60208301613acd565b6020820152613b2c60408301613acd565b6040820152613b3d60608301613acd565b6060820152613b4e6080830161371f565b6080820152613b5f60a0830161371f565b60a0820152613b7060c08301613ae0565b60c0820152613b8160e08301613ae0565b60e0820152613b936101008301613acd565b61010082015292915050565b5f6101808284031215613bb0575f5ffd5b613bb86139e3565b905081356001600160401b03811115613bcf575f5ffd5b613bdb84828501613aaf565b8252506020820135613bec816138d7565b602082015260408201356001600160401b03811115613c09575f5ffd5b8201601f81018413613c19575f5ffd5b613c2884823560208401613a57565b604083015250613c3b8360608401613af0565b606082015292915050565b5f60208284031215613c56575f5ffd5b81356001600160401b03811115613c6b575f5ffd5b613c7784828501613b9f565b949350505050565b5f60208284031215613c8f575f5ffd5b81356136c1816138d7565b5f5f5f5f5f60808688031215613cae575f5ffd5b613cb78661371f565b945060208601356001600160401b03811115613cd1575f5ffd5b613cdd88828901613845565b9095509350506040860135915060608601356001600160401b03811115613d02575f5ffd5b613d0e88828901613aaf565b9150509295509295909350565b5f60208284031215613d2b575f5ffd5b6136c182613ae0565b5f5f5f60608486031215613d46575f5ffd5b613d4f84613ae0565b9250613d5d60208501613ae0565b9150613d6b6040850161371f565b90509250925092565b8015158114612266575f5ffd5b5f5f60408385031215613d92575f5ffd5b8235613d9d816138d7565b9150602083013561399b81613d74565b5f5f60408385031215613dbe575f5ffd5b82359150613dce60208401613ae0565b90509250929050565b5f6001600160401b03821115613def57613def6139a6565b5060051b60200190565b5f60208284031215613e09575f5ffd5b81356001600160401b03811115613e1e575f5ffd5b8201601f81018413613e2e575f5ffd5b8035613e41613e3c82613dd7565b613a27565b8082825260208201915060208360051b850101925086831115613e62575f5ffd5b602084015b83811015613ea25780356001600160401b03811115613e84575f5ffd5b613e9389602083890101613b9f565b84525060209283019201613e67565b509695505050505050565b6020810160088310613ecd57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f60608486031215613ee5575f5ffd5b8335925060208401356001600160401b03811115613f01575f5ffd5b613f0d86828701613aaf565b92505060408401356001600160401b03811115613f28575f5ffd5b613f3486828701613aaf565b9150509250925092565b5f5f5f5f60608587031215613f51575f5ffd5b84359350613f6160208601613ae0565b925060408501356001600160401b03811115613f7b575f5ffd5b613f8787828801613845565b95989497509550505050565b8051825263ffffffff602082015116602083015263ffffffff60408201511660408301526060810151613fce606084018263ffffffff169052565b506080810151613fe4608084018261ffff169052565b5060a0810151613ffa60a084018261ffff169052565b5060c081015161400f60c084018260ff169052565b5060e081015161402460e084018260ff169052565b5061010081015161403e61010084018263ffffffff169052565b505050565b6101208101610f168284613f93565b60ff60f81b8816815260e060208201525f61407060e08301896136df565b828103604084015261408281896136df565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156140d75783518352602093840193909201916001016140b9565b50909b9a5050505050505050505050565b5f604082840312156140f8575f5ffd5b614100613a05565b905081356001600160401b03811115614117575f5ffd5b8201601f81018413614127575f5ffd5b8035614135613e3c82613dd7565b8082825260208201915060208360051b850101925086831115614156575f5ffd5b6020840193505b8284101561417f5761416e8461371f565b82526020938401939091019061415d565b845250505060208201356001600160401b0381111561419c575f5ffd5b6141a884828501613aaf565b60208301525092915050565b5f5f604083850312156141c5575f5ffd5b82356141d0816138d7565b915060208301356001600160401b038111156141ea575f5ffd5b8301601f810185136141fa575f5ffd5b8035614208613e3c82613dd7565b8082825260208201915060208360051b850101925087831115614229575f5ffd5b602084015b838110156142695780356001600160401b0381111561424b575f5ffd5b61425a8a6020838901016140e8565b8452506020928301920161422e565b50809450505050509250929050565b5f5f60408385031215614289575f5ffd5b6142928361371f565b946020939093013593505050565b5f5f604083850312156142b1575f5ffd5b82356142bc816138d7565b9150613dce6020840161371f565b5f8151808452602084019350602083015f5b828110156142fe57815161ffff168652602095860195909101906001016142dc565b5093949350505050565b602081525f6136c160208301846142ca565b5f6020828403121561432a575f5ffd5b81356001600160401b0381111561433f575f5ffd5b613c7784828501613aaf565b5f6020828403121561435b575f5ffd5b81356001600160401b03811115614370575f5ffd5b613c77848285016140e8565b5f5f5f5f5f5f5f5f60a0898b031215614393575f5ffd5b883561439e816138d7565b975060208901356143ae816138d7565b965060408901356001600160401b038111156143c8575f5ffd5b6143d48b828c01613749565b90975095505060608901356001600160401b038111156143f2575f5ffd5b6143fe8b828c01613749565b90955093505060808901356001600160401b0381111561441c575f5ffd5b6138318b828c01613845565b5f5f60408385031215614439575f5ffd5b8235614292816138d7565b5f5f5f5f5f5f60a08789031215614459575f5ffd5b8635614464816138d7565b95506020870135614474816138d7565b9450604087013593506060870135925060808701356001600160401b0381111561449c575f5ffd5b6144a889828a01613845565b979a9699509497509295939492505050565b600181811c908216806144ce57607f821691505b6020821081036144ec57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e1984360301811261451b575f5ffd5b8301803591506001600160401b03821115614534575f5ffd5b602001915036819003821315613789575f5ffd5b818382375f9101908152919050565b601f82111561403e57805f5260205f20601f840160051c8101602085101561457c5750805b601f840160051c820191505b8181101561459b575f8155600101614588565b5050505050565b81516001600160401b038111156145bb576145bb6139a6565b6145cf816145c984546144ba565b84614557565b6020601f821160018114614601575f83156145ea5750848201515b5f19600385901b1c1916600184901b17845561459b565b5f84815260208120601f198516915b828110156146305787850151825560209485019460019092019101614610565b508482101561464d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208501945060208460051b820101835f5b8681101561470c57838303601f19018852813536879003601e190181126146c0575f5ffd5b86016020810190356001600160401b038111156146db575f5ffd5b8036038213156146e9575f5ffd5b6146f485828461465c565b60209a8b019a9095509390930192505060010161469b565b50909695505050505050565b606080825281018690525f8760808301825b8981101561475a57823561473d816138d7565b6001600160a01b031682526020928301929091019060010161472a565b5083810360208501528681527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871115614792575f5ffd5b8660051b91508188602083013701828103602090810160408501526147ba9082018587614684565b9998505050505050505050565b61ffff85168152606060208201525f6147e460608301858761465c565b905082604083015295945050505050565b5f60208284031215614805575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff8181168382160190811115610f1657610f1661480c565b6001600160401b03831115614855576148556139a6565b6148698361486383546144ba565b83614557565b5f601f84116001811461489a575f85156148835750838201355b5f19600387901b1c1916600186901b17835561459b565b5f83815260208120601f198716915b828110156148c957868501358255602094850194600190920191016148a9565b50868210156148e5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610f1657610f1661480c565b60c081525f60c082015260e060208201525f61492a60e08301888a61465c565b86604084015285606084015284608084015282810360a08401526147ba81856136df565b604081525f61496060408301856142ca565b828103602084015261263681856136df565b81810381811115610f1657610f1661480c565b61ffff8716815260a060208201525f6149a260a08301878961465c565b6001600160a01b0395909516604083015250606081019290925265ffffffffffff166080909101529392505050565b6001600160a01b038616815261ffff85166020820152608060408201525f6149fd60808301858761465c565b90508260608301529695505050505050565b5f60208284031215614a1f575f5ffd5b81516136c181613d74565b606081525f614a3d60608301868861465c565b8460208401528281036040840152614a5581856136df565b979650505050505050565b85815284602082015261ffff8416604082015260a060608201525f835161018060a0840152614a936102208401826136df565b90506001600160a01b0360208601511660c08401526040850151609f198483030160e0850152614ac382826136df565b9150506060850151614ad9610100850182613f93565b506001600160a01b03841660808401529050612df1565b63ffffffff8181168382160190811115610f1657610f1661480c565b8082028115828204841417610f1657610f1661480c56fea264697066735822122036eb6099fc7e7a7bc0ddee4c21832b779342965c8ca756027b978896cdba902864736f6c634300081e0033","sourceMap":"3230:37119:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9197:38;735:10:69;9197:38:113;;;-1:-1:-1;;;;;338:55:187;;;320:74;;9225:9:113;425:2:187;410:18;;403:34;293:18;9197:38:113;;;;;;;3230:37119;;;;;32784:277;;;;;;;;;;-1:-1:-1;32784:277:113;;;;;:::i;:::-;;:::i;:::-;;;904:14:187;;897:22;879:41;;867:2;852:18;32784:277:113;;;;;;;;35216:123;;;;;;;;;;-1:-1:-1;35216:123:113;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;39199:158::-;;;;;;;;;;-1:-1:-1;39199:158:113;;;;;:::i;:::-;39313:19;;39270:24;39313:19;;;:8;:19;;;;;:37;-1:-1:-1;;;39313:37:113;;;;;39199:158;;;;2208:14:187;2196:27;;;2178:46;;2166:2;2151:18;39199:158:113;2034:196:187;39067:98:113;;;;;;;;;;-1:-1:-1;39144:14:113;;-1:-1:-1;;;39144:14:113;;;;39067:98;;;2504:6:187;2492:19;;;2474:38;;2462:2;2447:18;39067:98:113;2330:188:187;5347:18:113;;;;;;;;;;;;;:::i;10291:108::-;;;;;;;;;;;;;:::i;:::-;;16653:3123;;;;;;;;;;-1:-1:-1;16653:3123:113;;;;;:::i;:::-;;:::i;38642:391::-;;;;;;;;;;-1:-1:-1;38642:391:113;;;;;:::i;:::-;38826:19;;38734:15;38826:19;;;:8;:19;;;;;;;;;38865:15;38941:36;;38960:4;38941:36;;;35788:74:187;35878:18;;;35871:47;;;;38941:36:113;;;;;;;;;35761:18:187;;;;38941:36:113;;;38931:47;;;;;;;;-1:-1:-1;;;;;38865:15:113;;;38931:47;;-1:-1:-1;;;38899:8:113;;;;;38642:391;;;;;-1:-1:-1;;;;;4412:55:187;;;4394:74;;4499:2;4484:18;;4477:34;;;;4554:14;4547:22;4527:18;;;4520:50;4382:2;4367:18;38642:391:113;4198:378:187;19898:1095:113;;;;;;;;;;-1:-1:-1;19898:1095:113;;;;;:::i;:::-;;:::i;:::-;;;5679:25:187;;;5667:2;5652:18;19898:1095:113;5533:177:187;31800:219:113;;;;;;;;;;-1:-1:-1;31800:219:113;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;6847:33:187;;;6829:52;;6817:2;6802:18;31800:219:113;6685:202:187;5624:24:113;;;;;;;;;;-1:-1:-1;5624:24:113;;;;-1:-1:-1;;;;;5624:24:113;;;;;;-1:-1:-1;;;;;7056:55:187;;;7038:74;;7026:2;7011:18;5624:24:113;6892:226:187;34882:300:113;;;;;;;;;;-1:-1:-1;34882:300:113;;;;;:::i;:::-;;:::i;26511:122::-;;;;;;;;;;-1:-1:-1;26511:122:113;;;;;:::i;:::-;;:::i;37223:666::-;;;;;;;;;;-1:-1:-1;37223:666:113;;;;;:::i;:::-;;:::i;:::-;;;;8278:14:187;8266:27;;;8248:46;;8342:10;8330:23;;;8325:2;8310:18;;8303:51;8370:18;;8363:34;;;;8433:23;;;8428:2;8413:18;;8406:51;8494:23;;8488:3;8473:19;;8466:52;8555:23;;8549:3;8534:19;;8527:52;8616:23;8610:3;8595:19;;8588:52;8235:3;8220:19;37223:666:113;7945:701:187;23594:287:113;;;;;;;;;;-1:-1:-1;23594:287:113;;;;;:::i;:::-;;:::i;28035:225::-;;;;;;;;;;-1:-1:-1;28035:225:113;;;;;:::i;:::-;;:::i;35373:132::-;;;;;;;;;;-1:-1:-1;35373:132:113;;;;;:::i;:::-;;:::i;11681:2553::-;;;;;;;;;;-1:-1:-1;11681:2553:113;;;;;:::i;:::-;;:::i;33795:226::-;;;;;;;;;;-1:-1:-1;33795:226:113;;;;;:::i;:::-;;:::i;40108:95::-;;;;;;;;;;-1:-1:-1;40188:8:113;;-1:-1:-1;;;;;40188:8:113;40108:95;;4321:55;;;;;;;;;;;;-1:-1:-1;;4321:55:113;;25151:626;;;;;;;;;;-1:-1:-1;25151:626:113;;;;;:::i;:::-;;:::i;38104:169::-;;;;;;;;;;-1:-1:-1;38104:169:113;;;;;:::i;:::-;;:::i;38468:140::-;;;;;;;;;;-1:-1:-1;38468:140:113;;;;;:::i;:::-;38542:4;38565:18;;;:8;:18;;;;;;;;-1:-1:-1;;;;;38565:36:113;;;;:27;;:36;;;;;;;;38468:140;;;;;27479:180;;;;;;;;;;-1:-1:-1;27479:180:113;;;;;:::i;:::-;;:::i;36580:609::-;;;;;;;;;;-1:-1:-1;36580:609:113;;;;;:::i;:::-;36679:16;36926:18;;;:8;:18;;;;;;;;36976:16;;37133:13;;;;37160:12;;;;;-1:-1:-1;;;36976:16:113;;;;;37006:17;;;;;-1:-1:-1;;;37037:18:113;;;;;-1:-1:-1;;;37069:18:113;;;;;-1:-1:-1;;;37101:18:113;;;;;;;-1:-1:-1;;;;;37133:13:113;;;;36580:609;;;;;15876:6:187;15864:19;;;15846:38;;15932:14;15920:27;;;15915:2;15900:18;;15893:55;15984:27;;;15964:18;;;15957:55;;;;16048:27;;;16043:2;16028:18;;16021:55;16113:27;;;;16107:3;16092:19;;16085:56;-1:-1:-1;;;;;16178:55:187;;;16172:3;16157:19;;16150:84;16265:3;16250:19;;16243:35;15833:3;15818:19;36580:609:113;15541:743:187;24824:293:113;;;;;;;;;;-1:-1:-1;24824:293:113;;;;;:::i;:::-;;:::i;33296:87::-;;;;;;;;;;-1:-1:-1;33361:15:113;;;;;;;;;;;;-1:-1:-1;;;33361:15:113;;;;33296:87;;4920:35;;;;;;;;;;;;;;;21027:130;;;;;;;;;;-1:-1:-1;21027:130:113;;;;;:::i;:::-;;:::i;9611:646::-;;;;;;;;;;-1:-1:-1;9611:646:113;;;;;:::i;:::-;;:::i;35539:1007::-;;;;;;;;;;-1:-1:-1;35539:1007:113;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26282:195::-;;;;;;;;;;-1:-1:-1;26282:195:113;;;;;:::i;:::-;;:::i;10433:120::-;;;;;;;;;;-1:-1:-1;10433:120:113;;;;;:::i;:::-;;:::i;4198:54::-;;;;;;;;;;;;4235:17;4198:54;;25811:437;;;;;;;;;;-1:-1:-1;25811:437:113;;;;;:::i;:::-;;:::i;21191:168::-;;;;;;;;;;-1:-1:-1;21191:168:113;;;;;:::i;:::-;;:::i;4680:47::-;;;;;;;;;;;;;;;5990:19;;;;;;;;;;-1:-1:-1;5990:19:113;;;;;:::i;:::-;;:::i;39928:146::-;;;;;;;;;;-1:-1:-1;39928:146:113;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5228:557:81:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;10587:135:113:-;;;;;;;;;;-1:-1:-1;10587:135:113;;;;;:::i;:::-;;:::i;39593:301::-;;;;;;;;;;-1:-1:-1;39593:301:113;;;;;:::i;:::-;;:::i;5267:41::-;;;;;;;;;;;;;;;4450;;;;;;;;;;;;4488:3;4450:41;;34055:282;;;;;;;;;;-1:-1:-1;34055:282:113;;;;;:::i;:::-;;:::i;33541:220::-;;;;;;;;;;-1:-1:-1;33541:220:113;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27693:87::-;;;;;;;;;;-1:-1:-1;27693:87:113;;;;;:::i;:::-;;:::i;24639:151::-;;;;;;;;;;-1:-1:-1;24639:151:113;;;;;:::i;:::-;;:::i;33417:90::-;;;;;;;;;;-1:-1:-1;33488:5:113;:12;33417:90;;23915:237;;;;;;;;;;-1:-1:-1;23915:237:113;;;;;:::i;:::-;;:::i;34701:147::-;;;;;;;;;;-1:-1:-1;34701:147:113;;;;;:::i;:::-;34768:21;34808:13;;;:5;:13;;;;;:26;;:33;;34701:147;32460:290;;;;;;;;;;-1:-1:-1;32460:290:113;;;;;:::i;:::-;;:::i;34371:296::-;;;;;;;;;;-1:-1:-1;34371:296:113;;;;;:::i;:::-;;:::i;37923:147::-;;;;;;;;;;-1:-1:-1;37923:147:113;;;;;:::i;:::-;;:::i;5858:32::-;;;;;;;;;;-1:-1:-1;5858:32:113;;;;-1:-1:-1;;;5858:32:113;;;;;;5442:17;;;;;;;;;;;;;:::i;14395:2224::-;;;;;;;;;;-1:-1:-1;14395:2224:113;;;;;:::i;:::-;;:::i;4562:44::-;;;;;;;;;;;;;;;39391:168;;;;;;;;;;-1:-1:-1;39391:168:113;;;;;:::i;:::-;39516:19;;39467:30;39516:19;;;:8;:19;;;;;;;;:29;:36;;39391:168;27814:187;;;;;;;;;;-1:-1:-1;27814:187:113;;;;;:::i;:::-;;:::i;32120:230::-;;;;;;;;;;-1:-1:-1;32120:230:113;;;;;:::i;:::-;;:::i;38307:127::-;;;;;;;;;;-1:-1:-1;38307:127:113;;;;;:::i;:::-;;:::i;4796:46::-;;;;;;;;;;;;;;;40237:110;;;;;;;;;;-1:-1:-1;40237:110:113;;;;;:::i;:::-;-1:-1:-1;;;;;40321:19:113;40298:4;40321:19;;;:10;:19;;;;;;;;;40237:110;32784:277;32878:4;-1:-1:-1;;;;;;32901:48:113;;-1:-1:-1;;;32901:48:113;;:101;;-1:-1:-1;;;;;;;32953:49:113;;-1:-1:-1;;;32953:49:113;32901:101;:153;;;-1:-1:-1;;;;;;;;;;829:40:84;;;33018:36:113;32894:160;32784:277;-1:-1:-1;;32784:277:113:o;35216:123::-;35313:13;;;;:5;:13;;;;;:19;;35306:26;;35275:19;;35313;35306:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35216:123;;;:::o;5347:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10291:108::-;6797:12;:10;:12::i;:::-;10347:45:::1;735:10:69::0;10378:13:113::1;::::0;;10389:1:::1;10378:13:::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;10378:13:113::1;;;;;;;;;;;;;;;;10347:16;:45::i;:::-;10291:108::o:0;16653:3123::-;16887:19;;;16854:30;16887:19;;;:8;:19;;;;;16961:14;;-1:-1:-1;;;16961:14:113;;;;16956:54;;16984:26;;-1:-1:-1;;;16984:26:113;;;;;;;;;;;16956:54;17080:21;;-1:-1:-1;;;;;17080:21:113;735:10:69;17080:37:113;17076:82;;17126:32;;-1:-1:-1;;;17126:32:113;;;;;;;;;;;17076:82;17169:21;17193:18;;;:8;:18;;;;;17288;;-1:-1:-1;;;17288:18:113;;;;:23;;:49;;-1:-1:-1;17315:18:113;;-1:-1:-1;;;17315:18:113;;;;:22;;17288:49;17284:90;;;17346:28;;-1:-1:-1;;;17346:28:113;;;;;;;;;;;17284:90;17444:18;;-1:-1:-1;;;17444:18:113;;;;:22;17440:67;;17475:32;;-1:-1:-1;;;17475:32:113;;;;;;;;;;;17440:67;17618:7;17646:30;;;;;:67;;-1:-1:-1;17680:33:113;;;;17646:67;17642:105;;;17722:25;;-1:-1:-1;;;17722:25:113;;;;;;;;;;;17642:105;17829:21;17813:13;:37;17809:81;;;17859:31;;-1:-1:-1;;;17859:31:113;;;;;;;;;;;17809:81;17936:41;;-1:-1:-1;;17936:41:113;-1:-1:-1;;;17964:12:113;17936:41;;;;;;;;;;;18248:48;;;;-1:-1:-1;;;18248:48:113;;;;;;-1:-1:-1;18382:1309:113;18406:13;18402:1;:17;18382:1309;;;18462:19;18440:9;;18450:1;18440:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;:41;18436:79;;;18490:25;;-1:-1:-1;;;18490:25:113;;;;;;;;;;;18436:79;18533:25;18547:7;;18555:1;18547:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;18533:25::-;18529:66;;;18567:28;;-1:-1:-1;;;18567:28:113;;;;;;;;;;;18529:66;18611:12;18625:23;18652:7;;18660:1;18652:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18652:15:113;18676:6;;18683:1;18676:9;;;;;;;:::i;:::-;;;;;;;18688;;18698:1;18688:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18652:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18610:91;;;;18720:7;18715:700;;19084:17;;:21;19080:321;;19193:10;19187:17;19257:15;19244:10;19240:2;19236:19;19229:44;19080:321;19348:34;;-1:-1:-1;;;19348:34:113;;;;;;;;;;;19080:321;19453:22;19432:10;:17;:43;19428:194;;19495:18;;;:35;;;;;;;-1:-1:-1;19495:35:113;;;;;;;;;19519:10;19495:35;;:::i;:::-;;19428:194;;;19593:13;;;19604:1;19593:13;;;32894:36:187;19569:18:113;;;;32867::187;19593:13:113;;;-1:-1:-1;;19593:13:113;;;;;;;;;19569:38;;;;;;;-1:-1:-1;19569:38:113;;;19593:13;19569:38;;;;;;;;;;;:::i;:::-;;19428:194;-1:-1:-1;;19663:3:113;;18382:1309;;;;19732:8;19721:9;19705:64;;;19742:7;;19751:6;;19759:9;;19705:64;;;;;;;;;;;:::i;:::-;;;;;;;;16844:2932;;;16653:3123;;;;;;;;:::o;19898:1095::-;20049:19;;;19997:7;20049:19;;;:8;:19;;;;;20083:14;;-1:-1:-1;;;20083:14:113;;;;20078:54;;20106:26;;-1:-1:-1;;;20106:26:113;;;;;;;;;;;20078:54;20162:57;;-1:-1:-1;;;20162:57:113;;20143:16;;20162:6;;:22;;:57;;20185:9;;20196:15;;;;20213:5;;20162:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20229:21;20253:18;;;:8;:18;;;;;;;;20366:13;;;;20253:18;;-1:-1:-1;20253:18:113;-1:-1:-1;;;;;20366:13:113;735:10:69;-1:-1:-1;;;;;20350:29:113;;20346:69;;20388:27;;-1:-1:-1;;;20388:27:113;;;;;;;;;;;20346:69;20526:17;;;;:22;:49;;;;-1:-1:-1;20552:18:113;;-1:-1:-1;;;20552:18:113;;;;:23;20526:49;20522:89;;;20584:27;;-1:-1:-1;;;20584:27:113;;;;;;;;;;;20522:89;20688:18;;-1:-1:-1;;;20688:18:113;;;;:22;;;:48;;-1:-1:-1;20714:18:113;;-1:-1:-1;;;20714:18:113;;;;:22;;20688:48;20684:117;;;20759:31;;-1:-1:-1;;;20759:31:113;;;;;;;;;;;20684:117;20847:41;;;;-1:-1:-1;;;20875:12:113;20847:41;;;;;;20927:33;;20951:8;;20927:33;;-1:-1:-1;;20927:33:113;-1:-1:-1;20978:8:113;19898:1095;-1:-1:-1;;;;;;19898:1095:113:o;31800:219::-;31915:17;;31892:6;;31915:17;;31910:55;;31941:24;;-1:-1:-1;;;31941:24:113;;;;;;;;;;;31910:55;-1:-1:-1;;;;31800:219:113;;;;;;;:::o;34882:300::-;34964:15;35011:13;;;:5;:13;;;;;35047:17;;;:24;35038:33;;35034:93;;35094:22;;-1:-1:-1;;;35094:22:113;;;;;;;;;;;35034:93;35143:4;:17;;35161:5;35143:24;;;;;;;;:::i;:::-;;;;;;;;;;:32;-1:-1:-1;;;;;35143:32:113;;34882:300;-1:-1:-1;;;;34882:300:113:o;26511:122::-;6491:13;:11;:13::i;:::-;26594:32:::1;26603:6;26611:7;26620:5;26594:8;:32::i;:::-;26511:122:::0;;:::o;37223:666::-;37326:16;37587:18;;;:8;:18;;;;;37637:16;;37667:19;;;;37326:16;;;;;;;;;;;;-1:-1:-1;;;37637:16:113;;;;;;37667:19;;37700:38;37667:19;37637:16;37700:38;:::i;:::-;37752:19;;;;;;37616:266;;;;-1:-1:-1;37616:266:113;;;;;-1:-1:-1;37752:19:113;;;;;;;-1:-1:-1;;;;37785:15:113;;;;;-1:-1:-1;;;;37814:19:113;;;;;-1:-1:-1;;;;37847:25:113;;;;;-1:-1:-1;37616:266:113;-1:-1:-1;;37223:666:113:o;23594:287::-;23683:16;6491:13;:11;:13::i;:::-;-1:-1:-1;23723:14:113::1;::::0;-1:-1:-1;;;23723:14:113;::::1;;;23747:41;23723:14:::0;23772:15;23747:13:::1;:41::i;:::-;23822:14;:16:::0;;::::1;;-1:-1:-1::0;;;23822:16:113;;::::1;::::0;::::1;::::0;;;::::1;;;-1:-1:-1::0;;;;23822:16:113;;::::1;;::::0;;6514:1:::1;23594:287:::0;;;:::o;28035:225::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;28113:26:113;::::1;28109:69;;28148:30;;-1:-1:-1::0;;;28148:30:113::1;;;;;;;;;;;28109:69;28188:9;:24:::0;;-1:-1:-1;;;;;;28188:24:113::1;-1:-1:-1::0;;;;;28188:24:113;::::1;::::0;;::::1;::::0;;;28227:26:::1;::::0;::::1;::::0;-1:-1:-1;;28227:26:113::1;28035:225:::0;:::o;35373:132::-;35476:13;;;;:5;:13;;;;;:22;;35469:29;;35435:22;;35476;35469:29;;;:::i;11681:2553::-;11903:17;;11822:16;;11903:17;;11898:55;;11929:24;;-1:-1:-1;;;11929:24:113;;;;;;;;;;;11898:55;11997:19;;;11964:30;11997:19;;;:8;:19;;;;;12091:14;;-1:-1:-1;;;12091:14:113;;;;12086:54;;12114:26;;-1:-1:-1;;;12114:26:113;;;;;;;;;;;12086:54;12224:39;735:10:69;12239:12:113;12253:9;12224:14;:39::i;:::-;12219:80;;12272:27;;-1:-1:-1;;;12272:27:113;;;;;;;;;;;12219:80;12357:27;735:10:69;12371:12:113;656:96:69;12357:27:113;12353:68;;;12393:28;;-1:-1:-1;;;12393:28:113;;;;;;;;;;;12353:68;12501:19;12476:44;;12472:82;;;12529:25;;-1:-1:-1;;;12529:25:113;;;;;;;;;;;12472:82;12623:31;;;;:18;;;12736:30;12788:57;;-1:-1:-1;;;12788:57:113;;12623:31;;;;-1:-1:-1;;;12679:25:113;;;;;12736:30;12788:6;;:22;;:57;;12811:9;;12822:15;;;;12839:5;;12788:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12946:21;12970:18;;;:8;:18;;;;;13002:16;;12970:18;;-1:-1:-1;12970:18:113;-1:-1:-1;;;13002:16:113;;;;:21;12998:66;;13032:32;;-1:-1:-1;;;13032:32:113;;;;;;;;;;;12998:66;13116:17;;;:32;;;;;;;-1:-1:-1;13116:32:113;;;;;;;;;;;13208:22;;;:40;13233:15;;13208:22;:40;:::i;:::-;-1:-1:-1;13258:40:113;;13308:28;;;-1:-1:-1;;;13308:28:113;;;;;13258:40;13285:12;13258:40;13308:28;;;;13365:10;;;:37;;13401:1;13365:37;;;13385:12;13365:37;13346:56;;;;;;;-1:-1:-1;;;13346:56:113;;;;;;;;13730:10;;;:55;;13784:1;13730:55;;;34768:21;34808:13;;;:5;:13;;;;;:26;;:33;13750:30;13702:25;;;:83;;-1:-1:-1;;13795:34:113;-1:-1:-1;;;13702:83:113;;;;;-1:-1:-1;;13795:34:113;;;;;;;;;;;13839:13;;;:28;;735:10:69;-1:-1:-1;;;;;;13839:28:113;;;;;;13877:10;;;:22;13890:9;13877:10;:22;:::i;:::-;-1:-1:-1;13909:12:113;;;:20;;;13945:256;;;735:10:69;13980:8:113;13945:256;14067:15;;14096:12;14122:27;;;;14096:12;14122:27;:::i;:::-;14163:5;14182:9;13945:256;;;;;;;;;;;:::i;:::-;;;;;;;;14212:15;;;;;11681:2553;;;;;;;:::o;33795:226::-;33902:5;:12;33864:13;;33893:21;;;;33889:81;;33937:22;;-1:-1:-1;;;33937:22:113;;;;;;;;;;;33889:81;33986:5;33992;33986:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;33979:35;;;;;:::i;25151:626::-;6491:13;:11;:13::i;:::-;25268:14:::1;::::0;::::1;-1:-1:-1::0;;;25268:14:113;;::::1;::::0;::::1;25256:26:::0;;::::1;;25252:65;;;25291:26;;-1:-1:-1::0;;;25291:26:113::1;;;;;;;;;;;25252:65;25496:5;:12:::0;25486:22:::1;::::0;::::1;;25482:61;;25517:26;;-1:-1:-1::0;;;25517:26:113::1;;;;;;;;;;;25482:61;25553:17;25573:5;25579:6;25573:13;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;25610:22:::0;;25573:13;;-1:-1:-1;25600:32:113::1;::::0;::::1;;25596:74;;25641:29;;-1:-1:-1::0;;;25641:29:113::1;;;;;;;;;;;25596:74;25707:9;25681:4;:15;;25697:6;25681:23;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25732:38;25744:6;25752;25760:9;25732:38;;;;;;;40508:4:187::0;40496:17;;;40478:36;;40550:17;;;;40545:2;40530:18;;40523:45;40616:6;40604:19;;;;40599:2;40584:18;;40577:47;40466:2;40451:18;;40286:344;25732:38:113::1;;;;;;;;25242:535;25151:626:::0;;;:::o;38104:169::-;38229:18;;;;:8;:18;;;;;:30;;:37;;38187:23;;38229:30;38260:5;;38229:37;;;;;;:::i;:::-;;;;;;;;38222:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38104:169;;;;:::o;27479:180::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;27570:19:113;::::1;;::::0;;;:10:::1;:19;::::0;;;;;:33;;-1:-1:-1;;27570:33:113::1;::::0;::::1;;::::0;;::::1;::::0;;;27618:34;;27570:33;;:19;27618:34:::1;::::0;::::1;27479:180:::0;;:::o;24824:293::-;6491:13;:11;:13::i;:::-;24900:5:::1;:12:::0;24891:21:::1;::::0;::::1;;24887:60;;24921:26;;-1:-1:-1::0;;;24921:26:113::1;;;;;;;;;;;24887:60;25064:5;25070;25064:12;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;25057:19:::1;25064:12:::0;;25057:19:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;;25092:18:113::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;24824:293:::0;:::o;21027:130::-;21104:46;21114:8;735:10:69;21138:7:113;21104:46;;;;;;;;;;;;:9;:46::i;9611:646::-;6797:12;:10;:12::i;:::-;9710:17:::1;::::0;::::1;;9706:56;;;9736:26;;-1:-1:-1::0;;;9736:26:113::1;;;;;;;;;;;9706:56;9792:14;::::0;-1:-1:-1;;;9792:14:113;::::1;;;9773:16;9852:363;9876:19;:26;9872:1;:30;9852:363;;;10041:1;-1:-1:-1::0;;;;;9993:50:113::1;:19;10013:1;9993:22;;;;;;;;:::i;:::-;;;;;;;:36;;;-1:-1:-1::0;;;;;9993:50:113::1;;9989:216;;10063:48;10077:9;10088:19;10108:1;10088:22;;;;;;;;:::i;:::-;;;;;;;10063:13;:48::i;:::-;10161:11;;;;;9989:216;9904:3;;9852:363;;;-1:-1:-1::0;10224:14:113::1;:26:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;10224:26:113::1;-1:-1:-1::0;;;;10224:26:113;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;9611:646:113:o;35539:1007::-;35602:11;35742:18;;;:8;:18;;;;;35775:17;;;;:22;:49;;;;-1:-1:-1;35801:18:113;;-1:-1:-1;;;35801:18:113;;;;:23;35775:49;:76;;;;-1:-1:-1;35828:18:113;;-1:-1:-1;;;35828:18:113;;;;:23;35775:76;:103;;;;-1:-1:-1;35855:18:113;;-1:-1:-1;;;35855:18:113;;;;:23;35775:103;35771:164;;;-1:-1:-1;35901:23:113;;35539:1007;-1:-1:-1;;35539:1007:113:o;35771:164::-;35948:18;;-1:-1:-1;;;35948:18:113;;;;:22;35944:81;;-1:-1:-1;35993:21:113;;35539:1007;-1:-1:-1;;35539:1007:113:o;35944:81::-;36038:18;;-1:-1:-1;;;36038:18:113;;;;:22;36034:81;;-1:-1:-1;36083:21:113;;35539:1007;-1:-1:-1;;35539:1007:113:o;36034:81::-;36128:18;;-1:-1:-1;;;36128:18:113;;;;:22;36124:81;;-1:-1:-1;36173:21:113;;35539:1007;-1:-1:-1;;35539:1007:113:o;36124:81::-;36253:19;;;;36234:16;;36215;;36234:38;;36253:19;;;;;-1:-1:-1;;;36234:16:113;;;;:38;:::i;:::-;36215:57;;;;36299:12;36287:8;:24;36283:257;;-1:-1:-1;36334:18:113;;35539:1007;-1:-1:-1;;;35539:1007:113:o;36283:257::-;36374:24;36389:8;36374:14;:24::i;:::-;36373:25;:54;;;;36403:24;36418:8;36403:14;:24::i;:::-;36402:25;36373:54;36369:171;;;-1:-1:-1;36450:20:113;;35539:1007;-1:-1:-1;;;35539:1007:113:o;36369:171::-;-1:-1:-1;36508:21:113;;35539:1007;-1:-1:-1;;;35539:1007:113:o;26282:195::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;40321:19:113;;40298:4;40321:19;;;:10;:19;;;;;;;;26365:63:::1;;;26400:28;;-1:-1:-1::0;;;26400:28:113::1;;;;;;;;;;;26365:63;26439:31;26448:6;26456:7;26465:4;26439:8;:31::i;10433:120::-:0;6797:12;:10;:12::i;:::-;10532:13:::1;::::0;;10543:1:::1;10532:13:::0;;;::::1;::::0;::::1;::::0;;;10505:41:::1;::::0;10522:8;;10532:13;::::1;::::0;10505:41:::1;10433:120:::0;:::o;25811:437::-;6491:13;:11;:13::i;:::-;25931:5:::1;25925:19;25948:1;25925:24:::0;25921:59:::1;;25958:22;;-1:-1:-1::0;;;25958:22:113::1;;;;;;;;;;;25921:59;26016:3;26000:5;25994:19;:25;25990:60;;;26028:22;;-1:-1:-1::0;;;26028:22:113::1;;;;;;;;;;;25990:60;26089:3;26070:8;26064:22;:28;26060:61;;;26101:20;;-1:-1:-1::0;;;26101:20:113::1;;;;;;;;;;;26060:61;26132:13;::::0;;;:5:::1;:13;::::0;;;;:19:::1;;:27;26154:5:::0;26132:19;:27:::1;:::i;:::-;-1:-1:-1::0;26169:13:113::1;::::0;;;:5:::1;:13;::::0;;;;:22:::1;;:33;26194:8:::0;26169:22;:33:::1;:::i;:::-;;26227:6;26217:24;26235:5;26217:24;;;;;;:::i;:::-;;;;;;;;25811:437:::0;;;:::o;21191:168::-;21302:50;21312:8;735:10:69;21336:7:113;21345:6;;21302:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21302:9:113;;-1:-1:-1;;;21302:50:113:i;:::-;21191:168;;;;:::o;5990:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39928:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40037:19:113;;;;;;;;:8;:19;;;;;;;;;40030:37;;;;;;;40037:30;;;40030:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;40030:37:113;;;;;;;;-1:-1:-1;;;40030:37:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;40030:37:113;;;;;;;;;;;;;;;;-1:-1:-1;;;40030:37:113;;;;;;;;;39928:146::o;5228:557:81:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5752;;;5736:1;5752:16;;;;;;;;;-1:-1:-1;;;5566:212:81;;;-1:-1:-1;5566:212:81;;-1:-1:-1;5674:13:81;;-1:-1:-1;5709:4:81;;-1:-1:-1;5736:1:81;-1:-1:-1;5752:16:81;-1:-1:-1;5566:212:81;-1:-1:-1;5228:557:81:o;10587:135:113:-;6797:12;:10;:12::i;:::-;10681:34:::1;10698:8;10708:6;10681:16;:34::i;39593:301::-:0;39737:19;;;39682:16;39737:19;;;:8;:19;;;;;;;39779:11;;;:18;39770:27;;39766:87;;39820:22;;-1:-1:-1;;;39820:22:113;;;;;;;;;;;39766:87;39869:1;:11;;39881:5;39869:18;;;;;;;;:::i;:::-;;;;;;;;;39862:25;;;39593:301;;;;:::o;34055:282::-;34172:19;;;34134:4;34172:19;;;:8;:19;;;;;:30;;:42;34134:4;34239:33;34252:6;34172:42;34239:12;:33::i;:::-;34224:48;-1:-1:-1;34290:10:113;;;;;;:40;;;-1:-1:-1;;34304:11:113;:26;34290:40;34283:47;34055:282;-1:-1:-1;;;;;34055:282:113:o;33541:220::-;33647:5;:12;33607:15;;33638:21;;;;33634:81;;33682:22;;-1:-1:-1;;;33682:22:113;;;;;;;;;;;33634:81;33731:5;33737;33731:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;33724:30;;;;;;;;;;;;;;;;;;;;;33731:12;33724:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33724:30:113;;33541:220;-1:-1:-1;;;;;;;33541:220:113:o;27693:87::-;6491:13;:11;:13::i;:::-;27761:3:::1;:12;27767:6:::0;27761:3;:12:::1;:::i;24639:151::-:0;6491:13;:11;:13::i;:::-;24704:5:::1;:16:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;24704:16:113;;;;;;;;24715:4;;24704:16:::1;;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;::::1;:::i;:::-;-1:-1:-1::0;24704:16:113::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;24745:15:113;;24762:20:::1;::::0;::::1;::::0;24735:48:::1;::::0;::::1;::::0;-1:-1:-1;24735:48:113::1;::::0;24745:15;24762:20;24735:48:::1;:::i;:::-;;;;;;;;24639:151:::0;:::o;23915:237::-;6491:13;:11;:13::i;:::-;23990:19:::1;::::0;::::1;;::::0;;;:8:::1;:19;::::0;;;;:26;-1:-1:-1;;;23990:26:113;::::1;;;:35;;::::0;;23986:74:::1;;24034:26;;-1:-1:-1::0;;;24034:26:113::1;;;;;;;;;;;23986:74;24071:19;::::0;::::1;24100:5;24071:19:::0;;;:8:::1;:19;::::0;;;;;:34;;;::::1;::::0;;24120:25;::::1;::::0;24100:5;24120:25:::1;23915:237:::0;:::o;32460:290::-;32640:17;;32613:6;;32640:17;;32635:55;;32666:24;;-1:-1:-1;;;32666:24:113;;;;;;;;;;;32635:55;-1:-1:-1;;;;32460:290:113;;;;;;;;;;:::o;34371:296::-;34447:12;34491:13;;;:5;:13;;;;;;;;-1:-1:-1;;;;;34530:21:113;;;;;;;;;;;34565:10;;;34561:49;;34598:1;34591:8;;;;;;34561:49;34626:4;:17;;34652:1;34644:5;:9;;;;:::i;:::-;34626:28;;;;;;;;:::i;:::-;;;;;;;;;;:34;-1:-1:-1;;;34626:34:113;;;;;34371:296;-1:-1:-1;;;;;34371:296:113:o;37923:147::-;38029:18;;;;:8;:18;;;;;:34;;38022:41;;37989:21;;38029:34;38022:41;;;:::i;5442:17::-;;;;;;;:::i;14395:2224::-;14573:17;;14536:16;;14573:17;;14568:55;;14599:24;;-1:-1:-1;;;14599:24:113;;;;;;;;;;;14568:55;14645:57;;-1:-1:-1;;;14645:57:113;;:6;;:22;;:57;;14668:9;;14679:15;;;;14696:5;;14645:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14745:19;;;14712:30;14745:19;;;:8;:19;;;;;14780:14;;14634:68;;-1:-1:-1;14745:19:113;-1:-1:-1;;;14780:14:113;;;;14775:54;;14803:26;;-1:-1:-1;;;14803:26:113;;;;;;;;;;;14775:54;14919:19;14894:44;;14890:82;;;14947:25;;-1:-1:-1;;;14947:25:113;;;;;;;;;;;14890:82;15036:27;735:10:69;15050:12:113;656:96:69;15036:27:113;15032:68;;;15072:28;;-1:-1:-1;;;15072:28:113;;;;;;;;;;;15032:68;15187:39;735:10:69;15202:12:113;656:96:69;15187:39:113;15182:80;;15235:27;;-1:-1:-1;;;15235:27:113;;;;;;;;;;;15182:80;15273:21;15297:18;;;:8;:18;;;;;15405;;-1:-1:-1;;;15405:18:113;;;;:22;;;:48;;-1:-1:-1;15431:18:113;;-1:-1:-1;;;15431:18:113;;;;:22;;15405:48;15401:93;;;15462:32;;-1:-1:-1;;;15462:32:113;;;;;;;;;;;15401:93;15558:18;;-1:-1:-1;;;15558:18:113;;;;:22;15554:60;;15589:25;;-1:-1:-1;;;15589:25:113;;;;;;;;;;;15554:60;15724:25;;15661:89;;-1:-1:-1;;;15661:89:113;;:6;;:12;;:89;;15674:9;;15685:15;;;;15710:4;;15717:5;;-1:-1:-1;;;15724:25:113;;;;;;15661:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15829:16:113;;-1:-1:-1;;;15829:16:113;;;;;:21;;-1:-1:-1;15825:59:113;;-1:-1:-1;15825:59:113;15852:17;;;:32;;;;;;;-1:-1:-1;15852:32:113;;;;;;;;;;;15825:59;15953:13;;;:28;;735:10:69;-1:-1:-1;;;;;;15953:28:113;;;;;;16069:41;;16120:28;;-1:-1:-1;;;16097:12:113;16069:41;;;16120:28;;;-1:-1:-1;;;16120:28:113;;;;;;;16158:22;;;:40;16183:15;;16158:22;:40;:::i;:::-;-1:-1:-1;16208:10:113;;;:22;16221:9;16208:10;:22;:::i;:::-;-1:-1:-1;16240:12:113;;;:20;;;16325:21;;16316:95;;-1:-1:-1;;;16316:95:113;;16300:12;;-1:-1:-1;;;;;16325:21:113;;16316:46;;:95;;735:10:69;;16377:9:113;;16388:15;;;;16240:20;;16316:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16299:112;;16426:7;16421:51;;16442:30;;-1:-1:-1;;;16442:30:113;;;;;;;;;;;16421:51;16511:75;;;735:10:69;-1:-1:-1;;;;;16511:75:113;;16552:15;;16569:5;16576:9;16511:75;;;;;;;;;:::i;:::-;;;;;;;;16597:15;;;14395:2224;;;;;;;:::o;27814:187::-;6491:13;:11;:13::i;:::-;-1:-1:-1;;;;;27898:25:113;::::1;27894:68;;27932:30;;-1:-1:-1::0;;;27932:30:113::1;;;;;;;;;;;27894:68;27972:8;:22:::0;;-1:-1:-1;;;;;;27972:22:113::1;-1:-1:-1::0;;;;;27972:22:113;;;::::1;::::0;;;::::1;::::0;;27814:187::o;32120:230::-;32245:17;;32222:6;;32245:17;;32240:55;;32271:24;;-1:-1:-1;;;32271:24:113;;;;;;;;;;;32240:55;-1:-1:-1;;;;32120:230:113;;;;;;;;;:::o;38307:127::-;38405:18;;;;:8;:18;;;;;:22;;38398:29;;38368:18;;38405:22;38398:29;;;:::i;6885:128::-;6935:38;735:10:69;4235:17:113;6935:12;:38::i;:::-;:43;;6977:1;6935:43;6931:75;;6987:19;;-1:-1:-1;;;6987:19:113;;;;;;;;;;;10913:533;735:10:69;-1:-1:-1;;;;;11075:24:113;;;11071:146;;11115:41;4235:17;735:10:69;11150:5:113;11115:8;:41::i;:::-;11170:36;4235:17;11191:8;11201:4;11170:8;:36::i;:::-;11265:13;;:17;11261:145;;11303:9;11298:98;11322:6;:13;11318:1;:17;11298:98;;;11360:5;11371:6;11378:1;11371:9;;;;;;;;:::i;:::-;;;;;;;;;;;;11360:21;;;;;;;-1:-1:-1;11360:21:113;;;;;;;;;;;11371:9;;11360:21;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11360:21:113;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;11337:3:113;;11298:98;;;;11261:145;-1:-1:-1;;11415:17:113;:24;;-1:-1:-1;;11415:24:113;11435:4;11415:24;;;10913:533::o;6581:116::-;735:10:69;6656:4:113;6632:29;6628:62;;6670:20;;-1:-1:-1;;;6670:20:113;;;;;;;;;;;27253:192;27336:55;;-1:-1:-1;;;27336:55:113;;27360:5;27336:55;;;43352:25:187;43393:18;;;43386:34;;;-1:-1:-1;;;;;43456:55:187;;43436:18;;;43429:83;43555:14;;43548:22;43528:18;;;43521:50;27336:15:113;;:23;;43324:19:187;;27336:55:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27431:6;27406:32;;27422:7;-1:-1:-1;;;;;27406:32:113;27414:6;27406:32;;;;;;;;;;27253:192;;;:::o;24362:243::-;24462:96;;-1:-1:-1;;;24462:96:113;;:15;;:28;;:96;;24491:8;;24501:10;;24513:9;;24524:15;;24541:16;;24462:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24573:25:113;;;;;;-1:-1:-1;24573:25:113;;-1:-1:-1;24573:25:113;;;24362:243;;:::o;21797:1562::-;21907:21;21931:18;;;:8;:18;;;;;22076:17;;;;:22;;:48;;-1:-1:-1;22102:18:113;;-1:-1:-1;;;22102:18:113;;;;:22;;22076:48;:74;;;-1:-1:-1;22128:18:113;;-1:-1:-1;;;22128:18:113;;;;:22;;22076:74;:100;;;-1:-1:-1;22154:18:113;;-1:-1:-1;;;22154:18:113;;;;:22;;22076:100;:173;;;-1:-1:-1;22215:19:113;;;;22196:16;;22237:12;;22196:38;;22215:19;;;;;-1:-1:-1;;;22196:16:113;;;;:38;:::i;:::-;:53;;;22076:173;22059:266;;;22281:33;;-1:-1:-1;;;22281:33:113;;;;;;;;;;;22059:266;22454:16;;-1:-1:-1;;;22454:16:113;;;;22485:34;22500:7;22454:16;22485:14;:34::i;:::-;22480:75;;22528:27;;-1:-1:-1;;;22528:27:113;;;;;;;;;;;22480:75;22864:19;22886:24;22900:9;22886:13;:24::i;:::-;:36;;-1:-1:-1;;;22936:26:113;;;;;:83;;-1:-1:-1;23003:16:113;;-1:-1:-1;;;23003:16:113;;;;22966:34;22979:7;22988:11;22966:12;:34::i;:::-;:53;;;22936:83;22932:151;;;23042:30;;-1:-1:-1;;;23042:30:113;;;;;;;;;;;22932:151;-1:-1:-1;;;;;23143:24:113;;;;;;:15;;;:24;;;;;;;;23139:62;;;23176:25;;-1:-1:-1;;;23176:25:113;;;;;;;;;;;23139:62;23254:38;23265:8;23275:7;23284;23254:10;:38::i;:::-;23336:7;23308:44;;23326:8;23317:7;-1:-1:-1;;;;;23308:44:113;;23345:6;23308:44;;;;;;:::i;:::-;;;;;;;;21897:1462;;;21797:1562;;;;:::o;28671:849::-;28736:4;28841:18;;;:8;:18;;;;;28914:24;;28736:4;;28900:39;;-1:-1:-1;;;28914:24:113;;;;28900:13;:39::i;:::-;29159:33;;;;29344:17;;;;;;-1:-1:-1;;;;29159:33:113;;;;;29344:22;;;;:168;;-1:-1:-1;29470:27:113;;;;4488:3;;29444:53;;29470:27;-1:-1:-1;;;29470:27:113;;;;;-1:-1:-1;;;29444:23:113;;;:53;:::i;:::-;29443:69;;;;;;:::i;:::-;29402:17;;;;29386:33;;;;:13;:33;:::i;:::-;:126;;29336:177;28671:849;-1:-1:-1;;;;;28671:849:113:o;29724:709::-;29789:4;29900:18;;;:8;:18;;;;;29973:24;;29789:4;;29959:39;;-1:-1:-1;;;29973:24:113;;;;29959:13;:39::i;:::-;30129:33;;;;30323:17;;;;;;-1:-1:-1;;;;30129:33:113;;;;;30323:22;;;;:103;;-1:-1:-1;30389:23:113;;;;:37;;4488:3;;-1:-1:-1;;;30389:23:113;;;;:37;:::i;:::-;30365:20;;;;30349:36;;;;:13;:36;:::i;6105:126:81:-;6151:13;6183:41;:5;6210:13;6183:26;:41::i;:::-;6176:48;;6105:126;:::o;6557:135::-;6606:13;6638:47;:8;6668:16;6638:29;:47::i;30924:159:113:-;31013:63;;-1:-1:-1;;;31013:63:113;;31039:8;31013:63;;;45425:25:187;45466:18;;;45459:34;;;-1:-1:-1;;;;;45529:55:187;;45509:18;;;45502:83;45633:4;45621:17;;45601:18;;;45594:45;31013:15:113;;:25;;45397:19:187;;31013:63:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30924:159;;;:::o;3376:267:76:-;3470:13;1390:66;3499:46;;3495:142;;3568:15;3577:5;3568:8;:15::i;:::-;3561:22;;;;3495:142;3621:5;3614:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:380;2139:13;2164:11;2178:16;2189:4;2178:10;:16::i;:::-;2302;;;2313:4;2302:16;;;;;;;;;2164:30;;-1:-1:-1;2282:17:76;;2302:16;;;;;;;;;-1:-1:-1;;;2367:16:76;;;-1:-1:-1;2412:4:76;2403:14;;2396:28;;;;-1:-1:-1;2367:16:76;2080:380::o;2532:247::-;2593:7;2665:4;2629:40;;2692:4;2683:13;;2679:71;;;2719:20;;-1:-1:-1;;;2719:20:76;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;448:286:187;506:6;559:2;547:9;538:7;534:23;530:32;527:52;;;575:1;572;565:12;527:52;601:23;;-1:-1:-1;;;;;;653:32:187;;643:43;;633:71;;700:1;697;690:12;633:71;723:5;448:286;-1:-1:-1;;;448:286:187:o;931:226::-;990:6;1043:2;1031:9;1022:7;1018:23;1014:32;1011:52;;;1059:1;1056;1049:12;1011:52;-1:-1:-1;1104:23:187;;931:226;-1:-1:-1;931:226:187:o;1162:289::-;1204:3;1242:5;1236:12;1269:6;1264:3;1257:19;1325:6;1318:4;1311:5;1307:16;1300:4;1295:3;1291:14;1285:47;1377:1;1370:4;1361:6;1356:3;1352:16;1348:27;1341:38;1440:4;1433:2;1429:7;1424:2;1416:6;1412:15;1408:29;1403:3;1399:39;1395:50;1388:57;;;1162:289;;;;:::o;1456:220::-;1605:2;1594:9;1587:21;1568:4;1625:45;1666:2;1655:9;1651:18;1643:6;1625:45;:::i;1681:159::-;1748:20;;1808:6;1797:18;;1787:29;;1777:57;;1830:1;1827;1820:12;1845:184;1903:6;1956:2;1944:9;1935:7;1931:23;1927:32;1924:52;;;1972:1;1969;1962:12;1924:52;1995:28;2013:9;1995:28;:::i;2523:367::-;2586:8;2596:6;2650:3;2643:4;2635:6;2631:17;2627:27;2617:55;;2668:1;2665;2658:12;2617:55;-1:-1:-1;2691:20:187;;-1:-1:-1;;;;;2723:30:187;;2720:50;;;2766:1;2763;2756:12;2720:50;2803:4;2795:6;2791:17;2779:29;;2863:3;2856:4;2846:6;2843:1;2839:14;2831:6;2827:27;2823:38;2820:47;2817:67;;;2880:1;2877;2870:12;2817:67;2523:367;;;;;:::o;2895:1298::-;3081:6;3089;3097;3105;3113;3121;3129;3137;3190:3;3178:9;3169:7;3165:23;3161:33;3158:53;;;3207:1;3204;3197:12;3158:53;3230:28;3248:9;3230:28;:::i;:::-;3220:38;-1:-1:-1;3327:2:187;3312:18;;3299:32;;-1:-1:-1;3406:2:187;3391:18;;3378:32;-1:-1:-1;;;;;3422:30:187;;3419:50;;;3465:1;3462;3455:12;3419:50;3504:70;3566:7;3557:6;3546:9;3542:22;3504:70;:::i;:::-;3593:8;;-1:-1:-1;3478:96:187;-1:-1:-1;;3681:2:187;3666:18;;3653:32;-1:-1:-1;;;;;3697:32:187;;3694:52;;;3742:1;3739;3732:12;3694:52;3781:72;3845:7;3834:8;3823:9;3819:24;3781:72;:::i;:::-;3872:8;;-1:-1:-1;3755:98:187;-1:-1:-1;;3960:3:187;3945:19;;3932:33;-1:-1:-1;;;;;3977:32:187;;3974:52;;;4022:1;4019;4012:12;3974:52;4061:72;4125:7;4114:8;4103:9;4099:24;4061:72;:::i;:::-;2895:1298;;;;-1:-1:-1;2895:1298:187;;-1:-1:-1;2895:1298:187;;;;;;4152:8;-1:-1:-1;;;2895:1298:187:o;4581:347::-;4632:8;4642:6;4696:3;4689:4;4681:6;4677:17;4673:27;4663:55;;4714:1;4711;4704:12;4663:55;-1:-1:-1;4737:20:187;;-1:-1:-1;;;;;4769:30:187;;4766:50;;;4812:1;4809;4802:12;4766:50;4849:4;4841:6;4837:17;4825:29;;4901:3;4894:4;4885:6;4877;4873:19;4869:30;4866:39;4863:59;;;4918:1;4915;4908:12;4933:595;5020:6;5028;5036;5044;5097:2;5085:9;5076:7;5072:23;5068:32;5065:52;;;5113:1;5110;5103:12;5065:52;5136:28;5154:9;5136:28;:::i;:::-;5126:38;;5215:2;5204:9;5200:18;5187:32;-1:-1:-1;;;;;5234:6:187;5231:30;5228:50;;;5274:1;5271;5264:12;5228:50;5313:58;5363:7;5354:6;5343:9;5339:22;5313:58;:::i;:::-;4933:595;;5390:8;;-1:-1:-1;5287:84:187;;5494:2;5479:18;5466:32;;4933:595;-1:-1:-1;;;;4933:595:187:o;5715:154::-;-1:-1:-1;;;;;5794:5:187;5790:54;5783:5;5780:65;5770:93;;5859:1;5856;5849:12;5874:806;5971:6;5979;5987;5995;6003;6056:3;6044:9;6035:7;6031:23;6027:33;6024:53;;;6073:1;6070;6063:12;6024:53;6112:9;6099:23;6131:31;6156:5;6131:31;:::i;:::-;6181:5;-1:-1:-1;6238:2:187;6223:18;;6210:32;6251:33;6210:32;6251:33;:::i;:::-;6303:7;-1:-1:-1;6383:2:187;6368:18;;6355:32;;-1:-1:-1;6464:2:187;6449:18;;6436:32;-1:-1:-1;;;;;6480:30:187;;6477:50;;;6523:1;6520;6513:12;6477:50;6562:58;6612:7;6603:6;6592:9;6588:22;6562:58;:::i;:::-;5874:806;;;;-1:-1:-1;5874:806:187;;-1:-1:-1;6639:8:187;;6536:84;5874:806;-1:-1:-1;;;5874:806:187:o;7123:346::-;7191:6;7199;7252:2;7240:9;7231:7;7227:23;7223:32;7220:52;;;7268:1;7265;7258:12;7220:52;-1:-1:-1;;7313:23:187;;;7433:2;7418:18;;;7405:32;;-1:-1:-1;7123:346:187:o;7474:367::-;7542:6;7550;7603:2;7591:9;7582:7;7578:23;7574:32;7571:52;;;7619:1;7616;7609:12;7571:52;7664:23;;;-1:-1:-1;7763:2:187;7748:18;;7735:32;7776:33;7735:32;7776:33;:::i;:::-;7828:7;7818:17;;;7474:367;;;;;:::o;8651:127::-;8712:10;8707:3;8703:20;8700:1;8693:31;8743:4;8740:1;8733:15;8767:4;8764:1;8757:15;8783:255;8855:2;8849:9;8897:6;8885:19;;-1:-1:-1;;;;;8919:34:187;;8955:22;;;8916:62;8913:88;;;8981:18;;:::i;:::-;9017:2;9010:22;8783:255;:::o;9043:253::-;9115:2;9109:9;9157:4;9145:17;;-1:-1:-1;;;;;9177:34:187;;9213:22;;;9174:62;9171:88;;;9239:18;;:::i;9301:257::-;9373:4;9367:11;;;9405:17;;-1:-1:-1;;;;;9437:34:187;;9473:22;;;9434:62;9431:88;;;9499:18;;:::i;9563:275::-;9634:2;9628:9;9699:2;9680:13;;-1:-1:-1;;9676:27:187;9664:40;;-1:-1:-1;;;;;9719:34:187;;9755:22;;;9716:62;9713:88;;;9781:18;;:::i;:::-;9817:2;9810:22;9563:275;;-1:-1:-1;9563:275:187:o;9843:450::-;9908:5;9940:1;-1:-1:-1;;;;;9956:6:187;9953:30;9950:56;;;9986:18;;:::i;:::-;-1:-1:-1;10052:2:187;10031:15;;-1:-1:-1;;10027:29:187;10058:4;10023:40;10081:21;10023:40;10081:21;:::i;:::-;10072:30;;;10125:6;10118:5;10111:21;10165:3;10156:6;10151:3;10147:16;10144:25;10141:45;;;10182:1;10179;10172:12;10141:45;10231:6;10226:3;10219:4;10212:5;10208:16;10195:43;10285:1;10278:4;10269:6;10262:5;10258:18;10254:29;10247:40;9843:450;;;;;:::o;10298:222::-;10341:5;10394:3;10387:4;10379:6;10375:17;10371:27;10361:55;;10412:1;10409;10402:12;10361:55;10434:80;10510:3;10501:6;10488:20;10481:4;10473:6;10469:17;10434:80;:::i;10525:163::-;10592:20;;10652:10;10641:22;;10631:33;;10621:61;;10678:1;10675;10668:12;10693:156;10759:20;;10819:4;10808:16;;10798:27;;10788:55;;10839:1;10836;10829:12;10854:842;10911:5;10959:6;10947:9;10942:3;10938:19;10934:32;10931:52;;;10979:1;10976;10969:12;10931:52;11001:22;;:::i;:::-;11068:23;;11100:22;;10992:31;-1:-1:-1;11154:37:187;11187:2;11172:18;;11154:37;:::i;:::-;11149:2;11142:5;11138:14;11131:61;11224:37;11257:2;11246:9;11242:18;11224:37;:::i;:::-;11219:2;11212:5;11208:14;11201:61;11294:37;11327:2;11316:9;11312:18;11294:37;:::i;:::-;11289:2;11282:5;11278:14;11271:61;11365:38;11398:3;11387:9;11383:19;11365:38;:::i;:::-;11359:3;11352:5;11348:15;11341:63;11437:38;11470:3;11459:9;11455:19;11437:38;:::i;:::-;11431:3;11424:5;11420:15;11413:63;11509:37;11541:3;11530:9;11526:19;11509:37;:::i;:::-;11503:3;11496:5;11492:15;11485:62;11580:37;11612:3;11601:9;11597:19;11580:37;:::i;:::-;11574:3;11567:5;11563:15;11556:62;11651:38;11684:3;11673:9;11669:19;11651:38;:::i;:::-;11645:3;11638:5;11634:15;11627:63;10854:842;;;;:::o;11701:903::-;11763:5;11811:6;11799:9;11794:3;11790:19;11786:32;11783:52;;;11831:1;11828;11821:12;11783:52;11853:22;;:::i;:::-;11844:31;;11911:9;11898:23;-1:-1:-1;;;;;11936:6:187;11933:30;11930:50;;;11976:1;11973;11966:12;11930:50;12003:46;12045:3;12036:6;12025:9;12021:22;12003:46;:::i;:::-;11996:5;11989:61;;12102:2;12091:9;12087:18;12074:32;12115:33;12140:7;12115:33;:::i;:::-;12175:2;12164:14;;12157:31;12241:2;12226:18;;12213:32;-1:-1:-1;;;;;12257:32:187;;12254:52;;;12302:1;12299;12292:12;12254:52;12325:24;;12380:4;12372:13;;12368:23;-1:-1:-1;12358:51:187;;12405:1;12402;12395:12;12358:51;12441:70;12507:3;12502:2;12489:16;12484:2;12480;12476:11;12441:70;:::i;:::-;12436:2;12429:5;12425:14;12418:94;;12544:53;12593:3;12588:2;12577:9;12573:18;12544:53;:::i;:::-;12539:2;12532:5;12528:14;12521:77;11701:903;;;;:::o;12609:362::-;12702:6;12755:2;12743:9;12734:7;12730:23;12726:32;12723:52;;;12771:1;12768;12761:12;12723:52;12811:9;12798:23;-1:-1:-1;;;;;12836:6:187;12833:30;12830:50;;;12876:1;12873;12866:12;12830:50;12899:66;12957:7;12948:6;12937:9;12933:22;12899:66;:::i;:::-;12889:76;12609:362;-1:-1:-1;;;;12609:362:187:o;12976:247::-;13035:6;13088:2;13076:9;13067:7;13063:23;13059:32;13056:52;;;13104:1;13101;13094:12;13056:52;13143:9;13130:23;13162:31;13187:5;13162:31;:::i;13228:812::-;13334:6;13342;13350;13358;13366;13419:3;13407:9;13398:7;13394:23;13390:33;13387:53;;;13436:1;13433;13426:12;13387:53;13459:28;13477:9;13459:28;:::i;:::-;13449:38;;13538:2;13527:9;13523:18;13510:32;-1:-1:-1;;;;;13557:6:187;13554:30;13551:50;;;13597:1;13594;13587:12;13551:50;13636:58;13686:7;13677:6;13666:9;13662:22;13636:58;:::i;:::-;13713:8;;-1:-1:-1;13610:84:187;-1:-1:-1;;13817:2:187;13802:18;;13789:32;;-1:-1:-1;13898:2:187;13883:18;;13870:32;-1:-1:-1;;;;;13914:32:187;;13911:52;;;13959:1;13956;13949:12;13911:52;13982;14026:7;14015:8;14004:9;14000:24;13982:52;:::i;:::-;13972:62;;;13228:812;;;;;;;;:::o;14045:182::-;14102:6;14155:2;14143:9;14134:7;14130:23;14126:32;14123:52;;;14171:1;14168;14161:12;14123:52;14194:27;14211:9;14194:27;:::i;14479:324::-;14551:6;14559;14567;14620:2;14608:9;14599:7;14595:23;14591:32;14588:52;;;14636:1;14633;14626:12;14588:52;14659:27;14676:9;14659:27;:::i;:::-;14649:37;;14705:36;14737:2;14726:9;14722:18;14705:36;:::i;:::-;14695:46;;14760:37;14793:2;14782:9;14778:18;14760:37;:::i;:::-;14750:47;;14479:324;;;;;:::o;15031:118::-;15117:5;15110:13;15103:21;15096:5;15093:32;15083:60;;15139:1;15136;15129:12;15154:382;15219:6;15227;15280:2;15268:9;15259:7;15255:23;15251:32;15248:52;;;15296:1;15293;15286:12;15248:52;15335:9;15322:23;15354:31;15379:5;15354:31;:::i;:::-;15404:5;-1:-1:-1;15461:2:187;15446:18;;15433:32;15474:30;15433:32;15474:30;:::i;16289:296::-;16355:6;16363;16416:2;16404:9;16395:7;16391:23;16387:32;16384:52;;;16432:1;16429;16422:12;16384:52;16477:23;;;-1:-1:-1;16543:36:187;16575:2;16560:18;;16543:36;:::i;:::-;16533:46;;16289:296;;;;;:::o;16590:198::-;16665:4;-1:-1:-1;;;;;16690:6:187;16687:30;16684:56;;;16720:18;;:::i;:::-;-1:-1:-1;16765:1:187;16761:14;16777:4;16757:25;;16590:198::o;16793:1108::-;16911:6;16964:2;16952:9;16943:7;16939:23;16935:32;16932:52;;;16980:1;16977;16970:12;16932:52;17020:9;17007:23;-1:-1:-1;;;;;17045:6:187;17042:30;17039:50;;;17085:1;17082;17075:12;17039:50;17108:22;;17161:4;17153:13;;17149:27;-1:-1:-1;17139:55:187;;17190:1;17187;17180:12;17139:55;17230:2;17217:16;17253:79;17269:62;17324:6;17269:62;:::i;:::-;17253:79;:::i;:::-;17354:3;17378:6;17373:3;17366:19;17410:2;17405:3;17401:12;17394:19;;17465:2;17455:6;17452:1;17448:14;17444:2;17440:23;17436:32;17422:46;;17491:7;17483:6;17480:19;17477:39;;;17512:1;17509;17502:12;17477:39;17544:2;17540;17536:11;17556:315;17572:6;17567:3;17564:15;17556:315;;;17658:3;17645:17;-1:-1:-1;;;;;17681:11:187;17678:35;17675:55;;;17726:1;17723;17716:12;17675:55;17755:73;17820:7;17815:2;17801:11;17797:2;17793:20;17789:29;17755:73;:::i;:::-;17743:86;;-1:-1:-1;17858:2:187;17849:12;;;;17589;17556:315;;;-1:-1:-1;17890:5:187;16793:1108;-1:-1:-1;;;;;;16793:1108:187:o;17906:345::-;18055:2;18040:18;;18088:1;18077:13;;18067:144;;18133:10;18128:3;18124:20;18121:1;18114:31;18168:4;18165:1;18158:15;18196:4;18193:1;18186:15;18067:144;18220:25;;;17906:345;:::o;18256:652::-;18353:6;18361;18369;18422:2;18410:9;18401:7;18397:23;18393:32;18390:52;;;18438:1;18435;18428:12;18390:52;18483:23;;;-1:-1:-1;18581:2:187;18566:18;;18553:32;-1:-1:-1;;;;;18597:30:187;;18594:50;;;18640:1;18637;18630:12;18594:50;18663;18705:7;18696:6;18685:9;18681:22;18663:50;:::i;:::-;18653:60;;;18766:2;18755:9;18751:18;18738:32;-1:-1:-1;;;;;18785:8:187;18782:32;18779:52;;;18827:1;18824;18817:12;18779:52;18850;18894:7;18883:8;18872:9;18868:24;18850:52;:::i;:::-;18840:62;;;18256:652;;;;;:::o;18913:594::-;19000:6;19008;19016;19024;19077:2;19065:9;19056:7;19052:23;19048:32;19045:52;;;19093:1;19090;19083:12;19045:52;19138:23;;;-1:-1:-1;19204:36:187;19236:2;19221:18;;19204:36;:::i;:::-;19194:46;;19291:2;19280:9;19276:18;19263:32;-1:-1:-1;;;;;19310:6:187;19307:30;19304:50;;;19350:1;19347;19340:12;19304:50;19389:58;19439:7;19430:6;19419:9;19415:22;19389:58;:::i;:::-;18913:594;;;;-1:-1:-1;19466:8:187;-1:-1:-1;;;;18913:594:187:o;19592:911::-;19674:5;19668:12;19663:3;19656:25;19742:10;19734:4;19727:5;19723:16;19717:23;19713:40;19706:4;19701:3;19697:14;19690:64;19815:10;19807:4;19800:5;19796:16;19790:23;19786:40;19779:4;19774:3;19770:14;19763:64;19873:4;19866:5;19862:16;19856:23;19888:47;19929:4;19924:3;19920:14;19906:12;7922:10;7911:22;7899:35;;7846:94;19888:47;;19983:4;19976:5;19972:16;19966:23;19998:49;20041:4;20036:3;20032:14;20016;2311:6;2300:18;2288:31;;2235:90;19998:49;;20095:4;20088:5;20084:16;20078:23;20110:49;20153:4;20148:3;20144:14;20128;2311:6;2300:18;2288:31;;2235:90;20110:49;;20207:4;20200:5;20196:16;20190:23;20222:48;20264:4;20259:3;20255:14;20239;19579:4;19568:16;19556:29;;19512:75;20222:48;;20318:4;20311:5;20307:16;20301:23;20333:48;20375:4;20370:3;20366:14;20350;19579:4;19568:16;19556:29;;19512:75;20333:48;;20429:6;20422:5;20418:18;20412:25;20446:51;20489:6;20484:3;20480:16;20464:14;7922:10;7911:22;7899:35;;7846:94;20446:51;;19592:911;;:::o;20508:258::-;20700:3;20685:19;;20713:47;20689:9;20742:6;20713:47;:::i;20771:1261::-;21177:3;21172;21168:13;21160:6;21156:26;21145:9;21138:45;21219:3;21214:2;21203:9;21199:18;21192:31;21119:4;21246:46;21287:3;21276:9;21272:19;21264:6;21246:46;:::i;:::-;21340:9;21332:6;21328:22;21323:2;21312:9;21308:18;21301:50;21374:33;21400:6;21392;21374:33;:::i;:::-;21438:2;21423:18;;21416:34;;;-1:-1:-1;;;;;21487:55:187;;21481:3;21466:19;;21459:84;21574:3;21559:19;;21552:35;;;21624:22;;;21618:3;21603:19;;21596:51;21696:13;;21718:22;;;21768:2;21794:15;;;;-1:-1:-1;21756:15:187;;;;-1:-1:-1;21837:169:187;21851:6;21848:1;21845:13;21837:169;;;21912:13;;21900:26;;21955:2;21981:15;;;;21946:12;;;;21873:1;21866:9;21837:169;;;-1:-1:-1;22023:3:187;;20771:1261;-1:-1:-1;;;;;;;;;;;20771:1261:187:o;22037:1120::-;22088:5;22136:4;22124:9;22119:3;22115:19;22111:30;22108:50;;;22154:1;22151;22144:12;22108:50;22176:22;;:::i;:::-;22167:31;;22234:9;22221:23;-1:-1:-1;;;;;22259:6:187;22256:30;22253:50;;;22299:1;22296;22289:12;22253:50;22322:22;;22375:4;22367:13;;22363:23;-1:-1:-1;22353:51:187;;22400:1;22397;22390:12;22353:51;22440:2;22427:16;22463:79;22479:62;22534:6;22479:62;:::i;22463:79::-;22564:3;22588:6;22583:3;22576:19;22620:4;22615:3;22611:14;22604:21;;22677:4;22667:6;22664:1;22660:14;22656:2;22652:23;22648:34;22634:48;;22705:3;22697:6;22694:15;22691:35;;;22722:1;22719;22712:12;22691:35;22754:4;22750:2;22746:13;22735:24;;22768:151;22784:6;22779:3;22776:15;22768:151;;;22852:22;22870:3;22852:22;:::i;:::-;22840:35;;22904:4;22801:14;;;;22895;;;;22768:151;;;22928:20;;-1:-1:-1;;;23001:4:187;22986:20;;22973:34;-1:-1:-1;;;;;23019:32:187;;23016:52;;;23064:1;23061;23054:12;23016:52;23102:48;23146:3;23135:8;23124:9;23120:24;23102:48;:::i;:::-;23095:4;23088:5;23084:16;23077:74;;22037:1120;;;;:::o;23162:1221::-;23278:6;23286;23339:2;23327:9;23318:7;23314:23;23310:32;23307:52;;;23355:1;23352;23345:12;23307:52;23394:9;23381:23;23413:31;23438:5;23413:31;:::i;:::-;23463:5;-1:-1:-1;23519:2:187;23504:18;;23491:32;-1:-1:-1;;;;;23535:30:187;;23532:50;;;23578:1;23575;23568:12;23532:50;23601:22;;23654:4;23646:13;;23642:27;-1:-1:-1;23632:55:187;;23683:1;23680;23673:12;23632:55;23723:2;23710:16;23746:79;23762:62;23817:6;23762:62;:::i;23746:79::-;23847:3;23871:6;23866:3;23859:19;23903:2;23898:3;23894:12;23887:19;;23958:2;23948:6;23945:1;23941:14;23937:2;23933:23;23929:32;23915:46;;23984:7;23976:6;23973:19;23970:39;;;24005:1;24002;23995:12;23970:39;24037:2;24033;24029:11;24049:304;24065:6;24060:3;24057:15;24049:304;;;24151:3;24138:17;-1:-1:-1;;;;;24174:11:187;24171:35;24168:55;;;24219:1;24216;24209:12;24168:55;24248:62;24302:7;24297:2;24283:11;24279:2;24275:20;24271:29;24248:62;:::i;:::-;24236:75;;-1:-1:-1;24340:2:187;24331:12;;;;24082;24049:304;;;24053:3;24372:5;24362:15;;;;;;23162:1221;;;;;:::o;24388:298::-;24455:6;24463;24516:2;24504:9;24495:7;24491:23;24487:32;24484:52;;;24532:1;24529;24522:12;24484:52;24555:28;24573:9;24555:28;:::i;:::-;24545:38;24652:2;24637:18;;;;24624:32;;-1:-1:-1;;;24388:298:187:o;24691:319::-;24758:6;24766;24819:2;24807:9;24798:7;24794:23;24790:32;24787:52;;;24835:1;24832;24825:12;24787:52;24874:9;24861:23;24893:31;24918:5;24893:31;:::i;:::-;24943:5;-1:-1:-1;24967:37:187;25000:2;24985:18;;24967:37;:::i;25015:432::-;25067:3;25105:5;25099:12;25132:6;25127:3;25120:19;25164:4;25159:3;25155:14;25148:21;;25203:4;25196:5;25192:16;25226:1;25236:186;25250:6;25247:1;25244:13;25236:186;;;25315:13;;25330:6;25311:26;25299:39;;25367:4;25358:14;;;;25395:17;;;;25272:1;25265:9;25236:186;;;-1:-1:-1;25438:3:187;;25015:432;-1:-1:-1;;;;25015:432:187:o;25452:258::-;25629:2;25618:9;25611:21;25592:4;25649:55;25700:2;25689:9;25685:18;25677:6;25649:55;:::i;25715:322::-;25784:6;25837:2;25825:9;25816:7;25812:23;25808:32;25805:52;;;25853:1;25850;25843:12;25805:52;25893:9;25880:23;-1:-1:-1;;;;;25918:6:187;25915:30;25912:50;;;25958:1;25955;25948:12;25912:50;25981;26023:7;26014:6;26003:9;25999:22;25981:50;:::i;26042:340::-;26124:6;26177:2;26165:9;26156:7;26152:23;26148:32;26145:52;;;26193:1;26190;26183:12;26145:52;26233:9;26220:23;-1:-1:-1;;;;;26258:6:187;26255:30;26252:50;;;26298:1;26295;26288:12;26252:50;26321:55;26368:7;26359:6;26348:9;26344:22;26321:55;:::i;26387:1349::-;26547:6;26555;26563;26571;26579;26587;26595;26603;26656:3;26644:9;26635:7;26631:23;26627:33;26624:53;;;26673:1;26670;26663:12;26624:53;26712:9;26699:23;26731:31;26756:5;26731:31;:::i;:::-;26781:5;-1:-1:-1;26838:2:187;26823:18;;26810:32;26851:33;26810:32;26851:33;:::i;:::-;26903:7;-1:-1:-1;26961:2:187;26946:18;;26933:32;-1:-1:-1;;;;;26977:30:187;;26974:50;;;27020:1;27017;27010:12;26974:50;27059:70;27121:7;27112:6;27101:9;27097:22;27059:70;:::i;:::-;27148:8;;-1:-1:-1;27033:96:187;-1:-1:-1;;27236:2:187;27221:18;;27208:32;-1:-1:-1;;;;;27252:32:187;;27249:52;;;27297:1;27294;27287:12;27249:52;27336:72;27400:7;27389:8;27378:9;27374:24;27336:72;:::i;:::-;27427:8;;-1:-1:-1;27310:98:187;-1:-1:-1;;27515:3:187;27500:19;;27487:33;-1:-1:-1;;;;;27532:32:187;;27529:52;;;27577:1;27574;27567:12;27529:52;27616:60;27668:7;27657:8;27646:9;27642:24;27616:60;:::i;27741:367::-;27809:6;27817;27870:2;27858:9;27849:7;27845:23;27841:32;27838:52;;;27886:1;27883;27876:12;27838:52;27925:9;27912:23;27944:31;27969:5;27944:31;:::i;28373:927::-;28479:6;28487;28495;28503;28511;28519;28572:3;28560:9;28551:7;28547:23;28543:33;28540:53;;;28589:1;28586;28579:12;28540:53;28628:9;28615:23;28647:31;28672:5;28647:31;:::i;:::-;28697:5;-1:-1:-1;28754:2:187;28739:18;;28726:32;28767:33;28726:32;28767:33;:::i;:::-;28819:7;-1:-1:-1;28899:2:187;28884:18;;28871:32;;-1:-1:-1;29002:2:187;28987:18;;28974:32;;-1:-1:-1;29083:3:187;29068:19;;29055:33;-1:-1:-1;;;;;29100:30:187;;29097:50;;;29143:1;29140;29133:12;29097:50;29182:58;29232:7;29223:6;29212:9;29208:22;29182:58;:::i;:::-;28373:927;;;;-1:-1:-1;28373:927:187;;-1:-1:-1;28373:927:187;;29259:8;;28373:927;-1:-1:-1;;;28373:927:187:o;29305:380::-;29384:1;29380:12;;;;29427;;;29448:61;;29502:4;29494:6;29490:17;29480:27;;29448:61;29555:2;29547:6;29544:14;29524:18;29521:38;29518:161;;29601:10;29596:3;29592:20;29589:1;29582:31;29636:4;29633:1;29626:15;29664:4;29661:1;29654:15;29518:161;;29305:380;;;:::o;29690:127::-;29751:10;29746:3;29742:20;29739:1;29732:31;29782:4;29779:1;29772:15;29806:4;29803:1;29796:15;29822:521;29899:4;29905:6;29965:11;29952:25;30059:2;30055:7;30044:8;30028:14;30024:29;30020:43;30000:18;29996:68;29986:96;;30078:1;30075;30068:12;29986:96;30105:33;;30157:20;;;-1:-1:-1;;;;;;30189:30:187;;30186:50;;;30232:1;30229;30222:12;30186:50;30265:4;30253:17;;-1:-1:-1;30296:14:187;30292:27;;;30282:38;;30279:58;;;30333:1;30330;30323:12;30348:271;30531:6;30523;30518:3;30505:33;30487:3;30557:16;;30582:13;;;30557:16;30348:271;-1:-1:-1;30348:271:187:o;30749:517::-;30850:2;30845:3;30842:11;30839:421;;;30886:5;30883:1;30876:16;30930:4;30927:1;30917:18;31000:2;30988:10;30984:19;30981:1;30977:27;30971:4;30967:38;31036:4;31024:10;31021:20;31018:47;;;-1:-1:-1;31059:4:187;31018:47;31114:2;31109:3;31105:12;31102:1;31098:20;31092:4;31088:31;31078:41;;31169:81;31187:2;31180:5;31177:13;31169:81;;;31246:1;31232:16;;31213:1;31202:13;31169:81;;;31173:3;;30749:517;;;:::o;31442:1295::-;31566:3;31560:10;-1:-1:-1;;;;;31585:6:187;31582:30;31579:56;;;31615:18;;:::i;:::-;31644:96;31733:6;31693:38;31725:4;31719:11;31693:38;:::i;:::-;31687:4;31644:96;:::i;:::-;31789:4;31820:2;31809:14;;31837:1;31832:648;;;;32524:1;32541:6;32538:89;;;-1:-1:-1;32593:19:187;;;32587:26;32538:89;-1:-1:-1;;31399:1:187;31395:11;;;31391:24;31387:29;31377:40;31423:1;31419:11;;;31374:57;32640:81;;31802:929;;31832:648;30696:1;30689:14;;;30733:4;30720:18;;-1:-1:-1;;31868:20:187;;;31985:222;31999:7;31996:1;31993:14;31985:222;;;32081:19;;;32075:26;32060:42;;32188:4;32173:20;;;;32141:1;32129:14;;;;32015:12;31985:222;;;31989:3;32235:6;32226:7;32223:19;32220:201;;;32296:19;;;32290:26;-1:-1:-1;;32379:1:187;32375:14;;;32391:3;32371:24;32367:37;32363:42;32348:58;32333:74;;32220:201;-1:-1:-1;;;;32467:1:187;32451:14;;;32447:22;32434:36;;-1:-1:-1;31442:1295:187:o;32941:266::-;33029:6;33024:3;33017:19;33081:6;33074:5;33067:4;33062:3;33058:14;33045:43;-1:-1:-1;33133:1:187;33108:16;;;33126:4;33104:27;;;33097:38;;;;33189:2;33168:15;;;-1:-1:-1;;33164:29:187;33155:39;;;33151:50;;32941:266::o;33212:1030::-;33289:3;33320;33344:6;33339:3;33332:19;33376:4;33371:3;33367:14;33360:21;;33434:4;33424:6;33421:1;33417:14;33410:5;33406:26;33402:37;33462:5;33485:1;33495:721;33509:6;33506:1;33503:13;33495:721;;;33574:16;;;-1:-1:-1;;33570:30:187;33558:43;;33640:20;;33715:14;33711:26;;;-1:-1:-1;;33707:40:187;33683:65;;33673:93;;33762:1;33759;33752:12;33673:93;33794:30;;33915:4;33902:18;;;33853:21;-1:-1:-1;;;;;33936:32:187;;33933:52;;;33981:1;33978;33971:12;33933:52;34034:8;34018:14;34014:29;34005:7;34001:43;33998:63;;;34057:1;34054;34047:12;33998:63;34082:50;34127:4;34117:8;34108:7;34082:50;:::i;:::-;34167:4;34192:14;;;;34074:58;;-1:-1:-1;34155:17:187;;;;;-1:-1:-1;;33531:1:187;33524:9;33495:721;;;-1:-1:-1;34232:4:187;;33212:1030;-1:-1:-1;;;;;;33212:1030:187:o;34247:1364::-;34643:2;34655:21;;;34628:18;;34711:22;;;34595:4;34791:6;34764:3;34749:19;;34595:4;34825:304;34839:6;34836:1;34833:13;34825:304;;;34914:6;34901:20;34934:31;34959:5;34934:31;:::i;:::-;-1:-1:-1;;;;;34990:54:187;34978:67;;35074:4;35102:17;;;;35065:14;;;;34861:1;34854:9;34825:304;;;34829:3;35176:9;35171:3;35167:19;35160:4;35149:9;35145:20;35138:49;35208:6;35203:3;35196:19;35238:66;35230:6;35227:78;35224:98;;;35318:1;35315;35308:12;35224:98;35352:6;35349:1;35345:14;35331:28;;35405:6;35397;35390:4;35385:3;35381:14;35368:44;35431:16;35487:18;;;35507:4;35483:29;;;35478:2;35463:18;;35456:57;35530:75;;35591:13;;35583:6;35575;35530:75;:::i;:::-;35522:83;34247:1364;-1:-1:-1;;;;;;;;;34247:1364:187:o;35929:405::-;36160:6;36152;36148:19;36137:9;36130:38;36204:2;36199;36188:9;36184:18;36177:30;36111:4;36224:61;36281:2;36270:9;36266:18;36258:6;36250;36224:61;:::i;:::-;36216:69;;36321:6;36316:2;36305:9;36301:18;36294:34;35929:405;;;;;;;:::o;36339:184::-;36409:6;36462:2;36450:9;36441:7;36437:23;36433:32;36430:52;;;36478:1;36475;36468:12;36430:52;-1:-1:-1;36501:16:187;;36339:184;-1:-1:-1;36339:184:187:o;36528:127::-;36589:10;36584:3;36580:20;36577:1;36570:31;36620:4;36617:1;36610:15;36644:4;36641:1;36634:15;36660:179;36759:14;36728:22;;;36752;;;36724:51;;36787:23;;36784:49;;;36813:18;;:::i;36844:1194::-;-1:-1:-1;;;;;36961:3:187;36958:27;36955:53;;;36988:18;;:::i;:::-;37017:93;37106:3;37066:38;37098:4;37092:11;37066:38;:::i;:::-;37060:4;37017:93;:::i;:::-;37136:1;37161:2;37156:3;37153:11;37178:1;37173:607;;;;37824:1;37841:3;37838:93;;;-1:-1:-1;37897:19:187;;;37884:33;37838:93;-1:-1:-1;;31399:1:187;31395:11;;;31391:24;31387:29;31377:40;31423:1;31419:11;;;31374:57;37944:78;;37146:886;;37173:607;30696:1;30689:14;;;30733:4;30720:18;;-1:-1:-1;;37209:17:187;;;37323:229;37337:7;37334:1;37331:14;37323:229;;;37426:19;;;37413:33;37398:49;;37533:4;37518:20;;;;37486:1;37474:14;;;;37353:12;37323:229;;;37327:3;37580;37571:7;37568:16;37565:159;;;37704:1;37700:6;37694:3;37688;37685:1;37681:11;37677:21;37673:34;37669:39;37656:9;37651:3;37647:19;37634:33;37630:79;37622:6;37615:95;37565:159;;;37767:1;37761:3;37758:1;37754:11;37750:19;37744:4;37737:33;37146:886;;36844:1194;;;:::o;39345:125::-;39410:9;;;39431:10;;;39428:36;;;39444:18;;:::i;39475:806::-;39865:3;39854:9;39847:22;39906:1;39900:3;39889:9;39885:19;39878:30;39946:3;39939:4;39928:9;39924:20;39917:33;39828:4;39973:62;40030:3;40019:9;40015:19;40007:6;39999;39973:62;:::i;:::-;40071:6;40066:2;40055:9;40051:18;40044:34;40114:6;40109:2;40098:9;40094:18;40087:34;40158:6;40152:3;40141:9;40137:19;40130:35;40214:9;40206:6;40202:22;40196:3;40185:9;40181:19;40174:51;40242:33;40268:6;40260;40242:33;:::i;40635:421::-;40860:2;40849:9;40842:21;40823:4;40886:55;40937:2;40926:9;40922:18;40914:6;40886:55;:::i;:::-;40989:9;40981:6;40977:22;40972:2;40961:9;40957:18;40950:50;41017:33;41043:6;41035;41017:33;:::i;41061:128::-;41128:9;;;41149:11;;;41146:37;;;41163:18;;:::i;41194:618::-;41479:6;41471;41467:19;41456:9;41449:38;41523:3;41518:2;41507:9;41503:18;41496:31;41430:4;41544:62;41601:3;41590:9;41586:19;41578:6;41570;41544:62;:::i;:::-;-1:-1:-1;;;;;41642:55:187;;;;41637:2;41622:18;;41615:83;-1:-1:-1;41729:2:187;41714:18;;41707:34;;;;41790:14;41778:27;41772:3;41757:19;;;41750:56;41536:70;41194:618;-1:-1:-1;;;41194:618:187:o;41817:519::-;-1:-1:-1;;;;;42060:6:187;42056:55;42045:9;42038:74;42160:6;42152;42148:19;42143:2;42132:9;42128:18;42121:47;42204:3;42199:2;42188:9;42184:18;42177:31;42019:4;42225:62;42282:3;42271:9;42267:19;42259:6;42251;42225:62;:::i;:::-;42217:70;;42323:6;42318:2;42307:9;42303:18;42296:34;41817:519;;;;;;;;:::o;42341:245::-;42408:6;42461:2;42449:9;42440:7;42436:23;42432:32;42429:52;;;42477:1;42474;42467:12;42429:52;42509:9;42503:16;42528:28;42550:5;42528:28;:::i;42591:478::-;42824:2;42813:9;42806:21;42787:4;42850:61;42907:2;42896:9;42892:18;42884:6;42876;42850:61;:::i;:::-;42947:6;42942:2;42931:9;42927:18;42920:34;43002:9;42994:6;42990:22;42985:2;42974:9;42970:18;42963:50;43030:33;43056:6;43048;43030:33;:::i;:::-;43022:41;42591:478;-1:-1:-1;;;;;;;42591:478:187:o;43582:1211::-;43973:6;43962:9;43955:25;44016:6;44011:2;44000:9;43996:18;43989:34;44071:6;44063;44059:19;44054:2;44043:9;44039:18;44032:47;44115:3;44110:2;44099:9;44095:18;44088:31;43936:4;44154:6;44148:13;44198:6;44192:3;44181:9;44177:19;44170:35;44228:52;44275:3;44264:9;44260:19;44246:12;44228:52;:::i;:::-;44214:66;;-1:-1:-1;;;;;44339:2:187;44331:6;44327:15;44321:22;44317:71;44311:3;44300:9;44296:19;44289:100;44438:2;44430:6;44426:15;44420:22;44511:3;44507:8;44495:9;44487:6;44483:22;44479:37;44473:3;44462:9;44458:19;44451:66;44540:41;44574:6;44558:14;44540:41;:::i;:::-;44526:55;;;44630:2;44622:6;44618:15;44612:22;44643:65;44703:3;44692:9;44688:19;44672:14;44643:65;:::i;:::-;-1:-1:-1;;;;;;80:54:187;;44782:3;44767:19;;68:67;44725:6;-1:-1:-1;44740:47:187;14:127;44798:167;44893:10;44866:18;;;44886;;;44862:43;;44917:19;;44914:45;;;44939:18;;:::i;44970:168::-;45043:9;;;45074;;45091:15;;;45085:22;;45071:37;45061:71;;45112:18;;:::i","linkReferences":{"src/libraries/Checks.sol":{"Checks":[{"start":5426,"length":20},{"start":6691,"length":20},{"start":10616,"length":20},{"start":11082,"length":20}]},"src/libraries/PowersUtilities.sol":{"PowersUtilities":[{"start":12118,"length":20},{"start":12269,"length":20},{"start":13356,"length":20}]}},"immutableReferences":{"55646":[{"start":13216,"length":32}],"55649":[{"start":13265,"length":32}],"67089":[{"start":3503,"length":32},{"start":4701,"length":32},{"start":6583,"length":32},{"start":10790,"length":32}],"67092":[{"start":2794,"length":32},{"start":5114,"length":32}],"67095":[{"start":3698,"length":32},{"start":4533,"length":32}],"67098":[{"start":2494,"length":32}],"67101":[{"start":3021,"length":32},{"start":12311,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","DENOMINATOR()":"918f8674","FOUNDED_AT()":"5532f99b","MANDATE_REGISTRY()":"9100808e","MAX_CALLDATA_LENGTH()":"edf2a596","MAX_EXECUTIONS_LENGTH()":"f6226e7c","MAX_RETURN_DATA_LENGTH()":"7c1b5539","PUBLIC_ROLE()":"3ca7c02a","addFlow((uint16[],string))":"a3751098","adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))":"24bbb203","assignRole(uint256,address)":"685b824a","blacklistAddress(address,bool)":"455a4396","canCallMandate(address,uint16)":"93d7dae5","cancel(uint16,bytes,uint256)":"12561b1a","castVote(uint256,uint8)":"56781388","castVoteWithReason(uint256,uint8,string)":"7b3c71d3","closeConstitute()":"0d7abeaa","closeConstitute(address)":"7258883f","closeConstitute(address,(uint16[],string)[])":"8973be04","constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])":"5d7c9ce3","editFlowByIndex(uint8,uint8,uint16)":"3fc42d2e","eip712Domain()":"84b0196e","flows(uint256)":"8180d29e","fulfill(uint16,uint256,address[],uint256[],bytes[])":"0de6a601","getActionCalldata(uint256)":"d902bf3a","getActionData(uint256)":"4583476b","getActionReturnData(uint256,uint256)":"41bd157d","getActionState(uint256)":"666ca2d6","getActionUri(uint256)":"f2a0bb75","getActionVoteData(uint256)":"2179e04e","getAdoptedMandate(uint16)":"1031bdb0","getAmountRoleHolders(uint256)":"b4324dd3","getConditions(uint16)":"831af379","getFlowCount()":"afe2658b","getFlowDescriptionAtIndex(uint8)":"36126216","getFlowMandatesAtIndex(uint8)":"9a0435d4","getLatestFulfillment(uint16)":"040b8c24","getMandateActionAtIndex(uint16,uint256)":"8a4359e0","getMandateCounter()":"055dbe10","getQuantityMandateActions(uint16)":"edfd2e87","getRoleHolderAtIndex(uint256,uint256)":"199093bb","getRoleLabel(uint256)":"0398f05f","getRoleMetadata(uint256)":"2d90fe5f","getTreasury()":"3b19e84a","hasRoleSince(address,uint256)":"cc5812cf","hasVoted(uint256,address)":"43859632","isBlacklisted(address)":"fe575a87","labelRole(uint256,string,string)":"76ff7577","mandateCounter()":"e88efe35","name()":"06fdde03","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","paymaster()":"16e4cbf9","propose(uint16,bytes,uint256,string)":"2e2d8253","removeFlow(uint8)":"519fcfb0","request(uint16,bytes,uint256,string)":"ebef6d97","revokeMandate(uint16)":"b367cac0","revokeRole(uint256,address)":"1d0b19e7","setPaymaster(address)":"2a97fa77","setTreasury(address)":"f0f44260","setUri(string)":"9b642de1","supportsInterface(bytes4)":"01ffc9a7","uri()":"eac989f8","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxCallDataLength_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxReturnDataLength_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxExecutionsLength_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"mandateRegistry_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionAlreadyFulfilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionAlreadyInitiated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionNotProposed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ActionNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__AddressBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__AlreadyCastVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CalldataTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CallerNotTargetMandate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotAddPowersAddressAsMember\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotAddZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotCallMandate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotSetPublicRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__CannotSetZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ConstituteClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ConstituteOpen\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ConstitutionAlreadyExecuted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ExecutionArrayTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ExternalContractBlacklisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"}],\"name\":\"Powers__IncorrectInterface\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidCallData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidFlowIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidLabel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMandateId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMandateIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMaxCallDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidMaxExecutionsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidName\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidReturnCallDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__InvalidVoteType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__JoinedAfterVoteStart\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__LabelTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__LockedRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__MandateFulfillCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__MandateNotActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"}],\"name\":\"Powers__MandateNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__MandateRequestFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NoMembersInRole\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NoVoteNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__NotProposerAction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__OnlyPowers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__PayableNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__ProposedActionNotActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__UnexpectedActionState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__UriTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Powers__VoteWithPublicRoleDisallowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"name\":\"ActionFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ActionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"blacklisted\",\"type\":\"bool\"}],\"name\":\"BlacklistSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index1\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"index2\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"FlowAdapted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16[]\",\"name\":\"mandateIds\",\"type\":\"uint16[]\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"name\":\"FlowAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"FlowDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"FundsReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"MandateAdopted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"MandateRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPaymaster\",\"type\":\"address\"}],\"name\":\"PaymasterSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"Powers__Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"ProposedActionCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"executeCalldata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposedActionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"RoleLabel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"access\",\"type\":\"bool\"}],\"name\":\"RoleSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"support\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FOUNDED_AT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANDATE_REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CALLDATA_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_EXECUTIONS_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RETURN_DATA_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PUBLIC_ROLE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16[]\",\"name\":\"mandateIds\",\"type\":\"uint16[]\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"internalType\":\"struct PowersTypes.Flow\",\"name\":\"flow\",\"type\":\"tuple\"}],\"name\":\"addFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allowedRole\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"votingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timelock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"throttleExecution\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"needFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"needNotFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"quorum\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"succeedAt\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"maxExecutionDelay\",\"type\":\"uint32\"}],\"internalType\":\"struct PowersTypes.Conditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"internalType\":\"struct PowersTypes.MandateInitData\",\"name\":\"mandateInitData\",\"type\":\"tuple\"}],\"name\":\"adoptMandate\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"assignRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"blacklisted\",\"type\":\"bool\"}],\"name\":\"blacklistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"canCallMandate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"support\",\"type\":\"uint8\"}],\"name\":\"castVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"support\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"castVoteWithReason\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"closeConstitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"closeConstitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint16[]\",\"name\":\"mandateIds\",\"type\":\"uint16[]\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"internalType\":\"struct PowersTypes.Flow[]\",\"name\":\"_flows\",\"type\":\"tuple[]\"}],\"name\":\"closeConstitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"targetMandate\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allowedRole\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"votingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timelock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"throttleExecution\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"needFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"needNotFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"quorum\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"succeedAt\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"maxExecutionDelay\",\"type\":\"uint32\"}],\"internalType\":\"struct PowersTypes.Conditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"internalType\":\"struct PowersTypes.MandateInitData[]\",\"name\":\"constituentMandates\",\"type\":\"tuple[]\"}],\"name\":\"constitute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index1\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"index2\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"editFlowByIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"flows\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"name\":\"fulfill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionCalldata\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionData\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"uint48\",\"name\":\"proposedAt\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"requestedAt\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"fulfilledAt\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"cancelledAt\",\"type\":\"uint48\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getActionReturnData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionState\",\"outputs\":[{\"internalType\":\"enum PowersTypes.ActionState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionUri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"name\":\"getActionVoteData\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"voteStart\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"voteDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"voteEnd\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"againstVotes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"forVotes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"abstainVotes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"voterCountSnapshot\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getAdoptedMandate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"mandate\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"getAmountRoleHolders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMembers\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getConditions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allowedRole\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"votingPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timelock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"throttleExecution\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"needFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"needNotFulfilled\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"quorum\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"succeedAt\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"maxExecutionDelay\",\"type\":\"uint32\"}],\"internalType\":\"struct PowersTypes.Conditions\",\"name\":\"conditions\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlowCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"getFlowDescriptionAtIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"getFlowMandatesAtIndex\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getLatestFulfillment\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"latestFulfillment\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMandateActionAtIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMandateCounter\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getQuantityMandateActions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"quantityMandateActions\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleHolderAtIndex\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"getRoleLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"getRoleMetadata\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"}],\"name\":\"hasRoleSince\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"since\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasVoted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"labelRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mandateCounter\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uriAction\",\"type\":\"string\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"removeFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uriAction\",\"type\":\"string\"}],\"name\":\"request\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"revokeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPaymaster\",\"type\":\"address\"}],\"name\":\"setPaymaster\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newUri\",\"type\":\"string\"}],\"name\":\"setUri\",\"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\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"ActionFulfilled(uint16,uint256,address[],uint256[],bytes[])\":{\"params\":{\"actionId\":\"the id of the action\",\"calldatas\":\"the calldatas of the action\",\"mandateId\":\"the id of the mandate\",\"targets\":\"the targets of the action\",\"values\":\"the values of the action\"}},\"ActionRequested(address,uint16,bytes,uint256,string)\":{\"params\":{\"caller\":\"the address of the caller\",\"description\":\"the description of the mandate action\",\"mandateCalldata\":\"the calldata of the mandate\",\"mandateId\":\"the id of the mandate\",\"nonce\":\"the nonce of the action\"}},\"BlacklistSet(address,bool)\":{\"params\":{\"account\":\"the address of the account\",\"blacklisted\":\"the blacklisted status of the account\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"FlowAdapted(uint8,uint8,uint16)\":{\"params\":{\"index1\":\"the index of the flow before adaptation\",\"index2\":\"the index of the mandate within the flow\",\"mandateId\":\"the id of the mandate that will be placed at index2 in flow of index1.\"}},\"FlowAdded(uint16[],string)\":{\"params\":{\"mandateIds\":\"the ids of the mandates in the flow\",\"nameDescription\":\"the name and description of the flow\"}},\"FlowDeleted(uint8)\":{\"params\":{\"index\":\"the index of the flow in the flows array\"}},\"FundsReceived(address,uint256)\":{\"params\":{\"sender\":\"the address of the sender\",\"value\":\"the amount of funds received\"}},\"MandateAdopted(uint16)\":{\"params\":{\"mandateId\":\"the id of the mandate\"}},\"MandateRevoked(uint16)\":{\"params\":{\"mandateId\":\"the id of the mandate\"}},\"PaymasterSet(address)\":{\"params\":{\"newPaymaster\":\"the address of the new paymaster\"}},\"Powers__Initialized(address,string,string)\":{\"params\":{\"contractAddress\":\"the address of the contract\",\"name\":\"the name of the contract\",\"uri\":\"the uri of the contract\"}},\"ProposedActionCancelled(uint256)\":{\"params\":{\"actionId\":\"the id of the proposal\"}},\"ProposedActionCreated(uint256,address,uint16,string,bytes,uint256,uint256,uint256,string)\":{\"params\":{\"actionId\":\"the id of the proposal\",\"caller\":\"the address of the caller\",\"description\":\"the description of the proposal\",\"executeCalldata\":\"the calldata to be passed to the mandate\",\"mandateId\":\"the id of the mandate\",\"signature\":\"the signature of the proposal\",\"voteEnd\":\"the end of the voting period\",\"voteStart\":\"the start of the voting period\"}},\"RoleLabel(uint256,string)\":{\"params\":{\"label\":\"the label assigned to the role\",\"roleId\":\"the id of the role\"}},\"RoleSet(uint256,address,bool)\":{\"params\":{\"access\":\"whether the account has access to the role\",\"account\":\"the address of the account that has the role\",\"roleId\":\"the id of the role\"}},\"VoteCast(address,uint256,uint8,string)\":{\"params\":{\"account\":\"the address of the account that cast the vote\",\"actionId\":\"the id of the proposal\",\"reason\":\"the reason for the vote\",\"support\":\"support of the vote: Against, For or Abstain.\"}}},\"kind\":\"dev\",\"methods\":{\"addFlow((uint16[],string))\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"flow\":\"The flow to add\"}},\"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"mandateInitData\":\"The data of the mandate\"}},\"assignRole(uint256,address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"account\":\"The address to grant the role to\",\"roleId\":\"The identifier of the role to assign\"}},\"blacklistAddress(address,bool)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"account\":\"The address to blacklist\",\"blacklisted\":\"The blacklisted status of the account\"}},\"canCallMandate(address,uint16)\":{\"params\":{\"caller\":\"The address attempting to call the mandate\",\"mandateId\":\"The mandate id to check\"},\"returns\":{\"_0\":\"True if the caller has permission, false otherwise\"}},\"cancel(uint16,bytes,uint256)\":{\"details\":\"the account to cancel must be the account that created the proposedAction.\",\"params\":{\"mandateCalldata\":\"The original encoded function call data\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"_0\":\"The unique identifier of the cancelled proposal\"}},\"castVote(uint256,uint8)\":{\"details\":\"Vote types: 0=Against, 1=For, 2=Abstain\",\"params\":{\"actionId\":\"The unique identifier of the proposal\",\"support\":\"The type of vote to cast\"}},\"castVoteWithReason(uint256,uint8,string)\":{\"details\":\"Same as castVote but includes a reason string\",\"params\":{\"actionId\":\"The unique identifier of the proposal\",\"reason\":\"A human-readable explanation for the vote\",\"support\":\"The type of vote to cast\"}},\"closeConstitute()\":{\"details\":\"Can only be called by an admin account\"},\"closeConstitute(address)\":{\"details\":\"Can only be called by an admin account\",\"params\":{\"newAdmin\":\"The address of the new admin account\"}},\"closeConstitute(address,(uint16[],string)[])\":{\"details\":\"Can only be called by an admin account\",\"params\":{\"flows\":\"The initial governance flows to set in the protocol\",\"newAdmin\":\"The address of the new admin account\"}},\"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])\":{\"details\":\"WARNING: any adopted mandate needs to be audited carefully as it will give powers to role holders over the organisation.\",\"params\":{\"mandates\":\"The list of mandate contracts to activate\"}},\"constructor\":{\"params\":{\"mandateRegistry_\":\"MandateRegistry address this org enforces mandate membership against. Pass address(0) to adopt any address implementing IMandate, with no registry restriction.\",\"maxCallDataLength_\":\"maximum length of calldata for a mandate\",\"maxExecutionsLength_\":\"maximum length of executions for a mandate\",\"maxReturnDataLength_\":\"maximum length of return data for a mandate\",\"name_\":\"name of the contract\",\"uri_\":\"uri of the contract\"}},\"editFlowByIndex(uint8,uint8,uint16)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"index1\":\"The index of the flow to edit\",\"index2\":\"The index of the mandate in the flow to replace\",\"mandateId\":\"The id of the new mandate to add to the flow\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"fulfill(uint16,uint256,address[],uint256[],bytes[])\":{\"details\":\"Can only be called by an active mandate contract\",\"params\":{\"actionId\":\"The unique identifier of the action\",\"calldatas\":\"The list of encoded function calls\",\"mandateId\":\"The id of the mandate\",\"targets\":\"The list of contract addresses to call\",\"values\":\"The list of ETH values to send with each call\"}},\"getActionCalldata(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the action\"},\"returns\":{\"callData\":\"The calldata for the action\"}},\"getActionData(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"caller\":\"- the address of the caller\",\"cancelledAt\":\"- the block number at which the action was cancelled\",\"fulfilledAt\":\"- the block number at which the action was fulfilled\",\"mandateId\":\"- the id of the mandate that the action is associated with\",\"nonce\":\"- the nonce of the action\",\"proposedAt\":\"- the block number at which the action was proposed\",\"requestedAt\":\"- the block number at which the action was requested\"}},\"getActionReturnData(uint256,uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the action\",\"index\":\"The index of the return data\"},\"returns\":{\"returnData\":\"The return data for the action\"}},\"getActionState(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"_0\":\"the current state of the proposal\"}},\"getActionUri(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the action\"},\"returns\":{\"_uri\":\"The URI for the action\"}},\"getActionVoteData(uint256)\":{\"params\":{\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"abstainVotes\":\"- the number of abstain votes\",\"againstVotes\":\"- the number of votes against the action\",\"forVotes\":\"- the number of votes for the action\",\"voteDuration\":\"- the duration of the voting period\",\"voteEnd\":\"- the block number at which voting ends\",\"voteStart\":\"- the block number at which voting starts\",\"voterCountSnapshot\":\"- the eligible-voter count snapshotted at voteStart (quorum/threshold denominator)\"}},\"getAdoptedMandate(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"active\":\"The active status of the mandate\",\"mandate\":\"The address of the mandate\",\"mandateHash\":\"The hash of the mandate\"}},\"getAmountRoleHolders(uint256)\":{\"params\":{\"roleId\":\"The identifier of the role\"},\"returns\":{\"amountMembers\":\"the number of role holders\"}},\"getConditions(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"conditions\":\"The conditions of the mandate\"}},\"getFlowDescriptionAtIndex(uint8)\":{\"params\":{\"index\":\"The index of the flow\"},\"returns\":{\"_0\":\"description The human-readable description of the flow\"}},\"getFlowMandatesAtIndex(uint8)\":{\"params\":{\"index\":\"The index of the flow\"},\"returns\":{\"_0\":\"The ids of the mandates in the flow\"}},\"getLatestFulfillment(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"latestFulfillment\":\"The latest fulfillment of the mandate\"}},\"getMandateActionAtIndex(uint16,uint256)\":{\"params\":{\"index\":\"The index of the action\",\"mandateId\":\"The id of the mandate\"},\"returns\":{\"actionId\":\"The action at the index\"}},\"getMandateCounter()\":{\"details\":\"Added this function to expose mandateCounter at IPowers interface level.\",\"returns\":{\"_0\":\"The total number of adopted mandates\"}},\"getQuantityMandateActions(uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\"},\"returns\":{\"quantityMandateActions\":\"The quantity of actions of the mandate\"}},\"getRoleHolderAtIndex(uint256,uint256)\":{\"params\":{\"index\":\"The index of the role holder\",\"roleId\":\"The identifier of the role\"},\"returns\":{\"account\":\"The address of the role holder\"}},\"getRoleLabel(uint256)\":{\"params\":{\"roleId\":\"The identifier of the role\"},\"returns\":{\"label\":\"The label of the role\"}},\"getRoleMetadata(uint256)\":{\"params\":{\"roleId\":\"The identifier of the role\"},\"returns\":{\"metadata\":\"The URI of the role\"}},\"getTreasury()\":{\"returns\":{\"_0\":\"The treasury address\"}},\"hasRoleSince(address,uint256)\":{\"params\":{\"account\":\"The address to check\",\"roleId\":\"The identifier of the role\"},\"returns\":{\"since\":\"the block number since holding the role, 0 if never held\"}},\"hasVoted(uint256,address)\":{\"params\":{\"account\":\"The address to check\",\"actionId\":\"The unique identifier of the proposal\"},\"returns\":{\"_0\":\"True if the account has voted, false otherwise\"}},\"isBlacklisted(address)\":{\"params\":{\"account\":\"The address to check\"},\"returns\":{\"_0\":\"The blacklisted status of the account\"}},\"labelRole(uint256,string,string)\":{\"details\":\"Optional. Can only be called through the protocol itself\",\"params\":{\"label\":\"The human-readable label for the role\",\"metadata\":\"The URI for the role metadata\",\"roleId\":\"The identifier of the role to label\"}},\"propose(uint16,bytes,uint256,string)\":{\"details\":\"Only callable if the mandate requires voting (quorum > 0)note that no checks are run. If account has acces to mandate and it requires a vote - the account wil be able to create proposals.\",\"params\":{\"mandateCalldata\":\"The encoded function call data for the mandate\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\",\"uriDescription\":\"A human-readable description of the proposal\"},\"returns\":{\"actionId\":\"The unique identifier of the created proposal\"}},\"removeFlow(uint8)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"index\":\"The index of the flow to remove\"}},\"request(uint16,bytes,uint256,string)\":{\"details\":\"The request -> fulfill functions follow a call-and-return mechanism. This allows for async execution of mandates.\",\"params\":{\"mandateCalldata\":\"The encoded function call data for the mandate\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\",\"uriDescription\":\"A human-readable description of the action\"}},\"revokeMandate(uint16)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"mandateId\":\"The id of the mandate\"}},\"revokeRole(uint256,address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"account\":\"The address to remove the role from\",\"roleId\":\"The identifier of the role to remove\"}},\"setPaymaster(address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"newPaymaster\":\"The new paymaster address\"}},\"setTreasury(address)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"newTreasury\":\"The new treasury address\"}},\"setUri(string)\":{\"details\":\"Can only be called through the protocol itself\",\"params\":{\"newUri\":\"The new URI string\"}},\"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()\":{\"returns\":{\"_0\":\"the version string\"}}},\"stateVariables\":{\"MANDATE_REGISTRY\":{\"details\":\"address(0) means no registry is enforced \\u2014 any address implementing IMandate can be adopted, as before. This value is immutable: an org that wants to use a different registry must redeploy.\"},\"_actions\":{\"details\":\"Mapping from actionId to Action struct\"},\"_blacklist\":{\"details\":\"Mapping from account to blacklisted status\"},\"_constituteClosed\":{\"details\":\"Is the constitute phase closed? Note: no actions can be started when the constitute phase is open.\"},\"mandates\":{\"details\":\"Mapping from mandateId to AdoptedMandate struct\"},\"roles\":{\"details\":\"Mapping from roleId to Role struct\"},\"uri\":{\"details\":\"Can be altered\"}},\"version\":1},\"userdoc\":{\"errors\":{\"Powers__ActionAlreadyFulfilled()\":[{\"notice\":\"Emitted when an action is already fulfilled.\"}],\"Powers__ActionAlreadyInitiated()\":[{\"notice\":\"Emitted when an action has already been initiated.\"}],\"Powers__ActionCancelled()\":[{\"notice\":\"Emitted when an action has been cancelled.\"}],\"Powers__ActionNotProposed()\":[{\"notice\":\"Emitted when an action does not exist.\"}],\"Powers__ActionNotRequested()\":[{\"notice\":\"Emitted when an action has not been initiated yet.\"}],\"Powers__AddressBlacklisted()\":[{\"notice\":\"Emitted when an address is blacklisted.\"}],\"Powers__AlreadyCastVote()\":[{\"notice\":\"Emitted when a mandate is not adopted.\"}],\"Powers__CalldataTooLong()\":[{\"notice\":\"Emitted when a calldata is too long.\"}],\"Powers__CallerNotTargetMandate()\":[{\"notice\":\"Emitted when the caller is not the target mandate.\"}],\"Powers__CannotAddPowersAddressAsMember()\":[{\"notice\":\"Emitted when the Powers contract itself is added as a member of a role.\"}],\"Powers__CannotAddZeroAddress()\":[{\"notice\":\"Emitted when a zero address is added.\"}],\"Powers__CannotCallMandate()\":[{\"notice\":\"Emitted when an account cannot call a mandate.\"}],\"Powers__CannotSetPublicRole()\":[{\"notice\":\"Emitted when a role is locked.\"}],\"Powers__CannotSetZeroAddress()\":[{\"notice\":\"Emitted when trying to set the treasury to the zero address.\"}],\"Powers__ConstituteClosed()\":[{\"notice\":\"Emitted when the constitute phase is closed.\"}],\"Powers__ConstituteOpen()\":[{\"notice\":\"Emitted when the constitute phase is still open.\"}],\"Powers__ConstitutionAlreadyExecuted()\":[{\"notice\":\"Emitted when a constitution has already been executed.\"}],\"Powers__ExecutionArrayTooLong()\":[{\"notice\":\"Emitted when an array is too long.\"}],\"Powers__ExternalContractBlacklisted()\":[{\"notice\":\"Emitted when an external contract is blacklisted.\"}],\"Powers__IncorrectInterface(address)\":[{\"notice\":\"Emitted when an incorrect interface is called.\"}],\"Powers__InvalidAddress()\":[{\"notice\":\"Emitted when an invalid address is used.\"}],\"Powers__InvalidCallData()\":[{\"notice\":\"Emitted when a callData is invalid.\"}],\"Powers__InvalidFlowIndex()\":[{\"notice\":\"Emitted when trying to set an invalid flow.\"}],\"Powers__InvalidIndex()\":[{\"notice\":\"Emitted when an index is invalid.\"}],\"Powers__InvalidLabel()\":[{\"notice\":\"Emitted when a label is invalid.\"}],\"Powers__InvalidMandateId()\":[{\"notice\":\"Emitted when trying to set an invalid mandate in a flow.\"}],\"Powers__InvalidMandateIndex()\":[{\"notice\":\"Emitted when trying to adapt a flow with an invalid mandate index.\"}],\"Powers__InvalidMaxCallDataLength()\":[{\"notice\":\"Emitted when a max call data length is invalid.\"}],\"Powers__InvalidMaxExecutionsLength()\":[{\"notice\":\"Emitted when a max executions length is invalid.\"}],\"Powers__InvalidName()\":[{\"notice\":\"Emitted when a name is invalid.\"}],\"Powers__InvalidReturnCallDataLength()\":[{\"notice\":\"Emitted when a max call data length is invalid.\"}],\"Powers__InvalidVoteType()\":[{\"notice\":\"Emitted when a vote type is invalid.\"}],\"Powers__JoinedAfterVoteStart()\":[{\"notice\":\"Emitted when an account that joined the voting role after voteStart attempts to vote.\"}],\"Powers__LabelTooLong()\":[{\"notice\":\"Emitted when a label is too long.\"}],\"Powers__LockedRole()\":[{\"notice\":\"Emitted when a role is locked.\"}],\"Powers__MandateFulfillCallFailed()\":[{\"notice\":\"Emitted when a mandate fulfill call fails.\"}],\"Powers__MandateNotActive()\":[{\"notice\":\"Emitted when a mandate is not active.\"}],\"Powers__MandateNotRegistered(address)\":[{\"notice\":\"Emitted when a mandate is not registered (or not active) in this Powers instance's MANDATE_REGISTRY.\"}],\"Powers__MandateRequestFailed()\":[{\"notice\":\"Emitted when a mandate request fails.\"}],\"Powers__NoMembersInRole()\":[{\"notice\":\"Emitted when a role has no members.\"}],\"Powers__NoVoteNeeded()\":[{\"notice\":\"Emitted when a function is called that does not need a vote.\"}],\"Powers__NotAContract()\":[{\"notice\":\"Emitted when an external contract is not a contract.\"}],\"Powers__NotProposerAction()\":[{\"notice\":\"Emitted when the caller is not the proposer of the action.\"}],\"Powers__OnlyAdmin()\":[{\"notice\":\"Emitted when the caller is not the admin.\"}],\"Powers__OnlyPowers()\":[{\"notice\":\"Emitted when a function is called from a contract that is not Powers.\"}],\"Powers__PayableNotEnabled()\":[{\"notice\":\"Emitted when payable is not enabled.\"}],\"Powers__ProposedActionNotActive()\":[{\"notice\":\"Emitted when a proposed action is not active.\"}],\"Powers__UnexpectedActionState()\":[{\"notice\":\"Emitted when an action is in an unexpected state.\"}],\"Powers__UriTooLong()\":[{\"notice\":\"Emitted when a URI is too long.\"}],\"Powers__VoteWithPublicRoleDisallowed()\":[{\"notice\":\"Emitted when a vote with public role is attempted.\"}]},\"events\":{\"ActionFulfilled(uint16,uint256,address[],uint256[],bytes[])\":{\"notice\":\"Emitted when an executive action has been executed.\"},\"ActionRequested(address,uint16,bytes,uint256,string)\":{\"notice\":\"Emitted when executive action is requested.\"},\"BlacklistSet(address,bool)\":{\"notice\":\"Emitted when a address is blacklisted.\"},\"FlowAdapted(uint8,uint8,uint16)\":{\"notice\":\"Emitted when a flow is adapted.\"},\"FlowAdded(uint16[],string)\":{\"notice\":\"Emitted when a flow is added.\"},\"FlowDeleted(uint8)\":{\"notice\":\"Emitted when a flow is deleted.\"},\"FundsReceived(address,uint256)\":{\"notice\":\"Emitted when protocol receives funds.\"},\"MandateAdopted(uint16)\":{\"notice\":\"Emitted when a mandate is adopted.\"},\"MandateRevoked(uint16)\":{\"notice\":\"Emitted when a mandate is revoked.\"},\"PaymasterSet(address)\":{\"notice\":\"Emitted when the paymaster address is updated.\"},\"Powers__Initialized(address,string,string)\":{\"notice\":\"Emitted when protocol is initialized.\"},\"ProposedActionCancelled(uint256)\":{\"notice\":\"Emitted when a proposal is cancelled.\"},\"ProposedActionCreated(uint256,address,uint16,string,bytes,uint256,uint256,uint256,string)\":{\"notice\":\"Emitted when a proposal is created.\"},\"RoleLabel(uint256,string)\":{\"notice\":\"Emitted when a role is labelled.\"},\"RoleSet(uint256,address,bool)\":{\"notice\":\"Emitted when a role is set.\"},\"VoteCast(address,uint256,uint8,string)\":{\"notice\":\"Emitted when a vote is cast.\"}},\"kind\":\"user\",\"methods\":{\"ADMIN_ROLE()\":{\"notice\":\"Role identifier for the admin role\"},\"DENOMINATOR()\":{\"notice\":\"Denominator used for percentage calculations (100%)\"},\"FOUNDED_AT()\":{\"notice\":\"block number at which the Powers contract was deployed.\"},\"MANDATE_REGISTRY()\":{\"notice\":\"Address of the MandateRegistry this org enforces mandate membership against.\"},\"MAX_CALLDATA_LENGTH()\":{\"notice\":\"Maximum length of calldata for a mandate action\"},\"MAX_EXECUTIONS_LENGTH()\":{\"notice\":\"Maximum number of execution targets per action\"},\"MAX_RETURN_DATA_LENGTH()\":{\"notice\":\"Maximum length of return data stored from execution\"},\"PUBLIC_ROLE()\":{\"notice\":\"Role identifier for the public role (everyone)\"},\"addFlow((uint16[],string))\":{\"notice\":\"Adds flows\"},\"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))\":{\"notice\":\"Activates a new mandate in the protocol\"},\"assignRole(uint256,address)\":{\"notice\":\"Grants a role to an account\"},\"blacklistAddress(address,bool)\":{\"notice\":\"Blacklists an account\"},\"canCallMandate(address,uint16)\":{\"notice\":\"Checks if an account has permission to call a mandate\"},\"cancel(uint16,bytes,uint256)\":{\"notice\":\"Cancels an existing proposal\"},\"castVote(uint256,uint8)\":{\"notice\":\"Casts a vote on an active proposal\"},\"castVoteWithReason(uint256,uint8,string)\":{\"notice\":\"Casts a vote on an active proposal with an explanation\"},\"closeConstitute()\":{\"notice\":\"Closes the constitute phase, preventing further mandates from being added\"},\"closeConstitute(address)\":{\"notice\":\"Closes the constitute phase, preventing further mandates from being added\"},\"closeConstitute(address,(uint16[],string)[])\":{\"notice\":\"Closes the constitute phase, preventing further mandates from being added, and sets the initial flows.\"},\"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])\":{\"notice\":\"Initializes the DAO by activating its founding mandates\"},\"constructor\":{\"notice\":\"Sets the value for {name} at the time of construction.\"},\"editFlowByIndex(uint8,uint8,uint16)\":{\"notice\":\"Edits a flow by replacing a mandate in the flow with another mandate\"},\"flows(uint256)\":{\"notice\":\"array of flows to provide human and mandate readable structure to governance.\"},\"fulfill(uint16,uint256,address[],uint256[],bytes[])\":{\"notice\":\"Completes an action by executing the actual calls\"},\"getActionCalldata(uint256)\":{\"notice\":\"Gets the calldata for a specific action\"},\"getActionData(uint256)\":{\"notice\":\"gets the data of an actionId that are not an array.\"},\"getActionReturnData(uint256,uint256)\":{\"notice\":\"Gets the return data for a specific action\"},\"getActionState(uint256)\":{\"notice\":\"Gets the current state of a proposal\"},\"getActionUri(uint256)\":{\"notice\":\"Gets the URI for a specific action\"},\"getActionVoteData(uint256)\":{\"notice\":\"gets the vote data of an actionId that are not an array.\"},\"getAdoptedMandate(uint16)\":{\"notice\":\"Checks if a mandate is currently active\"},\"getAmountRoleHolders(uint256)\":{\"notice\":\"Gets the total number of accounts holding a specific role\"},\"getConditions(uint16)\":{\"notice\":\"Gets the conditions of a mandate\"},\"getFlowCount()\":{\"notice\":\"Gets the quantity of governance flows for a mandate\"},\"getFlowDescriptionAtIndex(uint8)\":{\"notice\":\"Gets the description of a governance flow at a specific index\"},\"getFlowMandatesAtIndex(uint8)\":{\"notice\":\"Gets the mandates of a governance flow at a specific index\"},\"getLatestFulfillment(uint16)\":{\"notice\":\"Gets the latest fulfillment of a mandate\"},\"getMandateActionAtIndex(uint16,uint256)\":{\"notice\":\"Gets the actions of a mandate\"},\"getMandateCounter()\":{\"notice\":\"Gets the total number of adopted mandates\"},\"getQuantityMandateActions(uint16)\":{\"notice\":\"Gets the quantity of actions of a mandate\"},\"getRoleHolderAtIndex(uint256,uint256)\":{\"notice\":\"Gets the holder of a role at a specific index\"},\"getRoleLabel(uint256)\":{\"notice\":\"Gets the label of a role\"},\"getRoleMetadata(uint256)\":{\"notice\":\"Gets the URI of a role\"},\"getTreasury()\":{\"notice\":\"Getter for treasury address.\"},\"hasRoleSince(address,uint256)\":{\"notice\":\"Gets the block number since which an account has held a role\"},\"hasVoted(uint256,address)\":{\"notice\":\"Checks if an account has voted on a specific proposal\"},\"isBlacklisted(address)\":{\"notice\":\"Checks if an account is blacklisted\"},\"labelRole(uint256,string,string)\":{\"notice\":\"Assigns a human-readable label and URI to a role\"},\"mandateCounter()\":{\"notice\":\"Number of mandates that have been initiated throughout the life of the organisation\"},\"name()\":{\"notice\":\"Name of the DAO\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Allows the contract to receive ERC1155 batch transfers once the constitution is closed.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Allows the contract to receive ERC1155 tokens once the constitution is closed.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Allows the contract to receive ERC721 tokens once the constitution is closed.\"},\"paymaster()\":{\"notice\":\"Address to the paymaster of the organisation\"},\"propose(uint16,bytes,uint256,string)\":{\"notice\":\"Creates a new proposal for an action that requires voting\"},\"removeFlow(uint8)\":{\"notice\":\"Removes a flow\"},\"request(uint16,bytes,uint256,string)\":{\"notice\":\"Initiates an action to be executed through a mandate\"},\"revokeMandate(uint16)\":{\"notice\":\"Deactivates an existing mandate\"},\"revokeRole(uint256,address)\":{\"notice\":\"Removes a role from an account\"},\"setPaymaster(address)\":{\"notice\":\"Sets the paymaster address\"},\"setTreasury(address)\":{\"notice\":\"Sets the treasury address\"},\"setUri(string)\":{\"notice\":\"Updates the protocol's metadata URI\"},\"uri()\":{\"notice\":\"URI to metadata of the DAO\"},\"version()\":{\"notice\":\"Gets the protocol version\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Powers.sol\":\"Powers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"lib/openzeppelin-contracts/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99\",\"dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4\",\"dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x7c7ad70641a7f8cd44def0857ec97b0e40bfd073b2d6037a5f57ce9527ee9bc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e05c6572dfe769f7aea6f3a8002951cc12d143d980dad29f6c5feedf9408bc14\",\"dweb:/ipfs/QmXM7C8YEptxisZiEefXUrwdXt3zMaCobmkCchxTtDg1oK\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/Mandate.sol\":{\"keccak256\":\"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929\",\"dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P\"]},\"src/Powers.sol\":{\"keccak256\":\"0xcda7b17de7d16d26a4f5add3f0c9436ba4dec1510c94dee944d67979883b10c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7707b12cbc5418d71f98360293131fbbea226d5c5c3cbf51598ac72ab3f35e42\",\"dweb:/ipfs/QmRFVs3ipEAgVsi3tC2iougZV9X1nZpCLNC2j2QGLKYm98\"]},\"src/core/helpers/MandateRegistry.sol\":{\"keccak256\":\"0xe859949e3164fca43cce647b9eecdcfa5442db90697c6d000c945173ed168e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8f90214fdace0b52df72684d5a2ed7f85ea2e6a79d4faa8b15832850d08ade2\",\"dweb:/ipfs/QmaXZpQ839qef6RiqGCVfar2Xv8EXt2BbDRE4w1nDf5kZX\"]},\"src/interfaces/IMandate.sol\":{\"keccak256\":\"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931\",\"dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A\"]},\"src/interfaces/IPowers.sol\":{\"keccak256\":\"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec\",\"dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp\"]},\"src/interfaces/PowersErrors.sol\":{\"keccak256\":\"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882\",\"dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf\"]},\"src/interfaces/PowersEvents.sol\":{\"keccak256\":\"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d\",\"dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB\"]},\"src/interfaces/PowersTypes.sol\":{\"keccak256\":\"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740\",\"dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK\"]},\"src/libraries/Checks.sol\":{\"keccak256\":\"0xfa4f4b800a694dcf02d3746190e00592299ccebed45b6fce170445d7e66c7e48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5001fe28d43a2d90782f859e3fa276fbc39d5cc65b3ff1d72b4bd4e99b909564\",\"dweb:/ipfs/QmXMfWEYN9RtjhWZYnpmpdWnd9FnYULbZnyB89PLqLxYff\"]},\"src/libraries/MandateUtilities.sol\":{\"keccak256\":\"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad\",\"dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC\"]},\"src/libraries/PowersUtilities.sol\":{\"keccak256\":\"0x2e7261ec42774bf281178d506856213d199bb652c9a8867b543b47878de65406\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7772019701eb8437442c89f95cf2c2ba5d37ca5aa13b9f40f69e29ef0c39d7d1\",\"dweb:/ipfs/QmW7uzD68d1JhW6bacja5qFFuZijwCf98num1wEPKoDRU9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"uri_","type":"string"},{"internalType":"uint256","name":"maxCallDataLength_","type":"uint256"},{"internalType":"uint256","name":"maxReturnDataLength_","type":"uint256"},{"internalType":"uint256","name":"maxExecutionsLength_","type":"uint256"},{"internalType":"address","name":"mandateRegistry_","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[],"type":"error","name":"Powers__ActionAlreadyFulfilled"},{"inputs":[],"type":"error","name":"Powers__ActionAlreadyInitiated"},{"inputs":[],"type":"error","name":"Powers__ActionCancelled"},{"inputs":[],"type":"error","name":"Powers__ActionNotProposed"},{"inputs":[],"type":"error","name":"Powers__ActionNotRequested"},{"inputs":[],"type":"error","name":"Powers__AddressBlacklisted"},{"inputs":[],"type":"error","name":"Powers__AlreadyCastVote"},{"inputs":[],"type":"error","name":"Powers__CalldataTooLong"},{"inputs":[],"type":"error","name":"Powers__CallerNotTargetMandate"},{"inputs":[],"type":"error","name":"Powers__CannotAddPowersAddressAsMember"},{"inputs":[],"type":"error","name":"Powers__CannotAddZeroAddress"},{"inputs":[],"type":"error","name":"Powers__CannotCallMandate"},{"inputs":[],"type":"error","name":"Powers__CannotSetPublicRole"},{"inputs":[],"type":"error","name":"Powers__CannotSetZeroAddress"},{"inputs":[],"type":"error","name":"Powers__ConstituteClosed"},{"inputs":[],"type":"error","name":"Powers__ConstituteOpen"},{"inputs":[],"type":"error","name":"Powers__ConstitutionAlreadyExecuted"},{"inputs":[],"type":"error","name":"Powers__ExecutionArrayTooLong"},{"inputs":[],"type":"error","name":"Powers__ExternalContractBlacklisted"},{"inputs":[{"internalType":"address","name":"targetMandate","type":"address"}],"type":"error","name":"Powers__IncorrectInterface"},{"inputs":[],"type":"error","name":"Powers__InvalidAddress"},{"inputs":[],"type":"error","name":"Powers__InvalidCallData"},{"inputs":[],"type":"error","name":"Powers__InvalidFlowIndex"},{"inputs":[],"type":"error","name":"Powers__InvalidIndex"},{"inputs":[],"type":"error","name":"Powers__InvalidLabel"},{"inputs":[],"type":"error","name":"Powers__InvalidMandateId"},{"inputs":[],"type":"error","name":"Powers__InvalidMandateIndex"},{"inputs":[],"type":"error","name":"Powers__InvalidMaxCallDataLength"},{"inputs":[],"type":"error","name":"Powers__InvalidMaxExecutionsLength"},{"inputs":[],"type":"error","name":"Powers__InvalidName"},{"inputs":[],"type":"error","name":"Powers__InvalidReturnCallDataLength"},{"inputs":[],"type":"error","name":"Powers__InvalidVoteType"},{"inputs":[],"type":"error","name":"Powers__JoinedAfterVoteStart"},{"inputs":[],"type":"error","name":"Powers__LabelTooLong"},{"inputs":[],"type":"error","name":"Powers__LockedRole"},{"inputs":[],"type":"error","name":"Powers__MandateFulfillCallFailed"},{"inputs":[],"type":"error","name":"Powers__MandateNotActive"},{"inputs":[{"internalType":"address","name":"targetMandate","type":"address"}],"type":"error","name":"Powers__MandateNotRegistered"},{"inputs":[],"type":"error","name":"Powers__MandateRequestFailed"},{"inputs":[],"type":"error","name":"Powers__NoMembersInRole"},{"inputs":[],"type":"error","name":"Powers__NoVoteNeeded"},{"inputs":[],"type":"error","name":"Powers__NotAContract"},{"inputs":[],"type":"error","name":"Powers__NotProposerAction"},{"inputs":[],"type":"error","name":"Powers__OnlyAdmin"},{"inputs":[],"type":"error","name":"Powers__OnlyPowers"},{"inputs":[],"type":"error","name":"Powers__PayableNotEnabled"},{"inputs":[],"type":"error","name":"Powers__ProposedActionNotActive"},{"inputs":[],"type":"error","name":"Powers__UnexpectedActionState"},{"inputs":[],"type":"error","name":"Powers__UriTooLong"},{"inputs":[],"type":"error","name":"Powers__VoteWithPublicRoleDisallowed"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true},{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true},{"internalType":"address[]","name":"targets","type":"address[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]","indexed":false}],"type":"event","name":"ActionFulfilled","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":true},{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true},{"internalType":"bytes","name":"mandateCalldata","type":"bytes","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"string","name":"description","type":"string","indexed":false}],"type":"event","name":"ActionRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"blacklisted","type":"bool","indexed":true}],"type":"event","name":"BlacklistSet","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint8","name":"index1","type":"uint8","indexed":false},{"internalType":"uint8","name":"index2","type":"uint8","indexed":false},{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":false}],"type":"event","name":"FlowAdapted","anonymous":false},{"inputs":[{"internalType":"uint16[]","name":"mandateIds","type":"uint16[]","indexed":false},{"internalType":"string","name":"nameDescription","type":"string","indexed":false}],"type":"event","name":"FlowAdded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8","indexed":true}],"type":"event","name":"FlowDeleted","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"FundsReceived","anonymous":false},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true}],"type":"event","name":"MandateAdopted","anonymous":false},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true}],"type":"event","name":"MandateRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"newPaymaster","type":"address","indexed":true}],"type":"event","name":"PaymasterSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"string","name":"uri","type":"string","indexed":false}],"type":"event","name":"Powers__Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true}],"type":"event","name":"ProposedActionCancelled","anonymous":false},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":true},{"internalType":"uint16","name":"mandateId","type":"uint16","indexed":true},{"internalType":"string","name":"signature","type":"string","indexed":false},{"internalType":"bytes","name":"executeCalldata","type":"bytes","indexed":false},{"internalType":"uint256","name":"voteStart","type":"uint256","indexed":false},{"internalType":"uint256","name":"voteEnd","type":"uint256","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"string","name":"description","type":"string","indexed":false}],"type":"event","name":"ProposedActionCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256","indexed":true},{"internalType":"string","name":"label","type":"string","indexed":false}],"type":"event","name":"RoleLabel","anonymous":false},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bool","name":"access","type":"bool","indexed":true}],"type":"event","name":"RoleSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"actionId","type":"uint256","indexed":true},{"internalType":"uint8","name":"support","type":"uint8","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"VoteCast","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FOUNDED_AT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANDATE_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CALLDATA_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_EXECUTIONS_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_RETURN_DATA_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PUBLIC_ROLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct PowersTypes.Flow","name":"flow","type":"tuple","components":[{"internalType":"uint16[]","name":"mandateIds","type":"uint16[]"},{"internalType":"string","name":"nameDescription","type":"string"}]}],"stateMutability":"nonpayable","type":"function","name":"addFlow"},{"inputs":[{"internalType":"struct PowersTypes.MandateInitData","name":"mandateInitData","type":"tuple","components":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"address","name":"targetMandate","type":"address"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"struct PowersTypes.Conditions","name":"conditions","type":"tuple","components":[{"internalType":"uint256","name":"allowedRole","type":"uint256"},{"internalType":"uint32","name":"votingPeriod","type":"uint32"},{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"uint32","name":"throttleExecution","type":"uint32"},{"internalType":"uint16","name":"needFulfilled","type":"uint16"},{"internalType":"uint16","name":"needNotFulfilled","type":"uint16"},{"internalType":"uint8","name":"quorum","type":"uint8"},{"internalType":"uint8","name":"succeedAt","type":"uint8"},{"internalType":"uint32","name":"maxExecutionDelay","type":"uint32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"adoptMandate","outputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"assignRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"blacklistAddress"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"canCallMandate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"castVote"},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"castVoteWithReason"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"closeConstitute"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"closeConstitute"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"struct PowersTypes.Flow[]","name":"_flows","type":"tuple[]","components":[{"internalType":"uint16[]","name":"mandateIds","type":"uint16[]"},{"internalType":"string","name":"nameDescription","type":"string"}]}],"stateMutability":"nonpayable","type":"function","name":"closeConstitute"},{"inputs":[{"internalType":"struct PowersTypes.MandateInitData[]","name":"constituentMandates","type":"tuple[]","components":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"address","name":"targetMandate","type":"address"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"struct PowersTypes.Conditions","name":"conditions","type":"tuple","components":[{"internalType":"uint256","name":"allowedRole","type":"uint256"},{"internalType":"uint32","name":"votingPeriod","type":"uint32"},{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"uint32","name":"throttleExecution","type":"uint32"},{"internalType":"uint16","name":"needFulfilled","type":"uint16"},{"internalType":"uint16","name":"needNotFulfilled","type":"uint16"},{"internalType":"uint8","name":"quorum","type":"uint8"},{"internalType":"uint8","name":"succeedAt","type":"uint8"},{"internalType":"uint32","name":"maxExecutionDelay","type":"uint32"}]}]}],"stateMutability":"nonpayable","type":"function","name":"constitute"},{"inputs":[{"internalType":"uint8","name":"index1","type":"uint8"},{"internalType":"uint8","name":"index2","type":"uint8"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"editFlowByIndex"},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"flows","outputs":[{"internalType":"string","name":"nameDescription","type":"string"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"fulfill"},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionCalldata","outputs":[{"internalType":"bytes","name":"callData","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionData","outputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"uint48","name":"proposedAt","type":"uint48"},{"internalType":"uint48","name":"requestedAt","type":"uint48"},{"internalType":"uint48","name":"fulfilledAt","type":"uint48"},{"internalType":"uint48","name":"cancelledAt","type":"uint48"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionReturnData","outputs":[{"internalType":"bytes","name":"returnData","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionState","outputs":[{"internalType":"enum PowersTypes.ActionState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionUri","outputs":[{"internalType":"string","name":"_uri","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getActionVoteData","outputs":[{"internalType":"uint48","name":"voteStart","type":"uint48"},{"internalType":"uint32","name":"voteDuration","type":"uint32"},{"internalType":"uint256","name":"voteEnd","type":"uint256"},{"internalType":"uint32","name":"againstVotes","type":"uint32"},{"internalType":"uint32","name":"forVotes","type":"uint32"},{"internalType":"uint32","name":"abstainVotes","type":"uint32"},{"internalType":"uint32","name":"voterCountSnapshot","type":"uint32"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getAdoptedMandate","outputs":[{"internalType":"address","name":"mandate","type":"address"},{"internalType":"bytes32","name":"mandateHash","type":"bytes32"},{"internalType":"bool","name":"active","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAmountRoleHolders","outputs":[{"internalType":"uint256","name":"amountMembers","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getConditions","outputs":[{"internalType":"struct PowersTypes.Conditions","name":"conditions","type":"tuple","components":[{"internalType":"uint256","name":"allowedRole","type":"uint256"},{"internalType":"uint32","name":"votingPeriod","type":"uint32"},{"internalType":"uint32","name":"timelock","type":"uint32"},{"internalType":"uint32","name":"throttleExecution","type":"uint32"},{"internalType":"uint16","name":"needFulfilled","type":"uint16"},{"internalType":"uint16","name":"needNotFulfilled","type":"uint16"},{"internalType":"uint8","name":"quorum","type":"uint8"},{"internalType":"uint8","name":"succeedAt","type":"uint8"},{"internalType":"uint32","name":"maxExecutionDelay","type":"uint32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFlowCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"getFlowDescriptionAtIndex","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"getFlowMandatesAtIndex","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getLatestFulfillment","outputs":[{"internalType":"uint48","name":"latestFulfillment","type":"uint48"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getMandateActionAtIndex","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMandateCounter","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getQuantityMandateActions","outputs":[{"internalType":"uint256","name":"quantityMandateActions","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleHolderAtIndex","outputs":[{"internalType":"address","name":"account","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleMetadata","outputs":[{"internalType":"string","name":"metadata","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTreasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"roleId","type":"uint256"}],"stateMutability":"view","type":"function","name":"hasRoleSince","outputs":[{"internalType":"uint48","name":"since","type":"uint48"}]},{"inputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"string","name":"label","type":"string"},{"internalType":"string","name":"metadata","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"labelRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"mandateCounter","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paymaster","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"string","name":"uriAction","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"propose","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeFlow"},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"string","name":"uriAction","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"request","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"revokeMandate"},{"inputs":[{"internalType":"uint256","name":"roleId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"newPaymaster","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPaymaster"},{"inputs":[{"internalType":"address payable","name":"newTreasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"string","name":"newUri","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setUri"},{"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":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addFlow((uint16[],string))":{"details":"Can only be called through the protocol itself","params":{"flow":"The flow to add"}},"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))":{"details":"Can only be called through the protocol itself","params":{"mandateInitData":"The data of the mandate"}},"assignRole(uint256,address)":{"details":"Can only be called through the protocol itself","params":{"account":"The address to grant the role to","roleId":"The identifier of the role to assign"}},"blacklistAddress(address,bool)":{"details":"Can only be called through the protocol itself","params":{"account":"The address to blacklist","blacklisted":"The blacklisted status of the account"}},"canCallMandate(address,uint16)":{"params":{"caller":"The address attempting to call the mandate","mandateId":"The mandate id to check"},"returns":{"_0":"True if the caller has permission, false otherwise"}},"cancel(uint16,bytes,uint256)":{"details":"the account to cancel must be the account that created the proposedAction.","params":{"mandateCalldata":"The original encoded function call data","mandateId":"The id of the mandate","nonce":"The nonce for the action"},"returns":{"_0":"The unique identifier of the cancelled proposal"}},"castVote(uint256,uint8)":{"details":"Vote types: 0=Against, 1=For, 2=Abstain","params":{"actionId":"The unique identifier of the proposal","support":"The type of vote to cast"}},"castVoteWithReason(uint256,uint8,string)":{"details":"Same as castVote but includes a reason string","params":{"actionId":"The unique identifier of the proposal","reason":"A human-readable explanation for the vote","support":"The type of vote to cast"}},"closeConstitute()":{"details":"Can only be called by an admin account"},"closeConstitute(address)":{"details":"Can only be called by an admin account","params":{"newAdmin":"The address of the new admin account"}},"closeConstitute(address,(uint16[],string)[])":{"details":"Can only be called by an admin account","params":{"flows":"The initial governance flows to set in the protocol","newAdmin":"The address of the new admin account"}},"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])":{"details":"WARNING: any adopted mandate needs to be audited carefully as it will give powers to role holders over the organisation.","params":{"mandates":"The list of mandate contracts to activate"}},"constructor":{"params":{"mandateRegistry_":"MandateRegistry address this org enforces mandate membership against. Pass address(0) to adopt any address implementing IMandate, with no registry restriction.","maxCallDataLength_":"maximum length of calldata for a mandate","maxExecutionsLength_":"maximum length of executions for a mandate","maxReturnDataLength_":"maximum length of return data for a mandate","name_":"name of the contract","uri_":"uri of the contract"}},"editFlowByIndex(uint8,uint8,uint16)":{"details":"Can only be called through the protocol itself","params":{"index1":"The index of the flow to edit","index2":"The index of the mandate in the flow to replace","mandateId":"The id of the new mandate to add to the flow"}},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"fulfill(uint16,uint256,address[],uint256[],bytes[])":{"details":"Can only be called by an active mandate contract","params":{"actionId":"The unique identifier of the action","calldatas":"The list of encoded function calls","mandateId":"The id of the mandate","targets":"The list of contract addresses to call","values":"The list of ETH values to send with each call"}},"getActionCalldata(uint256)":{"params":{"actionId":"The unique identifier of the action"},"returns":{"callData":"The calldata for the action"}},"getActionData(uint256)":{"params":{"actionId":"The unique identifier of the proposal"},"returns":{"caller":"- the address of the caller","cancelledAt":"- the block number at which the action was cancelled","fulfilledAt":"- the block number at which the action was fulfilled","mandateId":"- the id of the mandate that the action is associated with","nonce":"- the nonce of the action","proposedAt":"- the block number at which the action was proposed","requestedAt":"- the block number at which the action was requested"}},"getActionReturnData(uint256,uint256)":{"params":{"actionId":"The unique identifier of the action","index":"The index of the return data"},"returns":{"returnData":"The return data for the action"}},"getActionState(uint256)":{"params":{"actionId":"The unique identifier of the proposal"},"returns":{"_0":"the current state of the proposal"}},"getActionUri(uint256)":{"params":{"actionId":"The unique identifier of the action"},"returns":{"_uri":"The URI for the action"}},"getActionVoteData(uint256)":{"params":{"actionId":"The unique identifier of the proposal"},"returns":{"abstainVotes":"- the number of abstain votes","againstVotes":"- the number of votes against the action","forVotes":"- the number of votes for the action","voteDuration":"- the duration of the voting period","voteEnd":"- the block number at which voting ends","voteStart":"- the block number at which voting starts","voterCountSnapshot":"- the eligible-voter count snapshotted at voteStart (quorum/threshold denominator)"}},"getAdoptedMandate(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"active":"The active status of the mandate","mandate":"The address of the mandate","mandateHash":"The hash of the mandate"}},"getAmountRoleHolders(uint256)":{"params":{"roleId":"The identifier of the role"},"returns":{"amountMembers":"the number of role holders"}},"getConditions(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"conditions":"The conditions of the mandate"}},"getFlowDescriptionAtIndex(uint8)":{"params":{"index":"The index of the flow"},"returns":{"_0":"description The human-readable description of the flow"}},"getFlowMandatesAtIndex(uint8)":{"params":{"index":"The index of the flow"},"returns":{"_0":"The ids of the mandates in the flow"}},"getLatestFulfillment(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"latestFulfillment":"The latest fulfillment of the mandate"}},"getMandateActionAtIndex(uint16,uint256)":{"params":{"index":"The index of the action","mandateId":"The id of the mandate"},"returns":{"actionId":"The action at the index"}},"getMandateCounter()":{"details":"Added this function to expose mandateCounter at IPowers interface level.","returns":{"_0":"The total number of adopted mandates"}},"getQuantityMandateActions(uint16)":{"params":{"mandateId":"The id of the mandate"},"returns":{"quantityMandateActions":"The quantity of actions of the mandate"}},"getRoleHolderAtIndex(uint256,uint256)":{"params":{"index":"The index of the role holder","roleId":"The identifier of the role"},"returns":{"account":"The address of the role holder"}},"getRoleLabel(uint256)":{"params":{"roleId":"The identifier of the role"},"returns":{"label":"The label of the role"}},"getRoleMetadata(uint256)":{"params":{"roleId":"The identifier of the role"},"returns":{"metadata":"The URI of the role"}},"getTreasury()":{"returns":{"_0":"The treasury address"}},"hasRoleSince(address,uint256)":{"params":{"account":"The address to check","roleId":"The identifier of the role"},"returns":{"since":"the block number since holding the role, 0 if never held"}},"hasVoted(uint256,address)":{"params":{"account":"The address to check","actionId":"The unique identifier of the proposal"},"returns":{"_0":"True if the account has voted, false otherwise"}},"isBlacklisted(address)":{"params":{"account":"The address to check"},"returns":{"_0":"The blacklisted status of the account"}},"labelRole(uint256,string,string)":{"details":"Optional. Can only be called through the protocol itself","params":{"label":"The human-readable label for the role","metadata":"The URI for the role metadata","roleId":"The identifier of the role to label"}},"propose(uint16,bytes,uint256,string)":{"details":"Only callable if the mandate requires voting (quorum > 0)note that no checks are run. If account has acces to mandate and it requires a vote - the account wil be able to create proposals.","params":{"mandateCalldata":"The encoded function call data for the mandate","mandateId":"The id of the mandate","nonce":"The nonce for the action","uriDescription":"A human-readable description of the proposal"},"returns":{"actionId":"The unique identifier of the created proposal"}},"removeFlow(uint8)":{"details":"Can only be called through the protocol itself","params":{"index":"The index of the flow to remove"}},"request(uint16,bytes,uint256,string)":{"details":"The request -> fulfill functions follow a call-and-return mechanism. This allows for async execution of mandates.","params":{"mandateCalldata":"The encoded function call data for the mandate","mandateId":"The id of the mandate","nonce":"The nonce for the action","uriDescription":"A human-readable description of the action"}},"revokeMandate(uint16)":{"details":"Can only be called through the protocol itself","params":{"mandateId":"The id of the mandate"}},"revokeRole(uint256,address)":{"details":"Can only be called through the protocol itself","params":{"account":"The address to remove the role from","roleId":"The identifier of the role to remove"}},"setPaymaster(address)":{"details":"Can only be called through the protocol itself","params":{"newPaymaster":"The new paymaster address"}},"setTreasury(address)":{"details":"Can only be called through the protocol itself","params":{"newTreasury":"The new treasury address"}},"setUri(string)":{"details":"Can only be called through the protocol itself","params":{"newUri":"The new URI string"}},"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()":{"returns":{"_0":"the version string"}}},"version":1},"userdoc":{"kind":"user","methods":{"ADMIN_ROLE()":{"notice":"Role identifier for the admin role"},"DENOMINATOR()":{"notice":"Denominator used for percentage calculations (100%)"},"FOUNDED_AT()":{"notice":"block number at which the Powers contract was deployed."},"MANDATE_REGISTRY()":{"notice":"Address of the MandateRegistry this org enforces mandate membership against."},"MAX_CALLDATA_LENGTH()":{"notice":"Maximum length of calldata for a mandate action"},"MAX_EXECUTIONS_LENGTH()":{"notice":"Maximum number of execution targets per action"},"MAX_RETURN_DATA_LENGTH()":{"notice":"Maximum length of return data stored from execution"},"PUBLIC_ROLE()":{"notice":"Role identifier for the public role (everyone)"},"addFlow((uint16[],string))":{"notice":"Adds flows"},"adoptMandate((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32)))":{"notice":"Activates a new mandate in the protocol"},"assignRole(uint256,address)":{"notice":"Grants a role to an account"},"blacklistAddress(address,bool)":{"notice":"Blacklists an account"},"canCallMandate(address,uint16)":{"notice":"Checks if an account has permission to call a mandate"},"cancel(uint16,bytes,uint256)":{"notice":"Cancels an existing proposal"},"castVote(uint256,uint8)":{"notice":"Casts a vote on an active proposal"},"castVoteWithReason(uint256,uint8,string)":{"notice":"Casts a vote on an active proposal with an explanation"},"closeConstitute()":{"notice":"Closes the constitute phase, preventing further mandates from being added"},"closeConstitute(address)":{"notice":"Closes the constitute phase, preventing further mandates from being added"},"closeConstitute(address,(uint16[],string)[])":{"notice":"Closes the constitute phase, preventing further mandates from being added, and sets the initial flows."},"constitute((string,address,bytes,(uint256,uint32,uint32,uint32,uint16,uint16,uint8,uint8,uint32))[])":{"notice":"Initializes the DAO by activating its founding mandates"},"constructor":{"notice":"Sets the value for {name} at the time of construction."},"editFlowByIndex(uint8,uint8,uint16)":{"notice":"Edits a flow by replacing a mandate in the flow with another mandate"},"flows(uint256)":{"notice":"array of flows to provide human and mandate readable structure to governance."},"fulfill(uint16,uint256,address[],uint256[],bytes[])":{"notice":"Completes an action by executing the actual calls"},"getActionCalldata(uint256)":{"notice":"Gets the calldata for a specific action"},"getActionData(uint256)":{"notice":"gets the data of an actionId that are not an array."},"getActionReturnData(uint256,uint256)":{"notice":"Gets the return data for a specific action"},"getActionState(uint256)":{"notice":"Gets the current state of a proposal"},"getActionUri(uint256)":{"notice":"Gets the URI for a specific action"},"getActionVoteData(uint256)":{"notice":"gets the vote data of an actionId that are not an array."},"getAdoptedMandate(uint16)":{"notice":"Checks if a mandate is currently active"},"getAmountRoleHolders(uint256)":{"notice":"Gets the total number of accounts holding a specific role"},"getConditions(uint16)":{"notice":"Gets the conditions of a mandate"},"getFlowCount()":{"notice":"Gets the quantity of governance flows for a mandate"},"getFlowDescriptionAtIndex(uint8)":{"notice":"Gets the description of a governance flow at a specific index"},"getFlowMandatesAtIndex(uint8)":{"notice":"Gets the mandates of a governance flow at a specific index"},"getLatestFulfillment(uint16)":{"notice":"Gets the latest fulfillment of a mandate"},"getMandateActionAtIndex(uint16,uint256)":{"notice":"Gets the actions of a mandate"},"getMandateCounter()":{"notice":"Gets the total number of adopted mandates"},"getQuantityMandateActions(uint16)":{"notice":"Gets the quantity of actions of a mandate"},"getRoleHolderAtIndex(uint256,uint256)":{"notice":"Gets the holder of a role at a specific index"},"getRoleLabel(uint256)":{"notice":"Gets the label of a role"},"getRoleMetadata(uint256)":{"notice":"Gets the URI of a role"},"getTreasury()":{"notice":"Getter for treasury address."},"hasRoleSince(address,uint256)":{"notice":"Gets the block number since which an account has held a role"},"hasVoted(uint256,address)":{"notice":"Checks if an account has voted on a specific proposal"},"isBlacklisted(address)":{"notice":"Checks if an account is blacklisted"},"labelRole(uint256,string,string)":{"notice":"Assigns a human-readable label and URI to a role"},"mandateCounter()":{"notice":"Number of mandates that have been initiated throughout the life of the organisation"},"name()":{"notice":"Name of the DAO"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"notice":"Allows the contract to receive ERC1155 batch transfers once the constitution is closed."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"notice":"Allows the contract to receive ERC1155 tokens once the constitution is closed."},"onERC721Received(address,address,uint256,bytes)":{"notice":"Allows the contract to receive ERC721 tokens once the constitution is closed."},"paymaster()":{"notice":"Address to the paymaster of the organisation"},"propose(uint16,bytes,uint256,string)":{"notice":"Creates a new proposal for an action that requires voting"},"removeFlow(uint8)":{"notice":"Removes a flow"},"request(uint16,bytes,uint256,string)":{"notice":"Initiates an action to be executed through a mandate"},"revokeMandate(uint16)":{"notice":"Deactivates an existing mandate"},"revokeRole(uint256,address)":{"notice":"Removes a role from an account"},"setPaymaster(address)":{"notice":"Sets the paymaster address"},"setTreasury(address)":{"notice":"Sets the treasury address"},"setUri(string)":{"notice":"Updates the protocol's metadata URI"},"uri()":{"notice":"URI to metadata of the DAO"},"version()":{"notice":"Gets the protocol version"}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Powers.sol":"Powers"},"evmVersion":"cancun","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/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620","urls":["bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8","dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"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/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c","urls":["bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99","dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4","urls":["bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4","dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0x7c7ad70641a7f8cd44def0857ec97b0e40bfd073b2d6037a5f57ce9527ee9bc5","urls":["bzz-raw://e05c6572dfe769f7aea6f3a8002951cc12d143d980dad29f6c5feedf9408bc14","dweb:/ipfs/QmXM7C8YEptxisZiEefXUrwdXt3zMaCobmkCchxTtDg1oK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/Mandate.sol":{"keccak256":"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d","urls":["bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929","dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P"],"license":"MIT"},"src/Powers.sol":{"keccak256":"0xcda7b17de7d16d26a4f5add3f0c9436ba4dec1510c94dee944d67979883b10c0","urls":["bzz-raw://7707b12cbc5418d71f98360293131fbbea226d5c5c3cbf51598ac72ab3f35e42","dweb:/ipfs/QmRFVs3ipEAgVsi3tC2iougZV9X1nZpCLNC2j2QGLKYm98"],"license":"MIT"},"src/core/helpers/MandateRegistry.sol":{"keccak256":"0xe859949e3164fca43cce647b9eecdcfa5442db90697c6d000c945173ed168e11","urls":["bzz-raw://f8f90214fdace0b52df72684d5a2ed7f85ea2e6a79d4faa8b15832850d08ade2","dweb:/ipfs/QmaXZpQ839qef6RiqGCVfar2Xv8EXt2BbDRE4w1nDf5kZX"],"license":"MIT"},"src/interfaces/IMandate.sol":{"keccak256":"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa","urls":["bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931","dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A"],"license":"MIT"},"src/interfaces/IPowers.sol":{"keccak256":"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690","urls":["bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec","dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp"],"license":"MIT"},"src/interfaces/PowersErrors.sol":{"keccak256":"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098","urls":["bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882","dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf"],"license":"MIT"},"src/interfaces/PowersEvents.sol":{"keccak256":"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e","urls":["bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d","dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB"],"license":"MIT"},"src/interfaces/PowersTypes.sol":{"keccak256":"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878","urls":["bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740","dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK"],"license":"MIT"},"src/libraries/Checks.sol":{"keccak256":"0xfa4f4b800a694dcf02d3746190e00592299ccebed45b6fce170445d7e66c7e48","urls":["bzz-raw://5001fe28d43a2d90782f859e3fa276fbc39d5cc65b3ff1d72b4bd4e99b909564","dweb:/ipfs/QmXMfWEYN9RtjhWZYnpmpdWnd9FnYULbZnyB89PLqLxYff"],"license":"MIT"},"src/libraries/MandateUtilities.sol":{"keccak256":"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5","urls":["bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad","dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC"],"license":"MIT"},"src/libraries/PowersUtilities.sol":{"keccak256":"0x2e7261ec42774bf281178d506856213d199bb652c9a8867b543b47878de65406","urls":["bzz-raw://7772019701eb8437442c89f95cf2c2ba5d37ca5aa13b9f40f69e29ef0c39d7d1","dweb:/ipfs/QmW7uzD68d1JhW6bacja5qFFuZijwCf98num1wEPKoDRU9"],"license":"MIT"}},"version":1},"id":113} \ No newline at end of file diff --git a/frontend/context/builds/SimpleErc20Votes.json b/frontend/context/builds/SimpleErc20Votes.json index 2c54e692..e4b20101 100644 --- a/frontend/context/builds/SimpleErc20Votes.json +++ b/frontend/context/builds/SimpleErc20Votes.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"CLOCK_MODE","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"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":"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":"checkpoints","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"pos","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Checkpoints.Checkpoint208","components":[{"name":"_key","type":"uint48","internalType":"uint48"},{"name":"_value","type":"uint208","internalType":"uint208"}]}],"stateMutability":"view"},{"type":"function","name":"clock","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateBySig","inputs":[{"name":"delegatee","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"expiry","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":"delegates","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPastTotalSupply","inputs":[{"name":"timepoint","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPastVotes","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timepoint","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVotes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"mint","inputs":[{"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":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numCheckpoints","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"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":"DelegateChanged","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"fromDelegate","type":"address","indexed":true,"internalType":"address"},{"name":"toDelegate","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegate","type":"address","indexed":true,"internalType":"address"},{"name":"previousVotes","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newVotes","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"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":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20ExceededSafeSupply","inputs":[{"name":"increasedSupply","type":"uint256","internalType":"uint256"},{"name":"cap","type":"uint256","internalType":"uint256"}]},{"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":"ERC5805FutureLookup","inputs":[{"name":"timepoint","type":"uint256","internalType":"uint256"},{"name":"clock","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"ERC6372InconsistentClock","inputs":[]},{"type":"error","name":"Erc20Votes__AmountExceedsMax","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Erc20Votes__NoZeroAddress","inputs":[]},{"type":"error","name":"Erc20Votes__NoZeroAmount","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]},{"type":"error","name":"VotesExpiredSignature","inputs":[{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x610160604052348015610010575f5ffd5b5060405180604001604052806005815260200164566f74657360d81b8152506040518060400160405280600381526020016218171960e91b81525060405180604001604052806005815260200164566f74657360d81b8152506040518060400160405280600381526020016256545360e81b8152508160039081610094919061026a565b5060046100a1828261026a565b506100b19150839050600561015a565b610120526100c081600661015a565b61014052815160208084019190912060e052815190820120610100524660a05261014c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05261037c565b5f6020835110156101755761016e8361018c565b9050610186565b81610180848261026a565b5060ff90505b92915050565b5f5f829050601f815111156101bf578260405163305a27a960e01b81526004016101b69190610324565b60405180910390fd5b80516101ca82610359565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101fa57607f821691505b60208210810361021857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561026557805f5260205f20601f840160051c810160208510156102435750805b601f840160051c820191505b81811015610262575f815560010161024f565b50505b505050565b81516001600160401b03811115610283576102836101d2565b6102978161029184546101e6565b8461021e565b6020601f8211600181146102c9575f83156102b25750848201515b5f19600385901b1c1916600184901b178455610262565b5f84815260208120601f198516915b828110156102f857878501518255602094850194600190920191016102d8565b508482101561031557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610218575f1960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611c536103cd5f395f610b2f01525f610b0201525f6112cb01525f6112a301525f6111fe01525f61122801525f6112520152611c535ff3fe608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd5780639ab24eb011610088578063c3cda52011610063578063c3cda52014610389578063dd62ed3e1461039c578063f1127ed8146103d4575f5ffd5b80639ab24eb014610350578063a0712d6814610363578063a9059cbb14610376575f5ffd5b80638e539e8c116100b85780638e539e8c1461031657806391ddadf41461032957806395d89b4114610348575f5ffd5b806370a08231146102ab5780637ecebe00146102d357806384b0196e146102fb575f5ffd5b80633a46b1a81161013d578063587cde1e11610118578063587cde1e1461022d5780635c19a95c146102705780636fcfff4514610283575f5ffd5b80633a46b1a8146101fd57806340c10f19146102105780634bf5d7e914610225575f5ffd5b806318160ddd1161016d57806318160ddd146101c957806323b872dd146101db578063313ce567146101ee575f5ffd5b806306fdde0314610188578063095ea7b3146101a6575b5f5ffd5b610190610413565b60405161019d9190611913565b60405180910390f35b6101b96101b4366004611940565b6104a3565b604051901515815260200161019d565b6002545b60405190815260200161019d565b6101b96101e9366004611968565b6104bc565b6040516012815260200161019d565b6101cd61020b366004611940565b6104df565b61022361021e366004611940565b610519565b005b6101906105af565b61025861023b3660046119a2565b6001600160a01b039081165f908152600860205260409020541690565b6040516001600160a01b03909116815260200161019d565b61022361027e3660046119a2565b610627565b6102966102913660046119a2565b610632565b60405163ffffffff909116815260200161019d565b6101cd6102b93660046119a2565b6001600160a01b03165f9081526020819052604090205490565b6101cd6102e13660046119a2565b6001600160a01b03165f9081526007602052604090205490565b61030361063c565b60405161019d97969594939291906119bb565b6101cd610324366004611a51565b61067e565b6103316106a2565b60405165ffffffffffff909116815260200161019d565b6101906106b0565b6101cd61035e3660046119a2565b6106bf565b610223610371366004611a51565b6106df565b6101b9610384366004611940565b610748565b610223610397366004611a68565b610755565b6101cd6103aa366004611ac3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6103e76103e2366004611af4565b610811565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161019d565b60606003805461042290611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461044e90611b31565b80156104995780601f1061047057610100808354040283529160200191610499565b820191905f5260205f20905b81548152906001019060200180831161047c57829003601f168201915b5050505050905090565b5f336104b0818585610835565b60019150505b92915050565b5f336104c9858285610847565b6104d48585856108c3565b506001949350505050565b5f6105096104ec83610920565b6001600160a01b0385165f9081526009602052604090209061096e565b6001600160d01b03169392505050565b6001600160a01b0382166105405760405163176d8d5560e11b815260040160405180910390fd5b805f0361056057604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d631000008111156105a1576040516369003ff160e01b81526004810182905268056bc75e2d6310000060248201526044015b60405180910390fd5b6105ab8282610a1e565b5050565b60606105b9610a52565b65ffffffffffff166105c96106a2565b65ffffffffffff16146105ef576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336105ab8183610a5c565b5f6104b682610ada565b5f6060805f5f5f606061064d610afb565b610655610b28565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f61069361068b83610920565b600a9061096e565b6001600160d01b031692915050565b5f6106ab610a52565b905090565b60606004805461042290611b31565b6001600160a01b0381165f90815260096020526040812061069390610b55565b805f036106ff57604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d6310000081111561073b576040516369003ff160e01b81526004810182905268056bc75e2d631000006024820152604401610598565b6107453382610a1e565b50565b5f336104b08185856108c3565b8342111561077957604051632341d78760e11b815260048101859052602401610598565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f906107f2906107ea9060a00160405160208183030381529060405280519060200120610b8c565b858585610bb8565b90506107fe8187610be4565b6108088188610a5c565b50505050505050565b604080518082019091525f808252602082015261082e8383610c36565b9392505050565b6108428383836001610c6a565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198110156108bd57818110156108af57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610598565b6108bd84848484035f610c6a565b50505050565b6001600160a01b0383166108ec57604051634b637e8f60e11b81525f6004820152602401610598565b6001600160a01b0382166109155760405163ec442f0560e01b81525f6004820152602401610598565b610842838383610d3c565b5f5f61092a6106a2565b90508065ffffffffffff16831061096557604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610598565b61082e83610da2565b81545f90818160058111156109ca575f61098784610dd8565b6109919085611b7d565b5f8881526020902090915081015465ffffffffffff90811690871610156109ba578091506109c8565b6109c5816001611b90565b92505b505b5f6109d787878585610f3d565b90508015610a11576109fb876109ee600184611b7d565b5f91825260209091200190565b54600160301b90046001600160d01b0316610a13565b5f5b979650505050505050565b6001600160a01b038216610a475760405163ec442f0560e01b81525f6004820152602401610598565b6105ab5f8383610d3c565b5f6106ab43610da2565b6001600160a01b038281165f81815260086020526040808220805486861673ffffffffffffffffffffffffffffffffffffffff19821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46108428183610ad586610f93565b610fb0565b6001600160a01b0381165f908152600960205260408120546104b690611119565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006005611149565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006006611149565b80545f908015610b8457610b6e836109ee600184611b7d565b54600160301b90046001600160d01b031661082e565b5f9392505050565b5f6104b6610b986111f2565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f610bc88888888861131b565b925092509250610bd882826113e3565b50909695505050505050565b6001600160a01b0382165f908152600760205260409020805460018101909155818114610842576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610598565b604080518082019091525f80825260208201526001600160a01b0383165f90815260096020526040902061082e908361149b565b6001600160a01b038416610c935760405163e602df0560e01b81525f6004820152602401610598565b6001600160a01b038316610cbc57604051634a1406b160e11b81525f6004820152602401610598565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156108bd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2e91815260200190565b60405180910390a350505050565b610d47838383611508565b6001600160a01b038316610d97575f610d5f60025490565b90506001600160d01b0380821115610d9457604051630e58ae9360e11b81526004810183905260248101829052604401610598565b50505b61084283838361162e565b5f65ffffffffffff821115610dd4576040516306dfcc6560e41b81526030600482015260248101839052604401610598565b5090565b5f60018211610de5575090565b8160017001000000000000000000000000000000008210610e0b5760809190911c9060401b5b680100000000000000008210610e265760409190911c9060201b5b6401000000008210610e3d5760209190911c9060101b5b620100008210610e525760109190911c9060081b5b6101008210610e665760089190911c9060041b5b60108210610e795760049190911c9060021b5b60048210610e855760011b5b600302600190811c90818581610e9d57610e9d611ba3565b048201901c90506001818581610eb557610eb5611ba3565b048201901c90506001818581610ecd57610ecd611ba3565b048201901c90506001818581610ee557610ee5611ba3565b048201901c90506001818581610efd57610efd611ba3565b048201901c90506001818581610f1557610f15611ba3565b048201901c9050610f34818581610f2e57610f2e611ba3565b04821190565b90039392505050565b5f5b81831015610f8b575f85815260209020838316600285851804019081015465ffffffffffff86811691161115610f7757809250610f85565b610f82816001611b90565b93505b50610f3f565b509392505050565b6001600160a01b0381165f908152602081905260408120546104b6565b816001600160a01b0316836001600160a01b031614158015610fd157505f81115b15610842576001600160a01b03831615611078576001600160a01b0383165f9081526009602052604081208190611013906116a361100e866116ae565b6116e1565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161106d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610842576001600160a01b0382165f90815260096020526040812081906110b09061171961100e866116ae565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161110a929190918252602082015260400190565b60405180910390a25050505050565b5f63ffffffff821115610dd4576040516306dfcc6560e41b81526020600482015260248101839052604401610598565b606060ff83146111635761115c83611724565b90506104b6565b81805461116f90611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461119b90611b31565b80156111e65780601f106111bd576101008083540402835291602001916111e6565b820191905f5260205f20905b8154815290600101906020018083116111c957829003601f168201915b505050505090506104b6565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561124a57507f000000000000000000000000000000000000000000000000000000000000000046145b1561127457507f000000000000000000000000000000000000000000000000000000000000000090565b6106ab604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561135457505f915060039050826113d9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113a5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166113d057505f9250600191508290506113d9565b92505f91508190505b9450945094915050565b5f8260038111156113f6576113f6611bb7565b036113ff575050565b600182600381111561141357611413611bb7565b036114315760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561144557611445611bb7565b036114665760405163fce698f760e01b815260048101829052602401610598565b600382600381111561147a5761147a611bb7565b036105ab576040516335e2f38360e21b815260048101829052602401610598565b604080518082019091525f8082526020820152825f018263ffffffff16815481106114c8576114c8611bcb565b5f9182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6001600160a01b038316611532578060025f8282546115279190611b90565b909155506115a29050565b6001600160a01b0383165f90815260208190526040902054818110156115845760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610598565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166115be576002805482900390556115dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161162191815260200190565b60405180910390a3505050565b6001600160a01b0383166116505761164d600a61171961100e846116ae565b50505b6001600160a01b0382166116725761166f600a6116a361100e846116ae565b50505b6001600160a01b038381165f9081526008602052604080822054858416835291205461084292918216911683610fb0565b5f61082e8284611bdf565b5f6001600160d01b03821115610dd4576040516306dfcc6560e41b815260d0600482015260248101839052604401610598565b5f5f61170c6116ee6106a2565b6117046116fa88610b55565b868863ffffffff16565b879190611761565b915091505b935093915050565b5f61082e8284611bfe565b60605f6117308361176e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8061170c858585611795565b5f60ff8216601f8111156104b657604051632cd44ac360e21b815260040160405180910390fd5b82545f908190801561188b575f6117b1876109ee600185611b7d565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156117f457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361182d57825465ffffffffffff16600160301b6001600160d01b0389160217835561187d565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160301b029216919091179101555b945085935061171192505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160301b029190931617920191909155905081611711565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082e60208301846118e5565b80356001600160a01b038116811461193b575f5ffd5b919050565b5f5f60408385031215611951575f5ffd5b61195a83611925565b946020939093013593505050565b5f5f5f6060848603121561197a575f5ffd5b61198384611925565b925061199160208501611925565b929592945050506040919091013590565b5f602082840312156119b2575f5ffd5b61082e82611925565b60ff60f81b8816815260e060208201525f6119d960e08301896118e5565b82810360408401526119eb81896118e5565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611a40578351835260209384019390920191600101611a22565b50909b9a5050505050505050505050565b5f60208284031215611a61575f5ffd5b5035919050565b5f5f5f5f5f5f60c08789031215611a7d575f5ffd5b611a8687611925565b95506020870135945060408701359350606087013560ff81168114611aa9575f5ffd5b9598949750929560808101359460a0909101359350915050565b5f5f60408385031215611ad4575f5ffd5b611add83611925565b9150611aeb60208401611925565b90509250929050565b5f5f60408385031215611b05575f5ffd5b611b0e83611925565b9150602083013563ffffffff81168114611b26575f5ffd5b809150509250929050565b600181811c90821680611b4557607f821691505b602082108103611b6357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104b6576104b6611b69565b808201808211156104b6576104b6611b69565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160d01b0382811682821603908111156104b6576104b6611b69565b6001600160d01b0381811683821601908111156104b6576104b6611b6956fea2646970667358221220ce37ba66812a31392fb111419dc91f90d68f4239cc40c5165f0922a9a14b8d3b64736f6c634300081e0033","sourceMap":"344:1284:203:-:0;;;608:62;;;;;;;;;;3428:431:87;;;;;;;;;;;;;-1:-1:-1;;;3428:431:87;;;;;;;;;;;;;;;;-1:-1:-1;;;3428:431:87;;;1582:113:62;;;;;;;;;;;;;-1:-1:-1;;;1582:113:62;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:113:62;;;1656:5;1648;:13;;;;;;:::i;:::-;-1:-1:-1;1671:7:62;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;3501:45:87;;-1:-1:-1;3501:4:87;;-1:-1:-1;3532:13:87;3501:30;:45::i;:::-;3493:53;;3567:51;:7;3601:16;3567:33;:51::i;:::-;3556:62;;3642:22;;;;;;;;;;3628:36;;3691:25;;;;;;3674:42;;3744:13;3727:30;;3792:23;4326:11;;4339:14;;4304:80;;;2079:95;4304:80;;;2914:25:227;2955:18;;;2948:34;;;;2998:18;;;2991:34;4355:13:87;3041:18:227;;;3034:34;4378:4:87;3084:19:227;;;3077:61;4268:7:87;;2886:19:227;;4304:80:87;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;;3792:23;3767:48;;-1:-1:-1;;3847:4:87;3825:27;;344:1284:203;;2893:342:82;2989:11;3038:4;3022:5;3016:19;:26;3012:217;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3012:217;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1390:66:82;;-1:-1:-1;3012:217:82;2893:342;;;;:::o;1708:288::-;1773:11;1796:17;1822:3;1796:30;;1854:4;1840;:11;:18;1836:74;;;1895:3;1881:18;;-1:-1:-1;;;1881:18:82;;;;;;;;:::i;:::-;;;;;;;;1836:74;1976:11;;1959:13;1976:4;1959:13;:::i;:::-;1951:36;;1708:288;-1:-1:-1;;;1708:288:82:o;14:127:227:-;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:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:227;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;;1082:3;;748:421;657:518;;;:::o;1351:1299::-;1471:10;;-1:-1:-1;;;;;1493:30:227;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1701:4;1732:2;1721:14;;1749:1;1744:649;;;;2437:1;2454:6;2451:89;;;-1:-1:-1;2506:19:227;;;2500:26;2451:89;-1:-1:-1;;1308:1:227;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2553:81;;1714:930;;1744:649;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1780:20:227;;;1898:222;1912:7;1909:1;1906:14;1898:222;;;1994:19;;;1988:26;1973:42;;2101:4;2086:20;;;;2054:1;2042:14;;;;1928:12;1898:222;;;1902:3;2148:6;2139:7;2136:19;2133:201;;;2209:19;;;2203:26;-1:-1:-1;;2292:1:227;2288:14;;;2304:3;2284:24;2280:37;2276:42;2261:58;2246:74;;2133:201;-1:-1:-1;;;;2380:1:227;2364:14;;;2360:22;2347:36;;-1:-1:-1;1351:1299:227:o;3149:418::-;3298:2;3287:9;3280:21;3261:4;3330:6;3324:13;3373:6;3368:2;3357:9;3353:18;3346:34;3432:6;3427:2;3419:6;3415:15;3410:2;3399:9;3395:18;3389:50;3488:1;3483:2;3474:6;3463:9;3459:22;3455:31;3448:42;3558:2;3551;3547:7;3542:2;3534:6;3530:15;3526:29;3515:9;3511:45;3507:54;3499:62;;;3149:418;;;;:::o;3572:297::-;3690:12;;3737:4;3726:16;;;3720:23;;3690:12;3755:16;;3752:111;;;-1:-1:-1;;3829:4:227;3825:17;;;;3822:1;3818:25;3814:38;3803:50;;3572:297;-1:-1:-1;3572:297:227:o;:::-;344:1284:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd5780639ab24eb011610088578063c3cda52011610063578063c3cda52014610389578063dd62ed3e1461039c578063f1127ed8146103d4575f5ffd5b80639ab24eb014610350578063a0712d6814610363578063a9059cbb14610376575f5ffd5b80638e539e8c116100b85780638e539e8c1461031657806391ddadf41461032957806395d89b4114610348575f5ffd5b806370a08231146102ab5780637ecebe00146102d357806384b0196e146102fb575f5ffd5b80633a46b1a81161013d578063587cde1e11610118578063587cde1e1461022d5780635c19a95c146102705780636fcfff4514610283575f5ffd5b80633a46b1a8146101fd57806340c10f19146102105780634bf5d7e914610225575f5ffd5b806318160ddd1161016d57806318160ddd146101c957806323b872dd146101db578063313ce567146101ee575f5ffd5b806306fdde0314610188578063095ea7b3146101a6575b5f5ffd5b610190610413565b60405161019d9190611913565b60405180910390f35b6101b96101b4366004611940565b6104a3565b604051901515815260200161019d565b6002545b60405190815260200161019d565b6101b96101e9366004611968565b6104bc565b6040516012815260200161019d565b6101cd61020b366004611940565b6104df565b61022361021e366004611940565b610519565b005b6101906105af565b61025861023b3660046119a2565b6001600160a01b039081165f908152600860205260409020541690565b6040516001600160a01b03909116815260200161019d565b61022361027e3660046119a2565b610627565b6102966102913660046119a2565b610632565b60405163ffffffff909116815260200161019d565b6101cd6102b93660046119a2565b6001600160a01b03165f9081526020819052604090205490565b6101cd6102e13660046119a2565b6001600160a01b03165f9081526007602052604090205490565b61030361063c565b60405161019d97969594939291906119bb565b6101cd610324366004611a51565b61067e565b6103316106a2565b60405165ffffffffffff909116815260200161019d565b6101906106b0565b6101cd61035e3660046119a2565b6106bf565b610223610371366004611a51565b6106df565b6101b9610384366004611940565b610748565b610223610397366004611a68565b610755565b6101cd6103aa366004611ac3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6103e76103e2366004611af4565b610811565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161019d565b60606003805461042290611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461044e90611b31565b80156104995780601f1061047057610100808354040283529160200191610499565b820191905f5260205f20905b81548152906001019060200180831161047c57829003601f168201915b5050505050905090565b5f336104b0818585610835565b60019150505b92915050565b5f336104c9858285610847565b6104d48585856108c3565b506001949350505050565b5f6105096104ec83610920565b6001600160a01b0385165f9081526009602052604090209061096e565b6001600160d01b03169392505050565b6001600160a01b0382166105405760405163176d8d5560e11b815260040160405180910390fd5b805f0361056057604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d631000008111156105a1576040516369003ff160e01b81526004810182905268056bc75e2d6310000060248201526044015b60405180910390fd5b6105ab8282610a1e565b5050565b60606105b9610a52565b65ffffffffffff166105c96106a2565b65ffffffffffff16146105ef576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336105ab8183610a5c565b5f6104b682610ada565b5f6060805f5f5f606061064d610afb565b610655610b28565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f61069361068b83610920565b600a9061096e565b6001600160d01b031692915050565b5f6106ab610a52565b905090565b60606004805461042290611b31565b6001600160a01b0381165f90815260096020526040812061069390610b55565b805f036106ff57604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d6310000081111561073b576040516369003ff160e01b81526004810182905268056bc75e2d631000006024820152604401610598565b6107453382610a1e565b50565b5f336104b08185856108c3565b8342111561077957604051632341d78760e11b815260048101859052602401610598565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f906107f2906107ea9060a00160405160208183030381529060405280519060200120610b8c565b858585610bb8565b90506107fe8187610be4565b6108088188610a5c565b50505050505050565b604080518082019091525f808252602082015261082e8383610c36565b9392505050565b6108428383836001610c6a565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198110156108bd57818110156108af57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610598565b6108bd84848484035f610c6a565b50505050565b6001600160a01b0383166108ec57604051634b637e8f60e11b81525f6004820152602401610598565b6001600160a01b0382166109155760405163ec442f0560e01b81525f6004820152602401610598565b610842838383610d3c565b5f5f61092a6106a2565b90508065ffffffffffff16831061096557604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610598565b61082e83610da2565b81545f90818160058111156109ca575f61098784610dd8565b6109919085611b7d565b5f8881526020902090915081015465ffffffffffff90811690871610156109ba578091506109c8565b6109c5816001611b90565b92505b505b5f6109d787878585610f3d565b90508015610a11576109fb876109ee600184611b7d565b5f91825260209091200190565b54600160301b90046001600160d01b0316610a13565b5f5b979650505050505050565b6001600160a01b038216610a475760405163ec442f0560e01b81525f6004820152602401610598565b6105ab5f8383610d3c565b5f6106ab43610da2565b6001600160a01b038281165f81815260086020526040808220805486861673ffffffffffffffffffffffffffffffffffffffff19821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46108428183610ad586610f93565b610fb0565b6001600160a01b0381165f908152600960205260408120546104b690611119565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006005611149565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006006611149565b80545f908015610b8457610b6e836109ee600184611b7d565b54600160301b90046001600160d01b031661082e565b5f9392505050565b5f6104b6610b986111f2565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f610bc88888888861131b565b925092509250610bd882826113e3565b50909695505050505050565b6001600160a01b0382165f908152600760205260409020805460018101909155818114610842576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610598565b604080518082019091525f80825260208201526001600160a01b0383165f90815260096020526040902061082e908361149b565b6001600160a01b038416610c935760405163e602df0560e01b81525f6004820152602401610598565b6001600160a01b038316610cbc57604051634a1406b160e11b81525f6004820152602401610598565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156108bd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2e91815260200190565b60405180910390a350505050565b610d47838383611508565b6001600160a01b038316610d97575f610d5f60025490565b90506001600160d01b0380821115610d9457604051630e58ae9360e11b81526004810183905260248101829052604401610598565b50505b61084283838361162e565b5f65ffffffffffff821115610dd4576040516306dfcc6560e41b81526030600482015260248101839052604401610598565b5090565b5f60018211610de5575090565b8160017001000000000000000000000000000000008210610e0b5760809190911c9060401b5b680100000000000000008210610e265760409190911c9060201b5b6401000000008210610e3d5760209190911c9060101b5b620100008210610e525760109190911c9060081b5b6101008210610e665760089190911c9060041b5b60108210610e795760049190911c9060021b5b60048210610e855760011b5b600302600190811c90818581610e9d57610e9d611ba3565b048201901c90506001818581610eb557610eb5611ba3565b048201901c90506001818581610ecd57610ecd611ba3565b048201901c90506001818581610ee557610ee5611ba3565b048201901c90506001818581610efd57610efd611ba3565b048201901c90506001818581610f1557610f15611ba3565b048201901c9050610f34818581610f2e57610f2e611ba3565b04821190565b90039392505050565b5f5b81831015610f8b575f85815260209020838316600285851804019081015465ffffffffffff86811691161115610f7757809250610f85565b610f82816001611b90565b93505b50610f3f565b509392505050565b6001600160a01b0381165f908152602081905260408120546104b6565b816001600160a01b0316836001600160a01b031614158015610fd157505f81115b15610842576001600160a01b03831615611078576001600160a01b0383165f9081526009602052604081208190611013906116a361100e866116ae565b6116e1565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161106d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610842576001600160a01b0382165f90815260096020526040812081906110b09061171961100e866116ae565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161110a929190918252602082015260400190565b60405180910390a25050505050565b5f63ffffffff821115610dd4576040516306dfcc6560e41b81526020600482015260248101839052604401610598565b606060ff83146111635761115c83611724565b90506104b6565b81805461116f90611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461119b90611b31565b80156111e65780601f106111bd576101008083540402835291602001916111e6565b820191905f5260205f20905b8154815290600101906020018083116111c957829003601f168201915b505050505090506104b6565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561124a57507f000000000000000000000000000000000000000000000000000000000000000046145b1561127457507f000000000000000000000000000000000000000000000000000000000000000090565b6106ab604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561135457505f915060039050826113d9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113a5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166113d057505f9250600191508290506113d9565b92505f91508190505b9450945094915050565b5f8260038111156113f6576113f6611bb7565b036113ff575050565b600182600381111561141357611413611bb7565b036114315760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561144557611445611bb7565b036114665760405163fce698f760e01b815260048101829052602401610598565b600382600381111561147a5761147a611bb7565b036105ab576040516335e2f38360e21b815260048101829052602401610598565b604080518082019091525f8082526020820152825f018263ffffffff16815481106114c8576114c8611bcb565b5f9182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6001600160a01b038316611532578060025f8282546115279190611b90565b909155506115a29050565b6001600160a01b0383165f90815260208190526040902054818110156115845760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610598565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166115be576002805482900390556115dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161162191815260200190565b60405180910390a3505050565b6001600160a01b0383166116505761164d600a61171961100e846116ae565b50505b6001600160a01b0382166116725761166f600a6116a361100e846116ae565b50505b6001600160a01b038381165f9081526008602052604080822054858416835291205461084292918216911683610fb0565b5f61082e8284611bdf565b5f6001600160d01b03821115610dd4576040516306dfcc6560e41b815260d0600482015260248101839052604401610598565b5f5f61170c6116ee6106a2565b6117046116fa88610b55565b868863ffffffff16565b879190611761565b915091505b935093915050565b5f61082e8284611bfe565b60605f6117308361176e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8061170c858585611795565b5f60ff8216601f8111156104b657604051632cd44ac360e21b815260040160405180910390fd5b82545f908190801561188b575f6117b1876109ee600185611b7d565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156117f457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361182d57825465ffffffffffff16600160301b6001600160d01b0389160217835561187d565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160301b029216919091179101555b945085935061171192505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160301b029190931617920191909155905081611711565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082e60208301846118e5565b80356001600160a01b038116811461193b575f5ffd5b919050565b5f5f60408385031215611951575f5ffd5b61195a83611925565b946020939093013593505050565b5f5f5f6060848603121561197a575f5ffd5b61198384611925565b925061199160208501611925565b929592945050506040919091013590565b5f602082840312156119b2575f5ffd5b61082e82611925565b60ff60f81b8816815260e060208201525f6119d960e08301896118e5565b82810360408401526119eb81896118e5565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611a40578351835260209384019390920191600101611a22565b50909b9a5050505050505050505050565b5f60208284031215611a61575f5ffd5b5035919050565b5f5f5f5f5f5f60c08789031215611a7d575f5ffd5b611a8687611925565b95506020870135945060408701359350606087013560ff81168114611aa9575f5ffd5b9598949750929560808101359460a0909101359350915050565b5f5f60408385031215611ad4575f5ffd5b611add83611925565b9150611aeb60208401611925565b90509250929050565b5f5f60408385031215611b05575f5ffd5b611b0e83611925565b9150602083013563ffffffff81168114611b26575f5ffd5b809150509250929050565b600181811c90821680611b4557607f821691505b602082108103611b6357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104b6576104b6611b69565b808201808211156104b6576104b6611b69565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160d01b0382811682821603908111156104b6576104b6611b69565b6001600160d01b0381811683821601908111156104b6576104b6611b6956fea2646970667358221220ce37ba66812a31392fb111419dc91f90d68f4239cc40c5165f0922a9a14b8d3b64736f6c634300081e0033","sourceMap":"344:1284:203:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;:::i;:::-;;:::i;:::-;;;1204:14:227;;1197:22;1179:41;;1167:2;1152:18;3902:186:62;1039:187:227;2803:97:62;2881:12;;2803:97;;;1377:25:227;;;1365:2;1350:18;2803:97:62;1231:177:227;4680:244:62;;;;;;:::i;:::-;;:::i;2688:82::-;;;2761:2;1934:36:227;;1922:2;1907:18;2688:82:62;1792:184:227;4299:198:47;;;;;;:::i;:::-;;:::i;1227:399:203:-;;;;;;:::i;:::-;;:::i;:::-;;3041:272:47;;;:::i;5584:117::-;;;;;;:::i;:::-;-1:-1:-1;;;;;5675:19:47;;;5649:7;5675:19;;;:10;:19;;;;;;;;5584:117;;;;-1:-1:-1;;;;;2336:55:227;;;2318:74;;2306:2;2291:18;5584:117:47;2172:226:227;5783:138:47;;;;;;:::i;:::-;;:::i;3237:126:64:-;;;;;;:::i;:::-;;:::i;:::-;;;2577:10:227;2565:23;;;2547:42;;2535:2;2520:18;3237:126:64;2403:192:227;2933:116:62;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:62;2998:7;3024:18;;;;;;;;;;;;2933:116;538:107:80;;;;;;:::i;:::-;-1:-1:-1;;;;;624:14:80;598:7;624:14;;;:7;:14;;;;;;;538:107;5228:557:87;;;:::i;:::-;;;;;;;;;;;;;:::i;5133:175:47:-;;;;;;:::i;:::-;;:::i;2790:96::-;;;:::i;:::-;;;4271:14:227;4259:27;;;4241:46;;4229:2;4214:18;2790:96:47;4097:196:227;1962:93:62;;;:::i;3779:135:47:-;;;;;;:::i;:::-;;:::i;796:305:203:-;;;;;;:::i;:::-;;:::i;3244:178:62:-;;;;;;:::i;:::-;;:::i;5999:554:47:-;;;;;;:::i;:::-;;:::i;3455:140:62:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:62;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;3440:163:64;;;;;;:::i;:::-;;:::i;:::-;;;;5983:13:227;;5998:14;5979:34;5961:53;;6074:4;6062:17;;;6056:24;-1:-1:-1;;;;;6052:85:227;6030:20;;;6023:115;;;;5934:18;3440:163:64;5751:393:227;1760:89:62;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:76;4029:31:62;735:10:76;4045:7:62;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;;:::o;4680:244::-;4767:4;735:10:76;4823:37:62;4839:4;735:10:76;4854:5:62;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:62;;4680:244;-1:-1:-1;;;;4680:244:62:o;4299:198:47:-;4386:7;4412:78;4460:29;4479:9;4460:18;:29::i;:::-;-1:-1:-1;;;;;4412:29:47;;;;;;:20;:29;;;;;;:47;:78::i;:::-;-1:-1:-1;;;;;4405:85:47;;4299:198;-1:-1:-1;;;4299:198:47:o;1227:399:203:-;-1:-1:-1;;;;;1290:16:203;;1286:81;;1329:27;;-1:-1:-1;;;1329:27:203;;;;;;;;;;;1286:81;1380:6;1390:1;1380:11;1376:75;;1414:26;;-1:-1:-1;;;1414:26:203;;;;;;;;;;;1376:75;587:14;1464:6;:33;1460:133;;;1520:62;;-1:-1:-1;;;1520:62:203;;;;;6708:25:227;;;587:14:203;6749:18:227;;;6742:34;6681:18;;1520:62:203;;;;;;;;1460:133;1602:17;1608:2;1612:6;1602:5;:17::i;:::-;1227:399;;:::o;3041:272:47:-;3092:13;3181:18;:16;:18::i;:::-;3170:29;;:7;:5;:7::i;:::-;:29;;;3166:93;;3222:26;;-1:-1:-1;;;3222:26:47;;;;;;;;;;;3166:93;-1:-1:-1;3268:38:47;;;;;;;;;;;;;;;;;;3041:272::o;5783:138::-;735:10:76;5885:29:47;735:10:76;5904:9:47;5885;:29::i;3237:126:64:-;3307:6;3332:24;3348:7;3332:15;:24::i;5228:557:87:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5752;;;5736:1;5752:16;;;;;;;;;-1:-1:-1;;;5566:212:87;;;-1:-1:-1;5566:212:87;;-1:-1:-1;5674:13:87;;-1:-1:-1;5709:4:87;;-1:-1:-1;5736:1:87;-1:-1:-1;5752:16:87;-1:-1:-1;5566:212:87;-1:-1:-1;5228:557:87:o;5133:175:47:-;5209:7;5235:66;5271:29;5290:9;5271:18;:29::i;:::-;5235:17;;:35;:66::i;:::-;-1:-1:-1;;;;;5228:73:47;;5133:175;-1:-1:-1;;5133:175:47:o;2790:96::-;2836:6;2861:18;:16;:18::i;:::-;2854:25;;2790:96;:::o;1962:93:62:-;2009:13;2041:7;2034:14;;;;;:::i;3779:135:47:-;-1:-1:-1;;;;;3869:29:47;;3843:7;3869:29;;;:20;:29;;;;;:38;;:36;:38::i;796:305:203:-;847:6;857:1;847:11;843:75;;881:26;;-1:-1:-1;;;881:26:203;;;;;;;;;;;843:75;587:14;931:6;:33;927:133;;;987:62;;-1:-1:-1;;;987:62:203;;;;;6708:25:227;;;587:14:203;6749:18:227;;;6742:34;6681:18;;987:62:203;6534:248:227;927:133:203;1069:25;1075:10;1087:6;1069:5;:25::i;:::-;796:305;:::o;3244:178:62:-;3313:4;735:10:76;3367:27:62;735:10:76;3384:2:62;3388:5;3367:9;:27::i;5999:554:47:-;6204:6;6186:15;:24;6182:91;;;6233:29;;-1:-1:-1;;;6233:29:47;;;;;1377:25:227;;;1350:18;;6233:29:47;1231:177:227;6182:91:47;6353:57;;;2064:71;6353:57;;;7150:25:227;-1:-1:-1;;;;;7211:55:227;;7191:18;;;7184:83;;;;7283:18;;;7276:34;;;7326:18;;;7319:34;;;6282:14:47;;6299:168;;6326:86;;7122:19:227;;6353:57:47;;;;;;;;;;;;6343:68;;;;;;6326:16;:86::i;:::-;6426:1;6441;6456;6299:13;:168::i;:::-;6282:185;;6477:31;6494:6;6502:5;6477:16;:31::i;:::-;6518:28;6528:6;6536:9;6518;:28::i;:::-;6172:381;5999:554;;;;;;:::o;3440:163:64:-;-1:-1:-1;;;;;;;;;;;;;;;;;3570:26:64;3583:7;3592:3;3570:12;:26::i;:::-;3563:33;3440:163;-1:-1:-1;;;3440:163:64:o;8630:128:62:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;-1:-1:-1;;;;;3561:18:62;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:62;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10593:60;;-1:-1:-1;;;10593:60:62;;-1:-1:-1;;;;;7584:55:227;;10593:60:62;;;7566:74:227;7656:18;;;7649:34;;;7699:18;;;7692:34;;;7539:18;;10593:60:62;7364:368:227;10538:130:62;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:62;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:62;;5448:1;5421:30;;;2318:74:227;2291:18;;5421:30:62;2172:226:227;5376:86:62;-1:-1:-1;;;;;5475:16:62;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:62;;5543:1;5514:32;;;2318:74:227;2291:18;;5514:32:62;2172:226:227;5471:86:62;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;3416:273:47:-;3486:6;3504:23;3530:7;:5;:7::i;:::-;3504:33;;3564:16;3551:29;;:9;:29;3547:90;;3589:48;;-1:-1:-1;;;3589:48:47;;;;;7909:25:227;;;7982:14;7970:27;;7950:18;;;7943:55;7882:18;;3589:48:47;7737:267:227;3547:90:47;3654:28;3672:9;3654:17;:28::i;16485:606:96:-;16603:24;;16570:7;;;16603:24;16702:1;16696:7;;16692:234;;;16719:11;16739:14;16749:3;16739:9;:14::i;:::-;16733:20;;:3;:20;:::i;:::-;21301:28;21364:23;;;21435:4;21419:21;;16719:34;;-1:-1:-1;21415:31:96;;16777:42;;;;;16771:48;;;;16767:149;;;16846:3;16839:10;;16767:149;;;16894:7;:3;16900:1;16894:7;:::i;:::-;16888:13;;16767:149;16705:221;16692:234;16936:11;16950:53;16969:4;16988:3;16993;16998:4;16950:18;:53::i;:::-;16936:67;-1:-1:-1;17021:8:96;;:63;;17036:41;17050:4;17069:7;17075:1;17069:3;:7;:::i;:::-;21301:28;21364:23;;;21435:4;21419:21;;;21415:31;;21191:271;17036:41;:48;-1:-1:-1;;;17036:48:96;;-1:-1:-1;;;;;17036:48:96;17021:63;;;17032:1;17021:63;17014:70;16485:606;-1:-1:-1;;;;;;;16485:606:96:o;7362:208:62:-;-1:-1:-1;;;;;7432:21:62;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:62;;7505:1;7476:32;;;2318:74:227;2291:18;;7476:32:62;2172:226:227;7428:91:62;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;931:109:98:-;977:6;1002:31;1020:12;1002:17;:31::i;6731:312:47:-;-1:-1:-1;;;;;5675:19:47;;;6813;5675;;;:10;:19;;;;;;;;6863:31;;;-1:-1:-1;;6863:31:47;;;;;;;6910:48;;5675:19;;;;;6863:31;5675:19;;;;6910:48;;6813:19;6910:48;6968:68;6987:11;7000:9;7011:24;7027:7;7011:15;:24::i;:::-;6968:18;:68::i;8626:162::-;-1:-1:-1;;;;;8742:29:47;;8699:6;8742:29;;;:20;:29;;;;;18142:24:96;8724:57:47;;:17;:57::i;6105:126:87:-;6151:13;6183:41;:5;6210:13;6183:26;:41::i;6557:135::-;6606:13;6638:47;:8;6668:16;6638:29;:47::i;17211:206:96:-;17306:24;;17273:7;;17347:8;;:63;;17362:41;17376:4;17395:7;17401:1;17395:3;:7;:::i;17362:41::-;:48;-1:-1:-1;;;17362:48:96;;-1:-1:-1;;;;;17362:48:96;17347:63;;;17358:1;17340:70;17211:206;-1:-1:-1;;;17211:206:96:o;5017:176:87:-;5094:7;5120:66;5153:20;:18;:20::i;:::-;5175:10;4093:4:88;4087:11;-1:-1:-1;;;4111:23:88;;4163:4;4154:14;;4147:39;;;;4215:4;4206:14;;4199:34;4271:4;4256:20;;;3918:374;8813:260:86;8898:7;8918:17;8937:18;8957:16;8977:25;8988:4;8994:1;8997;9000;8977:10;:25::i;:::-;8917:85;;;;;;9012:28;9024:5;9031:8;9012:11;:28::i;:::-;-1:-1:-1;9057:9:86;;8813:260;-1:-1:-1;;;;;;8813:260:86:o;1265:222:80:-;-1:-1:-1;;;;;1121:14:80;;1348:15;1121:14;;;:7;:14;;;;;:16;;;;;;;;1396;;;1392:89;;1435:35;;-1:-1:-1;;;1435:35:80;;-1:-1:-1;;;;;8596:55:227;;1435:35:80;;;8578:74:227;8668:18;;;8661:34;;;8551:18;;1435:35:80;8404:297:227;8865:199:47;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;9020:29:47;;;;;;:20;:29;;;;;:37;;9053:3;9020:32;:37::i;9607:432:62:-;-1:-1:-1;;;;;9719:19:62;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:62;;9790:1;9761:32;;;2318:74:227;2291:18;;9761:32:62;2172:226:227;9715:89:62;-1:-1:-1;;;;;9817:21:62;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:62;;9889:1;9861:31;;;2318:74:227;2291:18;;9861:31:62;2172:226:227;9813:90:62;-1:-1:-1;;;;;9912:18:62;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:62;10000:5;-1:-1:-1;;;;;9991:31:62;;10016:5;9991:31;;;;1377:25:227;;1365:2;1350:18;;1231:177;9991:31:62;;;;;;;;9607:432;;;;:::o;2356:413:64:-;2450:30;2464:4;2470:2;2474:5;2450:13;:30::i;:::-;-1:-1:-1;;;;;2494:18:64;;2490:226;;2528:14;2545:13;2881:12:62;;;2803:97;2545:13:64;2528:30;-1:-1:-1;;;;;;2616:12:64;;;2612:94;;;2655:36;;-1:-1:-1;;;2655:36:64;;;;;6708:25:227;;;6749:18;;;6742:34;;;6681:18;;2655:36:64;6534:248:227;2612:94:64;2514:202;;2490:226;2725:37;2746:4;2752:2;2756:5;2725:20;:37::i;14293:213:94:-;14349:6;14379:16;14371:24;;14367:103;;;14418:41;;-1:-1:-1;;;14418:41:94;;14449:2;14418:41;;;8887:36:227;8939:18;;;8932:34;;;8860:18;;14418:41:94;8706:266:227;14367:103:94;-1:-1:-1;14493:5:94;14293:213::o;20859:5181:93:-;20907:7;21025:1;21020;:6;21016:53;;-1:-1:-1;21053:1:93;20859:5181::o;21016:53::-;22009:1;22037;22064:8;22057:16;;22053:92;;22100:3;22093:10;;;;;22128:2;22121:9;22053:92;22169:7;22162:2;:15;22158:90;;22204:2;22197:9;;;;;22231:2;22224:9;22158:90;22272:7;22265:2;:15;22261:90;;22307:2;22300:9;;;;;22334:2;22327:9;22261:90;22375:7;22368:2;:15;22364:89;;22410:2;22403:9;;;;;22437:1;22430:8;22364:89;22477:6;22470:2;:14;22466:87;;22511:1;22504:8;;;;;22537:1;22530:8;22466:87;22577:6;22570:2;:14;22566:87;;22611:1;22604:8;;;;;22637:1;22630:8;22566:87;22677:6;22670:2;:14;22666:61;;22711:1;22704:8;22666:61;23153:1;:6;23164:1;23152:13;;;;;25063:1;23152:13;25063:6;;;;:::i;:::-;;25058:2;:11;25057:18;;25052:23;;25183:1;25176:2;25172:1;:6;;;;;:::i;:::-;;25167:2;:11;25166:18;;25161:23;;25294:1;25287:2;25283:1;:6;;;;;:::i;:::-;;25278:2;:11;25277:18;;25272:23;;25403:1;25396:2;25392:1;:6;;;;;:::i;:::-;;25387:2;:11;25386:18;;25381:23;;25513:1;25506:2;25502:1;:6;;;;;:::i;:::-;;25497:2;:11;25496:18;;25491:23;;25623:1;25616:2;25612:1;:6;;;;;:::i;:::-;;25607:2;:11;25606:18;;25601:23;;25995:28;26020:2;26016:1;:6;;;;;:::i;:::-;;26011:11;;;34792:145:94;25995:28:93;25990:33;;;20859:5181;-1:-1:-1;;;20859:5181:93:o;19831:433:96:-;19988:7;20007:230;20020:4;20014:3;:10;20007:230;;;20040:11;21364:23;;;21435:4;21419:21;;6011:5:93;;;6030:1;6021:5;;;6020:11;6010:21;21415:31:96;;;20095:29;:35;;;;:29;;:35;20091:136;;;20157:3;20150:10;;20091:136;;;20205:7;:3;20211:1;20205:7;:::i;:::-;20199:13;;20091:136;20026:211;20007:230;;;-1:-1:-1;20253:4:96;19831:433;-1:-1:-1;;;19831:433:96:o;3029:133:64:-;-1:-1:-1;;;;;3024:18:62;;3111:7:64;3024:18:62;;;;;;;;;;;3137::64;2933:116:62;7762:789:47;7871:2;-1:-1:-1;;;;;7863:10:47;:4;-1:-1:-1;;;;;7863:10:47;;;:24;;;;;7886:1;7877:6;:10;7863:24;7859:686;;;-1:-1:-1;;;;;7907:18:47;;;7903:315;;-1:-1:-1;;;;;8011:26:47;;7946:16;8011:26;;;:20;:26;;;;;7946:16;;7984:150;;8059:9;8090:26;8109:6;8090:18;:26::i;:::-;7984:5;:150::i;:::-;-1:-1:-1;;;;;7945:189:47;;;-1:-1:-1;;;;;7945:189:47;;;8178:4;-1:-1:-1;;;;;8157:46:47;;8184:8;8194;8157:46;;;;;;6708:25:227;;;6764:2;6749:18;;6742:34;6696:2;6681:18;;6534:248;8157:46:47;;;;;;;;7927:291;;7903:315;-1:-1:-1;;;;;8235:16:47;;;8231:304;;-1:-1:-1;;;;;8337:24:47;;8272:16;8337:24;;;:20;:24;;;;;8272:16;;8310:143;;8383:4;8409:26;8428:6;8409:18;:26::i;8310:143::-;-1:-1:-1;;;;;8271:182:47;;;-1:-1:-1;;;;;8271:182:47;;;8497:2;-1:-1:-1;;;;;8476:44:47;;8501:8;8511;8476:44;;;;;;6708:25:227;;;6764:2;6749:18;;6742:34;6696:2;6681:18;;6534:248;8476:44:47;;;;;;;;8253:282;;7762:789;;;:::o;15293:213:94:-;15349:6;15379:16;15371:24;;15367:103;;;15418:41;;-1:-1:-1;;;15418:41:94;;15449:2;15418:41;;;8887:36:227;8939:18;;;8932:34;;;8860:18;;15418:41:94;8706:266:227;3376:267:82;3470:13;1390:66;3499:46;;3495:142;;3568:15;3577:5;3568:8;:15::i;:::-;3561:22;;;;3495:142;3621:5;3614:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:262:87;3998:7;4029:4;-1:-1:-1;;;;;4038:11:87;4021:28;;:63;;;;;4070:14;4053:13;:31;4021:63;4017:184;;;-1:-1:-1;4107:22:87;;3945:262::o;4017:184::-;4167:23;4304:80;;;2079:95;4304:80;;;11373:25:227;4326:11:87;11414:18:227;;;11407:34;;;;4339:14:87;11457:18:227;;;11450:34;4355:13:87;11500:18:227;;;11493:34;4378:4:87;11543:19:227;;;11536:84;4268:7:87;;11345:19:227;;4304:80:87;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;;7129:1551:86;7255:17;;;8209:66;8196:79;;8192:164;;;-1:-1:-1;8307:1:86;;-1:-1:-1;8311:30:86;;-1:-1:-1;8343:1:86;8291:54;;8192:164;8467:24;;;8450:14;8467:24;;;;;;;;;9607:25:227;;;9680:4;9668:17;;9648:18;;;9641:45;;;;9702:18;;;9695:34;;;9745:18;;;9738:34;;;8467:24:86;;9579:19:227;;8467:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8467:24:86;;-1:-1:-1;;8467:24:86;;;-1:-1:-1;;;;;;;8505:20:86;;8501:113;;-1:-1:-1;8557:1:86;;-1:-1:-1;8561:29:86;;-1:-1:-1;8557:1:86;;-1:-1:-1;8541:62:86;;8501:113;8632:6;-1:-1:-1;8640:20:86;;-1:-1:-1;8640:20:86;;-1:-1:-1;7129:1551:86;;;;;;;;;:::o;11617:532::-;11712:20;11703:5;:29;;;;;;;;:::i;:::-;;11699:444;;11617:532;;:::o;11699:444::-;11808:29;11799:5;:38;;;;;;;;:::i;:::-;;11795:348;;11860:23;;-1:-1:-1;;;11860:23:86;;;;;;;;;;;11795:348;11913:35;11904:5;:44;;;;;;;;:::i;:::-;;11900:243;;11971:46;;-1:-1:-1;;;11971:46:86;;;;;1377:25:227;;;1350:18;;11971:46:86;1231:177:227;11900:243:86;12047:30;12038:5;:39;;;;;;;;:::i;:::-;;12034:109;;12100:32;;-1:-1:-1;;;12100:32:86;;;;;1377:25:227;;;1350:18;;12100:32:86;1231:177:227;18245:138:96;-1:-1:-1;;;;;;;;;;;;;;;;;18354:4:96;:17;;18372:3;18354:22;;;;;;;;;;:::i;:::-;;;;;;;;;;18347:29;;;;;;;;;18354:22;;18347:29;;;;;;-1:-1:-1;;;18347:29:96;;-1:-1:-1;;;;;18347:29:96;;;;;;;;;18245:138;-1:-1:-1;;;18245:138:96:o;5912:1107:62:-;-1:-1:-1;;;;;6001:18:62;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:62;;-1:-1:-1;5997:540:62;;-1:-1:-1;;;;;6211:15:62;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:62;;-1:-1:-1;;;;;7584:55:227;;6290:50:62;;;7566:74:227;7656:18;;;7649:34;;;7699:18;;;7692:34;;;7539:18;;6290:50:62;7364:368:227;6240:115:62;-1:-1:-1;;;;;6475:15:62;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:62;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:62;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:62;6996:4;-1:-1:-1;;;;;6987:25:62;;7006:5;6987:25;;;;1377::227;;1365:2;1350:18;;1231:177;6987:25:62;;;;;;;;5912:1107;;;:::o;7277:399:47:-;-1:-1:-1;;;;;7380:18:47;;7376:107;;7414:58;7420:17;7439:4;7445:26;7464:6;7445:18;:26::i;7414:58::-;;;7376:107;-1:-1:-1;;;;;7496:16:47;;7492:110;;7528:63;7534:17;7553:9;7564:26;7583:6;7564:18;:26::i;7528:63::-;;;7492:110;-1:-1:-1;;;;;5675:19:47;;;5649:7;5675:19;;;:10;:19;;;;;;;;;;;;;;;7611:58;;5675:19;;;;;7662:6;7611:18;:58::i;9451:101::-;9514:7;9540:5;9544:1;9540;:5;:::i;4171:218:94:-;4228:7;-1:-1:-1;;;;;4251:25:94;;4247:105;;;4299:42;;-1:-1:-1;;;4299:42:94;;4330:3;4299:42;;;8887:36:227;8939:18;;;8932:34;;;8860:18;;4299:42:94;8706:266:227;9070:273:47;9237:16;9255;9290:46;9301:7;:5;:7::i;:::-;9310:25;9313:14;:5;:12;:14::i;:::-;9329:5;9310:2;:25;;:::i;:::-;9290:5;;:46;:10;:46::i;:::-;9283:53;;;;9070:273;;;;;;;:::o;9349:96::-;9407:7;9433:5;9437:1;9433;:5;:::i;2080:380:82:-;2139:13;2164:11;2178:16;2189:4;2178:10;:16::i;:::-;2302;;;2313:4;2302:16;;;;;;;;;2164:30;;-1:-1:-1;2282:17:82;;2302:16;;;;;;;;;-1:-1:-1;;;2367:16:82;;;-1:-1:-1;2412:4:82;2403:14;;2396:28;;;;-1:-1:-1;2367:16:82;2080:380::o;15046:210:96:-;15158:16;;15211:38;15219:4;15238:3;15243:5;15211:7;:38::i;2532:247:82:-;2593:7;2665:4;2629:40;;2692:4;2683:13;;2679:71;;;2719:20;;-1:-1:-1;;;2719:20:82;;;;;;;;;;;18559:922:96;18740:11;;18680:16;;;;18766:7;;18762:713;;18789:26;18818:28;18832:4;18838:7;18844:1;18838:3;:7;:::i;18818:28::-;18877:9;;;;-1:-1:-1;18877:9:96;;;;;-1:-1:-1;;;18920:11:96;;-1:-1:-1;;;;;18920:11:96;;19005:13;;;;19001:89;;;19045:30;;-1:-1:-1;;;19045:30:96;;;;;;;;;;;19001:89;19164:3;19153:14;;:7;:14;;;19149:163;;19187:19;;;;-1:-1:-1;;;;;;;;19187:19:96;;;;;;19149:163;;;19255:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;19255:41:96;;;;;;;;;;19245:52;;;;;;;-1:-1:-1;19245:52:96;;;;;;;;;;;;;;-1:-1:-1;;;19245:52:96;;;;;;;;;;19149:163;19333:9;-1:-1:-1;19344:5:96;;-1:-1:-1;19325:25:96;;-1:-1:-1;;;19325:25:96;18762:713;-1:-1:-1;;19391:41:96;;;;;;;;;;;;;;;-1:-1:-1;;;;;19391:41:96;;;;;;;;;;19381:52;;;;;;;-1:-1:-1;19381:52:96;;;;;;;;;;;;;-1:-1:-1;;;19381:52:96;;;;;;;;;;;;-1:-1:-1;;19425:5:96;19447:17;;14:289:227;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;533:196::-;601:20;;-1:-1:-1;;;;;650:54:227;;640:65;;630:93;;719:1;716;709:12;630:93;533:196;;;:::o;734:300::-;802:6;810;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;902:29;921:9;902:29;:::i;:::-;892:39;1000:2;985:18;;;;972:32;;-1:-1:-1;;;734:300:227:o;1413:374::-;1490:6;1498;1506;1559:2;1547:9;1538:7;1534:23;1530:32;1527:52;;;1575:1;1572;1565:12;1527:52;1598:29;1617:9;1598:29;:::i;:::-;1588:39;;1646:38;1680:2;1669:9;1665:18;1646:38;:::i;:::-;1413:374;;1636:48;;-1:-1:-1;;;1753:2:227;1738:18;;;;1725:32;;1413:374::o;1981:186::-;2040:6;2093:2;2081:9;2072:7;2068:23;2064:32;2061:52;;;2109:1;2106;2099:12;2061:52;2132:29;2151:9;2132:29;:::i;2600:1261::-;3006:3;3001;2997:13;2989:6;2985:26;2974:9;2967:45;3048:3;3043:2;3032:9;3028:18;3021:31;2948:4;3075:46;3116:3;3105:9;3101:19;3093:6;3075:46;:::i;:::-;3169:9;3161:6;3157:22;3152:2;3141:9;3137:18;3130:50;3203:33;3229:6;3221;3203:33;:::i;:::-;3267:2;3252:18;;3245:34;;;-1:-1:-1;;;;;3316:55:227;;3310:3;3295:19;;3288:84;3403:3;3388:19;;3381:35;;;3453:22;;;3447:3;3432:19;;3425:51;3525:13;;3547:22;;;3597:2;3623:15;;;;-1:-1:-1;3585:15:227;;;;-1:-1:-1;3666:169:227;3680:6;3677:1;3674:13;3666:169;;;3741:13;;3729:26;;3784:2;3810:15;;;;3775:12;;;;3702:1;3695:9;3666:169;;;-1:-1:-1;3852:3:227;;2600:1261;-1:-1:-1;;;;;;;;;;;2600:1261:227:o;3866:226::-;3925:6;3978:2;3966:9;3957:7;3953:23;3949:32;3946:52;;;3994:1;3991;3984:12;3946:52;-1:-1:-1;4039:23:227;;3866:226;-1:-1:-1;3866:226:227:o;4298:828::-;4400:6;4408;4416;4424;4432;4440;4493:3;4481:9;4472:7;4468:23;4464:33;4461:53;;;4510:1;4507;4500:12;4461:53;4533:29;4552:9;4533:29;:::i;:::-;4523:39;-1:-1:-1;4631:2:227;4616:18;;4603:32;;-1:-1:-1;4732:2:227;4717:18;;4704:32;;-1:-1:-1;4814:2:227;4799:18;;4786:32;4862:4;4849:18;;4837:31;;4827:59;;4882:1;4879;4872:12;4827:59;4298:828;;;;-1:-1:-1;4298:828:227;;4985:3;4970:19;;4957:33;;5089:3;5074:19;;;5061:33;;-1:-1:-1;4298:828:227;-1:-1:-1;;4298:828:227:o;5131:260::-;5199:6;5207;5260:2;5248:9;5239:7;5235:23;5231:32;5228:52;;;5276:1;5273;5266:12;5228:52;5299:29;5318:9;5299:29;:::i;:::-;5289:39;;5347:38;5381:2;5370:9;5366:18;5347:38;:::i;:::-;5337:48;;5131:260;;;;;:::o;5396:350::-;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;;5642:2;5631:9;5627:18;5614:32;5686:10;5679:5;5675:22;5668:5;5665:33;5655:61;;5712:1;5709;5702:12;5655:61;5735:5;5725:15;;;5396:350;;;;;:::o;6149:380::-;6228:1;6224:12;;;;6271;;;6292:61;;6346:4;6338:6;6334:17;6324:27;;6292:61;6399:2;6391:6;6388:14;6368:18;6365:38;6362:161;;6445:10;6440:3;6436:20;6433:1;6426:31;6480:4;6477:1;6470:15;6508:4;6505:1;6498:15;6362:161;;6149:380;;;:::o;8009:127::-;8070:10;8065:3;8061:20;8058:1;8051:31;8101:4;8098:1;8091:15;8125:4;8122:1;8115:15;8141:128;8208:9;;;8229:11;;;8226:37;;;8243:18;;:::i;8274:125::-;8339:9;;;8360:10;;;8357:36;;;8373:18;;:::i;8977:127::-;9038:10;9033:3;9029:20;9026:1;9019:31;9069:4;9066:1;9059:15;9093:4;9090:1;9083:15;9783:127;9844:10;9839:3;9835:20;9832:1;9825:31;9875:4;9872:1;9865:15;9899:4;9896:1;9889:15;10097:127;10158:10;10153:3;10149:20;10146:1;10139:31;10189:4;10186:1;10179:15;10213:4;10210:1;10203:15;10229:303;-1:-1:-1;;;;;10364:62:227;;;10300;;;10296:131;;10439:64;;10436:90;;;10506:18;;:::i;10809:300::-;-1:-1:-1;;;;;10878:62:227;;;10942;;;10874:131;;11017:63;;11014:89;;;11083:18;;:::i","linkReferences":{},"immutableReferences":{"59478":[{"start":4690,"length":32}],"59480":[{"start":4648,"length":32}],"59482":[{"start":4606,"length":32}],"59484":[{"start":4771,"length":32}],"59486":[{"start":4811,"length":32}],"59489":[{"start":2818,"length":32}],"59492":[{"start":2863,"length":32}]}},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","checkpoints(address,uint32)":"f1127ed8","clock()":"91ddadf4","decimals()":"313ce567","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","eip712Domain()":"84b0196e","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","mint(address,uint256)":"40c10f19","mint(uint256)":"a0712d68","name()":"06fdde03","nonces(address)":"7ecebe00","numCheckpoints(address)":"6fcfff45","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"ERC20ExceededSafeSupply\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"name\":\"ERC5805FutureLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC6372InconsistentClock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"Erc20Votes__AmountExceedsMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Votes__NoZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Votes__NoZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"VotesExpiredSignature\",\"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\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"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\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}],\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":[{\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"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\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature is invalid.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20ExceededSafeSupply(uint256,uint256)\":[{\"details\":\"Total supply cap has been exceeded, introducing a risk of votes overflowing.\"}],\"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.\"}}],\"ERC5805FutureLookup(uint256,uint48)\":[{\"details\":\"Lookup to future votes is not available.\"}],\"ERC6372InconsistentClock()\":[{\"details\":\"The clock was incorrectly modified.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}],\"VotesExpiredSignature(uint256)\":[{\"details\":\"The signature used has expired.\"}]},\"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.\"},\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of voting units.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in ERC-6372.\"},\"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\":\"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\":\"Returns the value of tokens owned by `account`.\"},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"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}.\"},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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/SimpleErc20Votes.sol\":\"SimpleErc20Votes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee\",\"dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7\",\"dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578\",\"dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435\",\"dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a\",\"dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99\",\"dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4\",\"dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6\",\"dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256\",\"dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc\"]},\"test/mocks/SimpleErc20Votes.sol\":{\"keccak256\":\"0xdeb81f4f81aee2d28058116048d03e0e6603f90e2a55b4f42ee846bb6af6cd6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b360b01e4f960770e8de90b4b984329cf339e1882519cfda1a88f02e1df495\",\"dweb:/ipfs/QmNzRpGkLxrzcEERrwFpRXqWVMsMom8kW4UpjZTTYxtD9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint256","name":"increasedSupply","type":"uint256"},{"internalType":"uint256","name":"cap","type":"uint256"}],"type":"error","name":"ERC20ExceededSafeSupply"},{"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":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint48","name":"clock","type":"uint48"}],"type":"error","name":"ERC5805FutureLookup"},{"inputs":[],"type":"error","name":"ERC6372InconsistentClock"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"type":"error","name":"Erc20Votes__AmountExceedsMax"},{"inputs":[],"type":"error","name":"Erc20Votes__NoZeroAddress"},{"inputs":[],"type":"error","name":"Erc20Votes__NoZeroAmount"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[{"internalType":"uint256","name":"expiry","type":"uint256"}],"type":"error","name":"VotesExpiredSignature"},{"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":"delegator","type":"address","indexed":true},{"internalType":"address","name":"fromDelegate","type":"address","indexed":true},{"internalType":"address","name":"toDelegate","type":"address","indexed":true}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegate","type":"address","indexed":true},{"internalType":"uint256","name":"previousVotes","type":"uint256","indexed":false},{"internalType":"uint256","name":"newVotes","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","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":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}]},{"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"stateMutability":"view","type":"function","name":"checkpoints","outputs":[{"internalType":"struct Checkpoints.Checkpoint208","name":"","type":"tuple","components":[{"internalType":"uint48","name":"_key","type":"uint48"},{"internalType":"uint208","name":"_value","type":"uint208"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","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":"delegateBySig"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"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":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"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":{"CLOCK_MODE()":{"details":"Machine-readable description of the clock as specified in ERC-6372."},"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":"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":"Returns the value of tokens owned by `account`."},"checkpoints(address,uint32)":{"details":"Get the `pos`-th checkpoint for `account`."},"clock()":{"details":"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match."},"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}."},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined."},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined."},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the next unused nonce for an address."},"numCheckpoints(address)":{"details":"Get number of checkpoints for `account`."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/SimpleErc20Votes.sol":"SimpleErc20Votes"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol":{"keccak256":"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6","urls":["bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee","dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol":{"keccak256":"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7","urls":["bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7","dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol":{"keccak256":"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd","urls":["bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578","dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol":{"keccak256":"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6","urls":["bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435","dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol":{"keccak256":"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a","urls":["bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a","dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"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/Nonces.sol":{"keccak256":"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f","urls":["bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e","dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c","urls":["bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99","dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4","urls":["bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4","dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77","urls":["bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6","dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05","urls":["bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256","dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc"],"license":"MIT"},"test/mocks/SimpleErc20Votes.sol":{"keccak256":"0xdeb81f4f81aee2d28058116048d03e0e6603f90e2a55b4f42ee846bb6af6cd6a","urls":["bzz-raw://75b360b01e4f960770e8de90b4b984329cf339e1882519cfda1a88f02e1df495","dweb:/ipfs/QmNzRpGkLxrzcEERrwFpRXqWVMsMom8kW4UpjZTTYxtD9H"],"license":"MIT"}},"version":1},"id":203} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"CLOCK_MODE","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"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":"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":"checkpoints","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"pos","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Checkpoints.Checkpoint208","components":[{"name":"_key","type":"uint48","internalType":"uint48"},{"name":"_value","type":"uint208","internalType":"uint208"}]}],"stateMutability":"view"},{"type":"function","name":"clock","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateBySig","inputs":[{"name":"delegatee","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"expiry","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":"delegates","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPastTotalSupply","inputs":[{"name":"timepoint","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPastVotes","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"timepoint","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVotes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"mint","inputs":[{"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":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numCheckpoints","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"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":"DelegateChanged","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"fromDelegate","type":"address","indexed":true,"internalType":"address"},{"name":"toDelegate","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegate","type":"address","indexed":true,"internalType":"address"},{"name":"previousVotes","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newVotes","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"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":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20ExceededSafeSupply","inputs":[{"name":"increasedSupply","type":"uint256","internalType":"uint256"},{"name":"cap","type":"uint256","internalType":"uint256"}]},{"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":"ERC5805FutureLookup","inputs":[{"name":"timepoint","type":"uint256","internalType":"uint256"},{"name":"clock","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"ERC6372InconsistentClock","inputs":[]},{"type":"error","name":"Erc20Votes__AmountExceedsMax","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Erc20Votes__NoZeroAddress","inputs":[]},{"type":"error","name":"Erc20Votes__NoZeroAmount","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]},{"type":"error","name":"VotesExpiredSignature","inputs":[{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x610160604052348015610010575f5ffd5b5060405180604001604052806005815260200164566f74657360d81b8152506040518060400160405280600381526020016218171960e91b81525060405180604001604052806005815260200164566f74657360d81b8152506040518060400160405280600381526020016256545360e81b8152508160039081610094919061026a565b5060046100a1828261026a565b506100b19150839050600561015a565b610120526100c081600661015a565b61014052815160208084019190912060e052815190820120610100524660a05261014c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05261037c565b5f6020835110156101755761016e8361018c565b9050610186565b81610180848261026a565b5060ff90505b92915050565b5f5f829050601f815111156101bf578260405163305a27a960e01b81526004016101b69190610324565b60405180910390fd5b80516101ca82610359565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101fa57607f821691505b60208210810361021857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561026557805f5260205f20601f840160051c810160208510156102435750805b601f840160051c820191505b81811015610262575f815560010161024f565b50505b505050565b81516001600160401b03811115610283576102836101d2565b6102978161029184546101e6565b8461021e565b6020601f8211600181146102c9575f83156102b25750848201515b5f19600385901b1c1916600184901b178455610262565b5f84815260208120601f198516915b828110156102f857878501518255602094850194600190920191016102d8565b508482101561031557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610218575f1960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611c536103cd5f395f610b2f01525f610b0201525f6112cb01525f6112a301525f6111fe01525f61122801525f6112520152611c535ff3fe608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd5780639ab24eb011610088578063c3cda52011610063578063c3cda52014610389578063dd62ed3e1461039c578063f1127ed8146103d4575f5ffd5b80639ab24eb014610350578063a0712d6814610363578063a9059cbb14610376575f5ffd5b80638e539e8c116100b85780638e539e8c1461031657806391ddadf41461032957806395d89b4114610348575f5ffd5b806370a08231146102ab5780637ecebe00146102d357806384b0196e146102fb575f5ffd5b80633a46b1a81161013d578063587cde1e11610118578063587cde1e1461022d5780635c19a95c146102705780636fcfff4514610283575f5ffd5b80633a46b1a8146101fd57806340c10f19146102105780634bf5d7e914610225575f5ffd5b806318160ddd1161016d57806318160ddd146101c957806323b872dd146101db578063313ce567146101ee575f5ffd5b806306fdde0314610188578063095ea7b3146101a6575b5f5ffd5b610190610413565b60405161019d9190611913565b60405180910390f35b6101b96101b4366004611940565b6104a3565b604051901515815260200161019d565b6002545b60405190815260200161019d565b6101b96101e9366004611968565b6104bc565b6040516012815260200161019d565b6101cd61020b366004611940565b6104df565b61022361021e366004611940565b610519565b005b6101906105af565b61025861023b3660046119a2565b6001600160a01b039081165f908152600860205260409020541690565b6040516001600160a01b03909116815260200161019d565b61022361027e3660046119a2565b610627565b6102966102913660046119a2565b610632565b60405163ffffffff909116815260200161019d565b6101cd6102b93660046119a2565b6001600160a01b03165f9081526020819052604090205490565b6101cd6102e13660046119a2565b6001600160a01b03165f9081526007602052604090205490565b61030361063c565b60405161019d97969594939291906119bb565b6101cd610324366004611a51565b61067e565b6103316106a2565b60405165ffffffffffff909116815260200161019d565b6101906106b0565b6101cd61035e3660046119a2565b6106bf565b610223610371366004611a51565b6106df565b6101b9610384366004611940565b610748565b610223610397366004611a68565b610755565b6101cd6103aa366004611ac3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6103e76103e2366004611af4565b610811565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161019d565b60606003805461042290611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461044e90611b31565b80156104995780601f1061047057610100808354040283529160200191610499565b820191905f5260205f20905b81548152906001019060200180831161047c57829003601f168201915b5050505050905090565b5f336104b0818585610835565b60019150505b92915050565b5f336104c9858285610847565b6104d48585856108c3565b506001949350505050565b5f6105096104ec83610920565b6001600160a01b0385165f9081526009602052604090209061096e565b6001600160d01b03169392505050565b6001600160a01b0382166105405760405163176d8d5560e11b815260040160405180910390fd5b805f0361056057604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d631000008111156105a1576040516369003ff160e01b81526004810182905268056bc75e2d6310000060248201526044015b60405180910390fd5b6105ab8282610a1e565b5050565b60606105b9610a52565b65ffffffffffff166105c96106a2565b65ffffffffffff16146105ef576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336105ab8183610a5c565b5f6104b682610ada565b5f6060805f5f5f606061064d610afb565b610655610b28565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f61069361068b83610920565b600a9061096e565b6001600160d01b031692915050565b5f6106ab610a52565b905090565b60606004805461042290611b31565b6001600160a01b0381165f90815260096020526040812061069390610b55565b805f036106ff57604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d6310000081111561073b576040516369003ff160e01b81526004810182905268056bc75e2d631000006024820152604401610598565b6107453382610a1e565b50565b5f336104b08185856108c3565b8342111561077957604051632341d78760e11b815260048101859052602401610598565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f906107f2906107ea9060a00160405160208183030381529060405280519060200120610b8c565b858585610bb8565b90506107fe8187610be4565b6108088188610a5c565b50505050505050565b604080518082019091525f808252602082015261082e8383610c36565b9392505050565b6108428383836001610c6a565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198110156108bd57818110156108af57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610598565b6108bd84848484035f610c6a565b50505050565b6001600160a01b0383166108ec57604051634b637e8f60e11b81525f6004820152602401610598565b6001600160a01b0382166109155760405163ec442f0560e01b81525f6004820152602401610598565b610842838383610d3c565b5f5f61092a6106a2565b90508065ffffffffffff16831061096557604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610598565b61082e83610da2565b81545f90818160058111156109ca575f61098784610dd8565b6109919085611b7d565b5f8881526020902090915081015465ffffffffffff90811690871610156109ba578091506109c8565b6109c5816001611b90565b92505b505b5f6109d787878585610f3d565b90508015610a11576109fb876109ee600184611b7d565b5f91825260209091200190565b54600160301b90046001600160d01b0316610a13565b5f5b979650505050505050565b6001600160a01b038216610a475760405163ec442f0560e01b81525f6004820152602401610598565b6105ab5f8383610d3c565b5f6106ab43610da2565b6001600160a01b038281165f81815260086020526040808220805486861673ffffffffffffffffffffffffffffffffffffffff19821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46108428183610ad586610f93565b610fb0565b6001600160a01b0381165f908152600960205260408120546104b690611119565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006005611149565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006006611149565b80545f908015610b8457610b6e836109ee600184611b7d565b54600160301b90046001600160d01b031661082e565b5f9392505050565b5f6104b6610b986111f2565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f610bc88888888861131b565b925092509250610bd882826113e3565b50909695505050505050565b6001600160a01b0382165f908152600760205260409020805460018101909155818114610842576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610598565b604080518082019091525f80825260208201526001600160a01b0383165f90815260096020526040902061082e908361149b565b6001600160a01b038416610c935760405163e602df0560e01b81525f6004820152602401610598565b6001600160a01b038316610cbc57604051634a1406b160e11b81525f6004820152602401610598565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156108bd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2e91815260200190565b60405180910390a350505050565b610d47838383611508565b6001600160a01b038316610d97575f610d5f60025490565b90506001600160d01b0380821115610d9457604051630e58ae9360e11b81526004810183905260248101829052604401610598565b50505b61084283838361162e565b5f65ffffffffffff821115610dd4576040516306dfcc6560e41b81526030600482015260248101839052604401610598565b5090565b5f60018211610de5575090565b8160017001000000000000000000000000000000008210610e0b5760809190911c9060401b5b680100000000000000008210610e265760409190911c9060201b5b6401000000008210610e3d5760209190911c9060101b5b620100008210610e525760109190911c9060081b5b6101008210610e665760089190911c9060041b5b60108210610e795760049190911c9060021b5b60048210610e855760011b5b600302600190811c90818581610e9d57610e9d611ba3565b048201901c90506001818581610eb557610eb5611ba3565b048201901c90506001818581610ecd57610ecd611ba3565b048201901c90506001818581610ee557610ee5611ba3565b048201901c90506001818581610efd57610efd611ba3565b048201901c90506001818581610f1557610f15611ba3565b048201901c9050610f34818581610f2e57610f2e611ba3565b04821190565b90039392505050565b5f5b81831015610f8b575f85815260209020838316600285851804019081015465ffffffffffff86811691161115610f7757809250610f85565b610f82816001611b90565b93505b50610f3f565b509392505050565b6001600160a01b0381165f908152602081905260408120546104b6565b816001600160a01b0316836001600160a01b031614158015610fd157505f81115b15610842576001600160a01b03831615611078576001600160a01b0383165f9081526009602052604081208190611013906116a361100e866116ae565b6116e1565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161106d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610842576001600160a01b0382165f90815260096020526040812081906110b09061171961100e866116ae565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161110a929190918252602082015260400190565b60405180910390a25050505050565b5f63ffffffff821115610dd4576040516306dfcc6560e41b81526020600482015260248101839052604401610598565b606060ff83146111635761115c83611724565b90506104b6565b81805461116f90611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461119b90611b31565b80156111e65780601f106111bd576101008083540402835291602001916111e6565b820191905f5260205f20905b8154815290600101906020018083116111c957829003601f168201915b505050505090506104b6565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561124a57507f000000000000000000000000000000000000000000000000000000000000000046145b1561127457507f000000000000000000000000000000000000000000000000000000000000000090565b6106ab604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561135457505f915060039050826113d9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113a5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166113d057505f9250600191508290506113d9565b92505f91508190505b9450945094915050565b5f8260038111156113f6576113f6611bb7565b036113ff575050565b600182600381111561141357611413611bb7565b036114315760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561144557611445611bb7565b036114665760405163fce698f760e01b815260048101829052602401610598565b600382600381111561147a5761147a611bb7565b036105ab576040516335e2f38360e21b815260048101829052602401610598565b604080518082019091525f8082526020820152825f018263ffffffff16815481106114c8576114c8611bcb565b5f9182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6001600160a01b038316611532578060025f8282546115279190611b90565b909155506115a29050565b6001600160a01b0383165f90815260208190526040902054818110156115845760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610598565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166115be576002805482900390556115dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161162191815260200190565b60405180910390a3505050565b6001600160a01b0383166116505761164d600a61171961100e846116ae565b50505b6001600160a01b0382166116725761166f600a6116a361100e846116ae565b50505b6001600160a01b038381165f9081526008602052604080822054858416835291205461084292918216911683610fb0565b5f61082e8284611bdf565b5f6001600160d01b03821115610dd4576040516306dfcc6560e41b815260d0600482015260248101839052604401610598565b5f5f61170c6116ee6106a2565b6117046116fa88610b55565b868863ffffffff16565b879190611761565b915091505b935093915050565b5f61082e8284611bfe565b60605f6117308361176e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8061170c858585611795565b5f60ff8216601f8111156104b657604051632cd44ac360e21b815260040160405180910390fd5b82545f908190801561188b575f6117b1876109ee600185611b7d565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156117f457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361182d57825465ffffffffffff16600160301b6001600160d01b0389160217835561187d565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160301b029216919091179101555b945085935061171192505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160301b029190931617920191909155905081611711565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082e60208301846118e5565b80356001600160a01b038116811461193b575f5ffd5b919050565b5f5f60408385031215611951575f5ffd5b61195a83611925565b946020939093013593505050565b5f5f5f6060848603121561197a575f5ffd5b61198384611925565b925061199160208501611925565b929592945050506040919091013590565b5f602082840312156119b2575f5ffd5b61082e82611925565b60ff60f81b8816815260e060208201525f6119d960e08301896118e5565b82810360408401526119eb81896118e5565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611a40578351835260209384019390920191600101611a22565b50909b9a5050505050505050505050565b5f60208284031215611a61575f5ffd5b5035919050565b5f5f5f5f5f5f60c08789031215611a7d575f5ffd5b611a8687611925565b95506020870135945060408701359350606087013560ff81168114611aa9575f5ffd5b9598949750929560808101359460a0909101359350915050565b5f5f60408385031215611ad4575f5ffd5b611add83611925565b9150611aeb60208401611925565b90509250929050565b5f5f60408385031215611b05575f5ffd5b611b0e83611925565b9150602083013563ffffffff81168114611b26575f5ffd5b809150509250929050565b600181811c90821680611b4557607f821691505b602082108103611b6357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104b6576104b6611b69565b808201808211156104b6576104b6611b69565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160d01b0382811682821603908111156104b6576104b6611b69565b6001600160d01b0381811683821601908111156104b6576104b6611b6956fea2646970667358221220474deb34898e8f0043356e83489a12d8a14b700b7c951cb2c45ad00707870e8264736f6c634300081e0033","sourceMap":"344:1284:184:-:0;;;608:62;;;;;;;;;;3428:431:81;;;;;;;;;;;;;-1:-1:-1;;;3428:431:81;;;;;;;;;;;;;;;;-1:-1:-1;;;3428:431:81;;;1582:113:54;;;;;;;;;;;;;-1:-1:-1;;;1582:113:54;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:113:54;;;1656:5;1648;:13;;;;;;:::i;:::-;-1:-1:-1;1671:7:54;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;3501:45:81;;-1:-1:-1;3501:4:81;;-1:-1:-1;3532:13:81;3501:30;:45::i;:::-;3493:53;;3567:51;:7;3601:16;3567:33;:51::i;:::-;3556:62;;3642:22;;;;;;;;;;3628:36;;3691:25;;;;;;3674:42;;3744:13;3727:30;;3792:23;4326:11;;4339:14;;4304:80;;;2079:95;4304:80;;;2914:25:187;2955:18;;;2948:34;;;;2998:18;;;2991:34;4355:13:81;3041:18:187;;;3034:34;4378:4:81;3084:19:187;;;3077:61;4268:7:81;;2886:19:187;;4304:80:81;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;;3792:23;3767:48;;-1:-1:-1;;3847:4:81;3825:27;;344:1284:184;;2893:342:76;2989:11;3038:4;3022:5;3016:19;:26;3012:217;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3012:217;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1390:66:76;;-1:-1:-1;3012:217:76;2893:342;;;;:::o;1708:288::-;1773:11;1796:17;1822:3;1796:30;;1854:4;1840;:11;:18;1836:74;;;1895:3;1881:18;;-1:-1:-1;;;1881:18:76;;;;;;;;:::i;:::-;;;;;;;;1836:74;1976:11;;1959:13;1976:4;1959:13;:::i;:::-;1951:36;;1708:288;-1:-1:-1;;;1708:288:76:o;14:127:187:-;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:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:187;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;;1082:3;;748:421;657:518;;;:::o;1351:1299::-;1471:10;;-1:-1:-1;;;;;1493:30:187;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1701:4;1732:2;1721:14;;1749:1;1744:649;;;;2437:1;2454:6;2451:89;;;-1:-1:-1;2506:19:187;;;2500:26;2451:89;-1:-1:-1;;1308:1:187;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2553:81;;1714:930;;1744:649;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1780:20:187;;;1898:222;1912:7;1909:1;1906:14;1898:222;;;1994:19;;;1988:26;1973:42;;2101:4;2086:20;;;;2054:1;2042:14;;;;1928:12;1898:222;;;1902:3;2148:6;2139:7;2136:19;2133:201;;;2209:19;;;2203:26;-1:-1:-1;;2292:1:187;2288:14;;;2304:3;2284:24;2280:37;2276:42;2261:58;2246:74;;2133:201;-1:-1:-1;;;;2380:1:187;2364:14;;;2360:22;2347:36;;-1:-1:-1;1351:1299:187:o;3149:418::-;3298:2;3287:9;3280:21;3261:4;3330:6;3324:13;3373:6;3368:2;3357:9;3353:18;3346:34;3432:6;3427:2;3419:6;3415:15;3410:2;3399:9;3395:18;3389:50;3488:1;3483:2;3474:6;3463:9;3459:22;3455:31;3448:42;3558:2;3551;3547:7;3542:2;3534:6;3530:15;3526:29;3515:9;3511:45;3507:54;3499:62;;;3149:418;;;;:::o;3572:297::-;3690:12;;3737:4;3726:16;;;3720:23;;3690:12;3755:16;;3752:111;;;-1:-1:-1;;3829:4:187;3825:17;;;;3822:1;3818:25;3814:38;3803:50;;3572:297;-1:-1:-1;3572:297:187:o;:::-;344:1284:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd5780639ab24eb011610088578063c3cda52011610063578063c3cda52014610389578063dd62ed3e1461039c578063f1127ed8146103d4575f5ffd5b80639ab24eb014610350578063a0712d6814610363578063a9059cbb14610376575f5ffd5b80638e539e8c116100b85780638e539e8c1461031657806391ddadf41461032957806395d89b4114610348575f5ffd5b806370a08231146102ab5780637ecebe00146102d357806384b0196e146102fb575f5ffd5b80633a46b1a81161013d578063587cde1e11610118578063587cde1e1461022d5780635c19a95c146102705780636fcfff4514610283575f5ffd5b80633a46b1a8146101fd57806340c10f19146102105780634bf5d7e914610225575f5ffd5b806318160ddd1161016d57806318160ddd146101c957806323b872dd146101db578063313ce567146101ee575f5ffd5b806306fdde0314610188578063095ea7b3146101a6575b5f5ffd5b610190610413565b60405161019d9190611913565b60405180910390f35b6101b96101b4366004611940565b6104a3565b604051901515815260200161019d565b6002545b60405190815260200161019d565b6101b96101e9366004611968565b6104bc565b6040516012815260200161019d565b6101cd61020b366004611940565b6104df565b61022361021e366004611940565b610519565b005b6101906105af565b61025861023b3660046119a2565b6001600160a01b039081165f908152600860205260409020541690565b6040516001600160a01b03909116815260200161019d565b61022361027e3660046119a2565b610627565b6102966102913660046119a2565b610632565b60405163ffffffff909116815260200161019d565b6101cd6102b93660046119a2565b6001600160a01b03165f9081526020819052604090205490565b6101cd6102e13660046119a2565b6001600160a01b03165f9081526007602052604090205490565b61030361063c565b60405161019d97969594939291906119bb565b6101cd610324366004611a51565b61067e565b6103316106a2565b60405165ffffffffffff909116815260200161019d565b6101906106b0565b6101cd61035e3660046119a2565b6106bf565b610223610371366004611a51565b6106df565b6101b9610384366004611940565b610748565b610223610397366004611a68565b610755565b6101cd6103aa366004611ac3565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6103e76103e2366004611af4565b610811565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161019d565b60606003805461042290611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461044e90611b31565b80156104995780601f1061047057610100808354040283529160200191610499565b820191905f5260205f20905b81548152906001019060200180831161047c57829003601f168201915b5050505050905090565b5f336104b0818585610835565b60019150505b92915050565b5f336104c9858285610847565b6104d48585856108c3565b506001949350505050565b5f6105096104ec83610920565b6001600160a01b0385165f9081526009602052604090209061096e565b6001600160d01b03169392505050565b6001600160a01b0382166105405760405163176d8d5560e11b815260040160405180910390fd5b805f0361056057604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d631000008111156105a1576040516369003ff160e01b81526004810182905268056bc75e2d6310000060248201526044015b60405180910390fd5b6105ab8282610a1e565b5050565b60606105b9610a52565b65ffffffffffff166105c96106a2565b65ffffffffffff16146105ef576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336105ab8183610a5c565b5f6104b682610ada565b5f6060805f5f5f606061064d610afb565b610655610b28565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f61069361068b83610920565b600a9061096e565b6001600160d01b031692915050565b5f6106ab610a52565b905090565b60606004805461042290611b31565b6001600160a01b0381165f90815260096020526040812061069390610b55565b805f036106ff57604051635bcf558960e01b815260040160405180910390fd5b68056bc75e2d6310000081111561073b576040516369003ff160e01b81526004810182905268056bc75e2d631000006024820152604401610598565b6107453382610a1e565b50565b5f336104b08185856108c3565b8342111561077957604051632341d78760e11b815260048101859052602401610598565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f906107f2906107ea9060a00160405160208183030381529060405280519060200120610b8c565b858585610bb8565b90506107fe8187610be4565b6108088188610a5c565b50505050505050565b604080518082019091525f808252602082015261082e8383610c36565b9392505050565b6108428383836001610c6a565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198110156108bd57818110156108af57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610598565b6108bd84848484035f610c6a565b50505050565b6001600160a01b0383166108ec57604051634b637e8f60e11b81525f6004820152602401610598565b6001600160a01b0382166109155760405163ec442f0560e01b81525f6004820152602401610598565b610842838383610d3c565b5f5f61092a6106a2565b90508065ffffffffffff16831061096557604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610598565b61082e83610da2565b81545f90818160058111156109ca575f61098784610dd8565b6109919085611b7d565b5f8881526020902090915081015465ffffffffffff90811690871610156109ba578091506109c8565b6109c5816001611b90565b92505b505b5f6109d787878585610f3d565b90508015610a11576109fb876109ee600184611b7d565b5f91825260209091200190565b54600160301b90046001600160d01b0316610a13565b5f5b979650505050505050565b6001600160a01b038216610a475760405163ec442f0560e01b81525f6004820152602401610598565b6105ab5f8383610d3c565b5f6106ab43610da2565b6001600160a01b038281165f81815260086020526040808220805486861673ffffffffffffffffffffffffffffffffffffffff19821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46108428183610ad586610f93565b610fb0565b6001600160a01b0381165f908152600960205260408120546104b690611119565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006005611149565b60606106ab7f00000000000000000000000000000000000000000000000000000000000000006006611149565b80545f908015610b8457610b6e836109ee600184611b7d565b54600160301b90046001600160d01b031661082e565b5f9392505050565b5f6104b6610b986111f2565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f610bc88888888861131b565b925092509250610bd882826113e3565b50909695505050505050565b6001600160a01b0382165f908152600760205260409020805460018101909155818114610842576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610598565b604080518082019091525f80825260208201526001600160a01b0383165f90815260096020526040902061082e908361149b565b6001600160a01b038416610c935760405163e602df0560e01b81525f6004820152602401610598565b6001600160a01b038316610cbc57604051634a1406b160e11b81525f6004820152602401610598565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156108bd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d2e91815260200190565b60405180910390a350505050565b610d47838383611508565b6001600160a01b038316610d97575f610d5f60025490565b90506001600160d01b0380821115610d9457604051630e58ae9360e11b81526004810183905260248101829052604401610598565b50505b61084283838361162e565b5f65ffffffffffff821115610dd4576040516306dfcc6560e41b81526030600482015260248101839052604401610598565b5090565b5f60018211610de5575090565b8160017001000000000000000000000000000000008210610e0b5760809190911c9060401b5b680100000000000000008210610e265760409190911c9060201b5b6401000000008210610e3d5760209190911c9060101b5b620100008210610e525760109190911c9060081b5b6101008210610e665760089190911c9060041b5b60108210610e795760049190911c9060021b5b60048210610e855760011b5b600302600190811c90818581610e9d57610e9d611ba3565b048201901c90506001818581610eb557610eb5611ba3565b048201901c90506001818581610ecd57610ecd611ba3565b048201901c90506001818581610ee557610ee5611ba3565b048201901c90506001818581610efd57610efd611ba3565b048201901c90506001818581610f1557610f15611ba3565b048201901c9050610f34818581610f2e57610f2e611ba3565b04821190565b90039392505050565b5f5b81831015610f8b575f85815260209020838316600285851804019081015465ffffffffffff86811691161115610f7757809250610f85565b610f82816001611b90565b93505b50610f3f565b509392505050565b6001600160a01b0381165f908152602081905260408120546104b6565b816001600160a01b0316836001600160a01b031614158015610fd157505f81115b15610842576001600160a01b03831615611078576001600160a01b0383165f9081526009602052604081208190611013906116a361100e866116ae565b6116e1565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161106d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610842576001600160a01b0382165f90815260096020526040812081906110b09061171961100e866116ae565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161110a929190918252602082015260400190565b60405180910390a25050505050565b5f63ffffffff821115610dd4576040516306dfcc6560e41b81526020600482015260248101839052604401610598565b606060ff83146111635761115c83611724565b90506104b6565b81805461116f90611b31565b80601f016020809104026020016040519081016040528092919081815260200182805461119b90611b31565b80156111e65780601f106111bd576101008083540402835291602001916111e6565b820191905f5260205f20905b8154815290600101906020018083116111c957829003601f168201915b505050505090506104b6565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561124a57507f000000000000000000000000000000000000000000000000000000000000000046145b1561127457507f000000000000000000000000000000000000000000000000000000000000000090565b6106ab604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561135457505f915060039050826113d9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156113a5573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166113d057505f9250600191508290506113d9565b92505f91508190505b9450945094915050565b5f8260038111156113f6576113f6611bb7565b036113ff575050565b600182600381111561141357611413611bb7565b036114315760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561144557611445611bb7565b036114665760405163fce698f760e01b815260048101829052602401610598565b600382600381111561147a5761147a611bb7565b036105ab576040516335e2f38360e21b815260048101829052602401610598565b604080518082019091525f8082526020820152825f018263ffffffff16815481106114c8576114c8611bcb565b5f9182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6001600160a01b038316611532578060025f8282546115279190611b90565b909155506115a29050565b6001600160a01b0383165f90815260208190526040902054818110156115845760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610598565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166115be576002805482900390556115dc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161162191815260200190565b60405180910390a3505050565b6001600160a01b0383166116505761164d600a61171961100e846116ae565b50505b6001600160a01b0382166116725761166f600a6116a361100e846116ae565b50505b6001600160a01b038381165f9081526008602052604080822054858416835291205461084292918216911683610fb0565b5f61082e8284611bdf565b5f6001600160d01b03821115610dd4576040516306dfcc6560e41b815260d0600482015260248101839052604401610598565b5f5f61170c6116ee6106a2565b6117046116fa88610b55565b868863ffffffff16565b879190611761565b915091505b935093915050565b5f61082e8284611bfe565b60605f6117308361176e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f8061170c858585611795565b5f60ff8216601f8111156104b657604051632cd44ac360e21b815260040160405180910390fd5b82545f908190801561188b575f6117b1876109ee600185611b7d565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156117f457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff160361182d57825465ffffffffffff16600160301b6001600160d01b0389160217835561187d565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160301b029216919091179101555b945085935061171192505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160301b029190931617920191909155905081611711565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082e60208301846118e5565b80356001600160a01b038116811461193b575f5ffd5b919050565b5f5f60408385031215611951575f5ffd5b61195a83611925565b946020939093013593505050565b5f5f5f6060848603121561197a575f5ffd5b61198384611925565b925061199160208501611925565b929592945050506040919091013590565b5f602082840312156119b2575f5ffd5b61082e82611925565b60ff60f81b8816815260e060208201525f6119d960e08301896118e5565b82810360408401526119eb81896118e5565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611a40578351835260209384019390920191600101611a22565b50909b9a5050505050505050505050565b5f60208284031215611a61575f5ffd5b5035919050565b5f5f5f5f5f5f60c08789031215611a7d575f5ffd5b611a8687611925565b95506020870135945060408701359350606087013560ff81168114611aa9575f5ffd5b9598949750929560808101359460a0909101359350915050565b5f5f60408385031215611ad4575f5ffd5b611add83611925565b9150611aeb60208401611925565b90509250929050565b5f5f60408385031215611b05575f5ffd5b611b0e83611925565b9150602083013563ffffffff81168114611b26575f5ffd5b809150509250929050565b600181811c90821680611b4557607f821691505b602082108103611b6357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104b6576104b6611b69565b808201808211156104b6576104b6611b69565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160d01b0382811682821603908111156104b6576104b6611b69565b6001600160d01b0381811683821601908111156104b6576104b6611b6956fea2646970667358221220474deb34898e8f0043356e83489a12d8a14b700b7c951cb2c45ad00707870e8264736f6c634300081e0033","sourceMap":"344:1284:184:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:54;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;:::i;:::-;;:::i;:::-;;;1204:14:187;;1197:22;1179:41;;1167:2;1152:18;3902:186:54;1039:187:187;2803:97:54;2881:12;;2803:97;;;1377:25:187;;;1365:2;1350:18;2803:97:54;1231:177:187;4680:244:54;;;;;;:::i;:::-;;:::i;2688:82::-;;;2761:2;1934:36:187;;1922:2;1907:18;2688:82:54;1792:184:187;4299:198:37;;;;;;:::i;:::-;;:::i;1227:399:184:-;;;;;;:::i;:::-;;:::i;:::-;;3041:272:37;;;:::i;5584:117::-;;;;;;:::i;:::-;-1:-1:-1;;;;;5675:19:37;;;5649:7;5675:19;;;:10;:19;;;;;;;;5584:117;;;;-1:-1:-1;;;;;2336:55:187;;;2318:74;;2306:2;2291:18;5584:117:37;2172:226:187;5783:138:37;;;;;;:::i;:::-;;:::i;3237:126:56:-;;;;;;:::i;:::-;;:::i;:::-;;;2577:10:187;2565:23;;;2547:42;;2535:2;2520:18;3237:126:56;2403:192:187;2933:116:54;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:54;2998:7;3024:18;;;;;;;;;;;;2933:116;538:107:73;;;;;;:::i;:::-;-1:-1:-1;;;;;624:14:73;598:7;624:14;;;:7;:14;;;;;;;538:107;5228:557:81;;;:::i;:::-;;;;;;;;;;;;;:::i;5133:175:37:-;;;;;;:::i;:::-;;:::i;2790:96::-;;;:::i;:::-;;;4271:14:187;4259:27;;;4241:46;;4229:2;4214:18;2790:96:37;4097:196:187;1962:93:54;;;:::i;3779:135:37:-;;;;;;:::i;:::-;;:::i;796:305:184:-;;;;;;:::i;:::-;;:::i;3244:178:54:-;;;;;;:::i;:::-;;:::i;5999:554:37:-;;;;;;:::i;:::-;;:::i;3455:140:54:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:54;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;3440:163:56;;;;;;:::i;:::-;;:::i;:::-;;;;5983:13:187;;5998:14;5979:34;5961:53;;6074:4;6062:17;;;6056:24;-1:-1:-1;;;;;6052:85:187;6030:20;;;6023:115;;;;5934:18;3440:163:56;5751:393:187;1760:89:54;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:69;4029:31:54;735:10:69;4045:7:54;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;;:::o;4680:244::-;4767:4;735:10:69;4823:37:54;4839:4;735:10:69;4854:5:54;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:54;;4680:244;-1:-1:-1;;;;4680:244:54:o;4299:198:37:-;4386:7;4412:78;4460:29;4479:9;4460:18;:29::i;:::-;-1:-1:-1;;;;;4412:29:37;;;;;;:20;:29;;;;;;:47;:78::i;:::-;-1:-1:-1;;;;;4405:85:37;;4299:198;-1:-1:-1;;;4299:198:37:o;1227:399:184:-;-1:-1:-1;;;;;1290:16:184;;1286:81;;1329:27;;-1:-1:-1;;;1329:27:184;;;;;;;;;;;1286:81;1380:6;1390:1;1380:11;1376:75;;1414:26;;-1:-1:-1;;;1414:26:184;;;;;;;;;;;1376:75;587:14;1464:6;:33;1460:133;;;1520:62;;-1:-1:-1;;;1520:62:184;;;;;6708:25:187;;;587:14:184;6749:18:187;;;6742:34;6681:18;;1520:62:184;;;;;;;;1460:133;1602:17;1608:2;1612:6;1602:5;:17::i;:::-;1227:399;;:::o;3041:272:37:-;3092:13;3181:18;:16;:18::i;:::-;3170:29;;:7;:5;:7::i;:::-;:29;;;3166:93;;3222:26;;-1:-1:-1;;;3222:26:37;;;;;;;;;;;3166:93;-1:-1:-1;3268:38:37;;;;;;;;;;;;;;;;;;3041:272::o;5783:138::-;735:10:69;5885:29:37;735:10:69;5904:9:37;5885;:29::i;3237:126:56:-;3307:6;3332:24;3348:7;3332:15;:24::i;5228:557:81:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5752;;;5736:1;5752:16;;;;;;;;;-1:-1:-1;;;5566:212:81;;;-1:-1:-1;5566:212:81;;-1:-1:-1;5674:13:81;;-1:-1:-1;5709:4:81;;-1:-1:-1;5736:1:81;-1:-1:-1;5752:16:81;-1:-1:-1;5566:212:81;-1:-1:-1;5228:557:81:o;5133:175:37:-;5209:7;5235:66;5271:29;5290:9;5271:18;:29::i;:::-;5235:17;;:35;:66::i;:::-;-1:-1:-1;;;;;5228:73:37;;5133:175;-1:-1:-1;;5133:175:37:o;2790:96::-;2836:6;2861:18;:16;:18::i;:::-;2854:25;;2790:96;:::o;1962:93:54:-;2009:13;2041:7;2034:14;;;;;:::i;3779:135:37:-;-1:-1:-1;;;;;3869:29:37;;3843:7;3869:29;;;:20;:29;;;;;:38;;:36;:38::i;796:305:184:-;847:6;857:1;847:11;843:75;;881:26;;-1:-1:-1;;;881:26:184;;;;;;;;;;;843:75;587:14;931:6;:33;927:133;;;987:62;;-1:-1:-1;;;987:62:184;;;;;6708:25:187;;;587:14:184;6749:18:187;;;6742:34;6681:18;;987:62:184;6534:248:187;927:133:184;1069:25;1075:10;1087:6;1069:5;:25::i;:::-;796:305;:::o;3244:178:54:-;3313:4;735:10:69;3367:27:54;735:10:69;3384:2:54;3388:5;3367:9;:27::i;5999:554:37:-;6204:6;6186:15;:24;6182:91;;;6233:29;;-1:-1:-1;;;6233:29:37;;;;;1377:25:187;;;1350:18;;6233:29:37;1231:177:187;6182:91:37;6353:57;;;2064:71;6353:57;;;7150:25:187;-1:-1:-1;;;;;7211:55:187;;7191:18;;;7184:83;;;;7283:18;;;7276:34;;;7326:18;;;7319:34;;;6282:14:37;;6299:168;;6326:86;;7122:19:187;;6353:57:37;;;;;;;;;;;;6343:68;;;;;;6326:16;:86::i;:::-;6426:1;6441;6456;6299:13;:168::i;:::-;6282:185;;6477:31;6494:6;6502:5;6477:16;:31::i;:::-;6518:28;6528:6;6536:9;6518;:28::i;:::-;6172:381;5999:554;;;;;;:::o;3440:163:56:-;-1:-1:-1;;;;;;;;;;;;;;;;;3570:26:56;3583:7;3592:3;3570:12;:26::i;:::-;3563:33;3440:163;-1:-1:-1;;;3440:163:56:o;8630:128:54:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;-1:-1:-1;;;;;3561:18:54;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:54;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10593:60;;-1:-1:-1;;;10593:60:54;;-1:-1:-1;;;;;7584:55:187;;10593:60:54;;;7566:74:187;7656:18;;;7649:34;;;7699:18;;;7692:34;;;7539:18;;10593:60:54;7364:368:187;10538:130:54;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:54;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:54;;5448:1;5421:30;;;2318:74:187;2291:18;;5421:30:54;2172:226:187;5376:86:54;-1:-1:-1;;;;;5475:16:54;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:54;;5543:1;5514:32;;;2318:74:187;2291:18;;5514:32:54;2172:226:187;5471:86:54;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;3416:273:37:-;3486:6;3504:23;3530:7;:5;:7::i;:::-;3504:33;;3564:16;3551:29;;:9;:29;3547:90;;3589:48;;-1:-1:-1;;;3589:48:37;;;;;7909:25:187;;;7982:14;7970:27;;7950:18;;;7943:55;7882:18;;3589:48:37;7737:267:187;3547:90:37;3654:28;3672:9;3654:17;:28::i;16485:606:90:-;16603:24;;16570:7;;;16603:24;16702:1;16696:7;;16692:234;;;16719:11;16739:14;16749:3;16739:9;:14::i;:::-;16733:20;;:3;:20;:::i;:::-;21301:28;21364:23;;;21435:4;21419:21;;16719:34;;-1:-1:-1;21415:31:90;;16777:42;;;;;16771:48;;;;16767:149;;;16846:3;16839:10;;16767:149;;;16894:7;:3;16900:1;16894:7;:::i;:::-;16888:13;;16767:149;16705:221;16692:234;16936:11;16950:53;16969:4;16988:3;16993;16998:4;16950:18;:53::i;:::-;16936:67;-1:-1:-1;17021:8:90;;:63;;17036:41;17050:4;17069:7;17075:1;17069:3;:7;:::i;:::-;21301:28;21364:23;;;21435:4;21419:21;;;21415:31;;21191:271;17036:41;:48;-1:-1:-1;;;17036:48:90;;-1:-1:-1;;;;;17036:48:90;17021:63;;;17032:1;17021:63;17014:70;16485:606;-1:-1:-1;;;;;;;16485:606:90:o;7362:208:54:-;-1:-1:-1;;;;;7432:21:54;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:54;;7505:1;7476:32;;;2318:74:187;2291:18;;7476:32:54;2172:226:187;7428:91:54;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;931:109:92:-;977:6;1002:31;1020:12;1002:17;:31::i;6731:312:37:-;-1:-1:-1;;;;;5675:19:37;;;6813;5675;;;:10;:19;;;;;;;;6863:31;;;-1:-1:-1;;6863:31:37;;;;;;;6910:48;;5675:19;;;;;6863:31;5675:19;;;;6910:48;;6813:19;6910:48;6968:68;6987:11;7000:9;7011:24;7027:7;7011:15;:24::i;:::-;6968:18;:68::i;8626:162::-;-1:-1:-1;;;;;8742:29:37;;8699:6;8742:29;;;:20;:29;;;;;18142:24:90;8724:57:37;;:17;:57::i;6105:126:81:-;6151:13;6183:41;:5;6210:13;6183:26;:41::i;6557:135::-;6606:13;6638:47;:8;6668:16;6638:29;:47::i;17211:206:90:-;17306:24;;17273:7;;17347:8;;:63;;17362:41;17376:4;17395:7;17401:1;17395:3;:7;:::i;17362:41::-;:48;-1:-1:-1;;;17362:48:90;;-1:-1:-1;;;;;17362:48:90;17347:63;;;17358:1;17340:70;17211:206;-1:-1:-1;;;17211:206:90:o;5017:176:81:-;5094:7;5120:66;5153:20;:18;:20::i;:::-;5175:10;4093:4:82;4087:11;-1:-1:-1;;;4111:23:82;;4163:4;4154:14;;4147:39;;;;4215:4;4206:14;;4199:34;4271:4;4256:20;;;3918:374;8813:260:80;8898:7;8918:17;8937:18;8957:16;8977:25;8988:4;8994:1;8997;9000;8977:10;:25::i;:::-;8917:85;;;;;;9012:28;9024:5;9031:8;9012:11;:28::i;:::-;-1:-1:-1;9057:9:80;;8813:260;-1:-1:-1;;;;;;8813:260:80:o;1265:222:73:-;-1:-1:-1;;;;;1121:14:73;;1348:15;1121:14;;;:7;:14;;;;;:16;;;;;;;;1396;;;1392:89;;1435:35;;-1:-1:-1;;;1435:35:73;;-1:-1:-1;;;;;8596:55:187;;1435:35:73;;;8578:74:187;8668:18;;;8661:34;;;8551:18;;1435:35:73;8404:297:187;8865:199:37;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;9020:29:37;;;;;;:20;:29;;;;;:37;;9053:3;9020:32;:37::i;9607:432:54:-;-1:-1:-1;;;;;9719:19:54;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:54;;9790:1;9761:32;;;2318:74:187;2291:18;;9761:32:54;2172:226:187;9715:89:54;-1:-1:-1;;;;;9817:21:54;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:54;;9889:1;9861:31;;;2318:74:187;2291:18;;9861:31:54;2172:226:187;9813:90:54;-1:-1:-1;;;;;9912:18:54;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:54;10000:5;-1:-1:-1;;;;;9991:31:54;;10016:5;9991:31;;;;1377:25:187;;1365:2;1350:18;;1231:177;9991:31:54;;;;;;;;9607:432;;;;:::o;2356:413:56:-;2450:30;2464:4;2470:2;2474:5;2450:13;:30::i;:::-;-1:-1:-1;;;;;2494:18:56;;2490:226;;2528:14;2545:13;2881:12:54;;;2803:97;2545:13:56;2528:30;-1:-1:-1;;;;;;2616:12:56;;;2612:94;;;2655:36;;-1:-1:-1;;;2655:36:56;;;;;6708:25:187;;;6749:18;;;6742:34;;;6681:18;;2655:36:56;6534:248:187;2612:94:56;2514:202;;2490:226;2725:37;2746:4;2752:2;2756:5;2725:20;:37::i;14293:213:88:-;14349:6;14379:16;14371:24;;14367:103;;;14418:41;;-1:-1:-1;;;14418:41:88;;14449:2;14418:41;;;8887:36:187;8939:18;;;8932:34;;;8860:18;;14418:41:88;8706:266:187;14367:103:88;-1:-1:-1;14493:5:88;14293:213::o;20859:5181:87:-;20907:7;21025:1;21020;:6;21016:53;;-1:-1:-1;21053:1:87;20859:5181::o;21016:53::-;22009:1;22037;22064:8;22057:16;;22053:92;;22100:3;22093:10;;;;;22128:2;22121:9;22053:92;22169:7;22162:2;:15;22158:90;;22204:2;22197:9;;;;;22231:2;22224:9;22158:90;22272:7;22265:2;:15;22261:90;;22307:2;22300:9;;;;;22334:2;22327:9;22261:90;22375:7;22368:2;:15;22364:89;;22410:2;22403:9;;;;;22437:1;22430:8;22364:89;22477:6;22470:2;:14;22466:87;;22511:1;22504:8;;;;;22537:1;22530:8;22466:87;22577:6;22570:2;:14;22566:87;;22611:1;22604:8;;;;;22637:1;22630:8;22566:87;22677:6;22670:2;:14;22666:61;;22711:1;22704:8;22666:61;23153:1;:6;23164:1;23152:13;;;;;25063:1;23152:13;25063:6;;;;:::i;:::-;;25058:2;:11;25057:18;;25052:23;;25183:1;25176:2;25172:1;:6;;;;;:::i;:::-;;25167:2;:11;25166:18;;25161:23;;25294:1;25287:2;25283:1;:6;;;;;:::i;:::-;;25278:2;:11;25277:18;;25272:23;;25403:1;25396:2;25392:1;:6;;;;;:::i;:::-;;25387:2;:11;25386:18;;25381:23;;25513:1;25506:2;25502:1;:6;;;;;:::i;:::-;;25497:2;:11;25496:18;;25491:23;;25623:1;25616:2;25612:1;:6;;;;;:::i;:::-;;25607:2;:11;25606:18;;25601:23;;25995:28;26020:2;26016:1;:6;;;;;:::i;:::-;;26011:11;;;34792:145:88;25995:28:87;25990:33;;;20859:5181;-1:-1:-1;;;20859:5181:87:o;19831:433:90:-;19988:7;20007:230;20020:4;20014:3;:10;20007:230;;;20040:11;21364:23;;;21435:4;21419:21;;6011:5:87;;;6030:1;6021:5;;;6020:11;6010:21;21415:31:90;;;20095:29;:35;;;;:29;;:35;20091:136;;;20157:3;20150:10;;20091:136;;;20205:7;:3;20211:1;20205:7;:::i;:::-;20199:13;;20091:136;20026:211;20007:230;;;-1:-1:-1;20253:4:90;19831:433;-1:-1:-1;;;19831:433:90:o;3029:133:56:-;-1:-1:-1;;;;;3024:18:54;;3111:7:56;3024:18:54;;;;;;;;;;;3137::56;2933:116:54;7762:789:37;7871:2;-1:-1:-1;;;;;7863:10:37;:4;-1:-1:-1;;;;;7863:10:37;;;:24;;;;;7886:1;7877:6;:10;7863:24;7859:686;;;-1:-1:-1;;;;;7907:18:37;;;7903:315;;-1:-1:-1;;;;;8011:26:37;;7946:16;8011:26;;;:20;:26;;;;;7946:16;;7984:150;;8059:9;8090:26;8109:6;8090:18;:26::i;:::-;7984:5;:150::i;:::-;-1:-1:-1;;;;;7945:189:37;;;-1:-1:-1;;;;;7945:189:37;;;8178:4;-1:-1:-1;;;;;8157:46:37;;8184:8;8194;8157:46;;;;;;6708:25:187;;;6764:2;6749:18;;6742:34;6696:2;6681:18;;6534:248;8157:46:37;;;;;;;;7927:291;;7903:315;-1:-1:-1;;;;;8235:16:37;;;8231:304;;-1:-1:-1;;;;;8337:24:37;;8272:16;8337:24;;;:20;:24;;;;;8272:16;;8310:143;;8383:4;8409:26;8428:6;8409:18;:26::i;8310:143::-;-1:-1:-1;;;;;8271:182:37;;;-1:-1:-1;;;;;8271:182:37;;;8497:2;-1:-1:-1;;;;;8476:44:37;;8501:8;8511;8476:44;;;;;;6708:25:187;;;6764:2;6749:18;;6742:34;6696:2;6681:18;;6534:248;8476:44:37;;;;;;;;8253:282;;7762:789;;;:::o;15293:213:88:-;15349:6;15379:16;15371:24;;15367:103;;;15418:41;;-1:-1:-1;;;15418:41:88;;15449:2;15418:41;;;8887:36:187;8939:18;;;8932:34;;;8860:18;;15418:41:88;8706:266:187;3376:267:76;3470:13;1390:66;3499:46;;3495:142;;3568:15;3577:5;3568:8;:15::i;:::-;3561:22;;;;3495:142;3621:5;3614:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:262:81;3998:7;4029:4;-1:-1:-1;;;;;4038:11:81;4021:28;;:63;;;;;4070:14;4053:13;:31;4021:63;4017:184;;;-1:-1:-1;4107:22:81;;3945:262::o;4017:184::-;4167:23;4304:80;;;2079:95;4304:80;;;11373:25:187;4326:11:81;11414:18:187;;;11407:34;;;;4339:14:81;11457:18:187;;;11450:34;4355:13:81;11500:18:187;;;11493:34;4378:4:81;11543:19:187;;;11536:84;4268:7:81;;11345:19:187;;4304:80:81;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;;7129:1551:80;7255:17;;;8209:66;8196:79;;8192:164;;;-1:-1:-1;8307:1:80;;-1:-1:-1;8311:30:80;;-1:-1:-1;8343:1:80;8291:54;;8192:164;8467:24;;;8450:14;8467:24;;;;;;;;;9607:25:187;;;9680:4;9668:17;;9648:18;;;9641:45;;;;9702:18;;;9695:34;;;9745:18;;;9738:34;;;8467:24:80;;9579:19:187;;8467:24:80;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8467:24:80;;-1:-1:-1;;8467:24:80;;;-1:-1:-1;;;;;;;8505:20:80;;8501:113;;-1:-1:-1;8557:1:80;;-1:-1:-1;8561:29:80;;-1:-1:-1;8557:1:80;;-1:-1:-1;8541:62:80;;8501:113;8632:6;-1:-1:-1;8640:20:80;;-1:-1:-1;8640:20:80;;-1:-1:-1;7129:1551:80;;;;;;;;;:::o;11617:532::-;11712:20;11703:5;:29;;;;;;;;:::i;:::-;;11699:444;;11617:532;;:::o;11699:444::-;11808:29;11799:5;:38;;;;;;;;:::i;:::-;;11795:348;;11860:23;;-1:-1:-1;;;11860:23:80;;;;;;;;;;;11795:348;11913:35;11904:5;:44;;;;;;;;:::i;:::-;;11900:243;;11971:46;;-1:-1:-1;;;11971:46:80;;;;;1377:25:187;;;1350:18;;11971:46:80;1231:177:187;11900:243:80;12047:30;12038:5;:39;;;;;;;;:::i;:::-;;12034:109;;12100:32;;-1:-1:-1;;;12100:32:80;;;;;1377:25:187;;;1350:18;;12100:32:80;1231:177:187;18245:138:90;-1:-1:-1;;;;;;;;;;;;;;;;;18354:4:90;:17;;18372:3;18354:22;;;;;;;;;;:::i;:::-;;;;;;;;;;18347:29;;;;;;;;;18354:22;;18347:29;;;;;;-1:-1:-1;;;18347:29:90;;-1:-1:-1;;;;;18347:29:90;;;;;;;;;18245:138;-1:-1:-1;;;18245:138:90:o;5912:1107:54:-;-1:-1:-1;;;;;6001:18:54;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:54;;-1:-1:-1;5997:540:54;;-1:-1:-1;;;;;6211:15:54;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:54;;-1:-1:-1;;;;;7584:55:187;;6290:50:54;;;7566:74:187;7656:18;;;7649:34;;;7699:18;;;7692:34;;;7539:18;;6290:50:54;7364:368:187;6240:115:54;-1:-1:-1;;;;;6475:15:54;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:54;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:54;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:54;6996:4;-1:-1:-1;;;;;6987:25:54;;7006:5;6987:25;;;;1377::187;;1365:2;1350:18;;1231:177;6987:25:54;;;;;;;;5912:1107;;;:::o;7277:399:37:-;-1:-1:-1;;;;;7380:18:37;;7376:107;;7414:58;7420:17;7439:4;7445:26;7464:6;7445:18;:26::i;7414:58::-;;;7376:107;-1:-1:-1;;;;;7496:16:37;;7492:110;;7528:63;7534:17;7553:9;7564:26;7583:6;7564:18;:26::i;7528:63::-;;;7492:110;-1:-1:-1;;;;;5675:19:37;;;5649:7;5675:19;;;:10;:19;;;;;;;;;;;;;;;7611:58;;5675:19;;;;;7662:6;7611:18;:58::i;9451:101::-;9514:7;9540:5;9544:1;9540;:5;:::i;4171:218:88:-;4228:7;-1:-1:-1;;;;;4251:25:88;;4247:105;;;4299:42;;-1:-1:-1;;;4299:42:88;;4330:3;4299:42;;;8887:36:187;8939:18;;;8932:34;;;8860:18;;4299:42:88;8706:266:187;9070:273:37;9237:16;9255;9290:46;9301:7;:5;:7::i;:::-;9310:25;9313:14;:5;:12;:14::i;:::-;9329:5;9310:2;:25;;:::i;:::-;9290:5;;:46;:10;:46::i;:::-;9283:53;;;;9070:273;;;;;;;:::o;9349:96::-;9407:7;9433:5;9437:1;9433;:5;:::i;2080:380:76:-;2139:13;2164:11;2178:16;2189:4;2178:10;:16::i;:::-;2302;;;2313:4;2302:16;;;;;;;;;2164:30;;-1:-1:-1;2282:17:76;;2302:16;;;;;;;;;-1:-1:-1;;;2367:16:76;;;-1:-1:-1;2412:4:76;2403:14;;2396:28;;;;-1:-1:-1;2367:16:76;2080:380::o;15046:210:90:-;15158:16;;15211:38;15219:4;15238:3;15243:5;15211:7;:38::i;2532:247:76:-;2593:7;2665:4;2629:40;;2692:4;2683:13;;2679:71;;;2719:20;;-1:-1:-1;;;2719:20:76;;;;;;;;;;;18559:922:90;18740:11;;18680:16;;;;18766:7;;18762:713;;18789:26;18818:28;18832:4;18838:7;18844:1;18838:3;:7;:::i;18818:28::-;18877:9;;;;-1:-1:-1;18877:9:90;;;;;-1:-1:-1;;;18920:11:90;;-1:-1:-1;;;;;18920:11:90;;19005:13;;;;19001:89;;;19045:30;;-1:-1:-1;;;19045:30:90;;;;;;;;;;;19001:89;19164:3;19153:14;;:7;:14;;;19149:163;;19187:19;;;;-1:-1:-1;;;;;;;;19187:19:90;;;;;;19149:163;;;19255:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;19255:41:90;;;;;;;;;;19245:52;;;;;;;-1:-1:-1;19245:52:90;;;;;;;;;;;;;;-1:-1:-1;;;19245:52:90;;;;;;;;;;19149:163;19333:9;-1:-1:-1;19344:5:90;;-1:-1:-1;19325:25:90;;-1:-1:-1;;;19325:25:90;18762:713;-1:-1:-1;;19391:41:90;;;;;;;;;;;;;;;-1:-1:-1;;;;;19391:41:90;;;;;;;;;;19381:52;;;;;;;-1:-1:-1;19381:52:90;;;;;;;;;;;;;-1:-1:-1;;;19381:52:90;;;;;;;;;;;;-1:-1:-1;;19425:5:90;19447:17;;14:289:187;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;533:196::-;601:20;;-1:-1:-1;;;;;650:54:187;;640:65;;630:93;;719:1;716;709:12;630:93;533:196;;;:::o;734:300::-;802:6;810;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;902:29;921:9;902:29;:::i;:::-;892:39;1000:2;985:18;;;;972:32;;-1:-1:-1;;;734:300:187:o;1413:374::-;1490:6;1498;1506;1559:2;1547:9;1538:7;1534:23;1530:32;1527:52;;;1575:1;1572;1565:12;1527:52;1598:29;1617:9;1598:29;:::i;:::-;1588:39;;1646:38;1680:2;1669:9;1665:18;1646:38;:::i;:::-;1413:374;;1636:48;;-1:-1:-1;;;1753:2:187;1738:18;;;;1725:32;;1413:374::o;1981:186::-;2040:6;2093:2;2081:9;2072:7;2068:23;2064:32;2061:52;;;2109:1;2106;2099:12;2061:52;2132:29;2151:9;2132:29;:::i;2600:1261::-;3006:3;3001;2997:13;2989:6;2985:26;2974:9;2967:45;3048:3;3043:2;3032:9;3028:18;3021:31;2948:4;3075:46;3116:3;3105:9;3101:19;3093:6;3075:46;:::i;:::-;3169:9;3161:6;3157:22;3152:2;3141:9;3137:18;3130:50;3203:33;3229:6;3221;3203:33;:::i;:::-;3267:2;3252:18;;3245:34;;;-1:-1:-1;;;;;3316:55:187;;3310:3;3295:19;;3288:84;3403:3;3388:19;;3381:35;;;3453:22;;;3447:3;3432:19;;3425:51;3525:13;;3547:22;;;3597:2;3623:15;;;;-1:-1:-1;3585:15:187;;;;-1:-1:-1;3666:169:187;3680:6;3677:1;3674:13;3666:169;;;3741:13;;3729:26;;3784:2;3810:15;;;;3775:12;;;;3702:1;3695:9;3666:169;;;-1:-1:-1;3852:3:187;;2600:1261;-1:-1:-1;;;;;;;;;;;2600:1261:187:o;3866:226::-;3925:6;3978:2;3966:9;3957:7;3953:23;3949:32;3946:52;;;3994:1;3991;3984:12;3946:52;-1:-1:-1;4039:23:187;;3866:226;-1:-1:-1;3866:226:187:o;4298:828::-;4400:6;4408;4416;4424;4432;4440;4493:3;4481:9;4472:7;4468:23;4464:33;4461:53;;;4510:1;4507;4500:12;4461:53;4533:29;4552:9;4533:29;:::i;:::-;4523:39;-1:-1:-1;4631:2:187;4616:18;;4603:32;;-1:-1:-1;4732:2:187;4717:18;;4704:32;;-1:-1:-1;4814:2:187;4799:18;;4786:32;4862:4;4849:18;;4837:31;;4827:59;;4882:1;4879;4872:12;4827:59;4298:828;;;;-1:-1:-1;4298:828:187;;4985:3;4970:19;;4957:33;;5089:3;5074:19;;;5061:33;;-1:-1:-1;4298:828:187;-1:-1:-1;;4298:828:187:o;5131:260::-;5199:6;5207;5260:2;5248:9;5239:7;5235:23;5231:32;5228:52;;;5276:1;5273;5266:12;5228:52;5299:29;5318:9;5299:29;:::i;:::-;5289:39;;5347:38;5381:2;5370:9;5366:18;5347:38;:::i;:::-;5337:48;;5131:260;;;;;:::o;5396:350::-;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;;5642:2;5631:9;5627:18;5614:32;5686:10;5679:5;5675:22;5668:5;5665:33;5655:61;;5712:1;5709;5702:12;5655:61;5735:5;5725:15;;;5396:350;;;;;:::o;6149:380::-;6228:1;6224:12;;;;6271;;;6292:61;;6346:4;6338:6;6334:17;6324:27;;6292:61;6399:2;6391:6;6388:14;6368:18;6365:38;6362:161;;6445:10;6440:3;6436:20;6433:1;6426:31;6480:4;6477:1;6470:15;6508:4;6505:1;6498:15;6362:161;;6149:380;;;:::o;8009:127::-;8070:10;8065:3;8061:20;8058:1;8051:31;8101:4;8098:1;8091:15;8125:4;8122:1;8115:15;8141:128;8208:9;;;8229:11;;;8226:37;;;8243:18;;:::i;8274:125::-;8339:9;;;8360:10;;;8357:36;;;8373:18;;:::i;8977:127::-;9038:10;9033:3;9029:20;9026:1;9019:31;9069:4;9066:1;9059:15;9093:4;9090:1;9083:15;9783:127;9844:10;9839:3;9835:20;9832:1;9825:31;9875:4;9872:1;9865:15;9899:4;9896:1;9889:15;10097:127;10158:10;10153:3;10149:20;10146:1;10139:31;10189:4;10186:1;10179:15;10213:4;10210:1;10203:15;10229:303;-1:-1:-1;;;;;10364:62:187;;;10300;;;10296:131;;10439:64;;10436:90;;;10506:18;;:::i;10809:300::-;-1:-1:-1;;;;;10878:62:187;;;10942;;;10874:131;;11017:63;;11014:89;;;11083:18;;:::i","linkReferences":{},"immutableReferences":{"55635":[{"start":4690,"length":32}],"55637":[{"start":4648,"length":32}],"55639":[{"start":4606,"length":32}],"55641":[{"start":4771,"length":32}],"55643":[{"start":4811,"length":32}],"55646":[{"start":2818,"length":32}],"55649":[{"start":2863,"length":32}]}},"methodIdentifiers":{"CLOCK_MODE()":"4bf5d7e9","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","checkpoints(address,uint32)":"f1127ed8","clock()":"91ddadf4","decimals()":"313ce567","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","eip712Domain()":"84b0196e","getPastTotalSupply(uint256)":"8e539e8c","getPastVotes(address,uint256)":"3a46b1a8","getVotes(address)":"9ab24eb0","mint(address,uint256)":"40c10f19","mint(uint256)":"a0712d68","name()":"06fdde03","nonces(address)":"7ecebe00","numCheckpoints(address)":"6fcfff45","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"ERC20ExceededSafeSupply\",\"type\":\"error\"},{\"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\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"name\":\"ERC5805FutureLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC6372InconsistentClock\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"Erc20Votes__AmountExceedsMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Votes__NoZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Erc20Votes__NoZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"VotesExpiredSignature\",\"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\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"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\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}],\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":[{\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"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\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature is invalid.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20ExceededSafeSupply(uint256,uint256)\":[{\"details\":\"Total supply cap has been exceeded, introducing a risk of votes overflowing.\"}],\"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.\"}}],\"ERC5805FutureLookup(uint256,uint48)\":[{\"details\":\"Lookup to future votes is not available.\"}],\"ERC6372InconsistentClock()\":[{\"details\":\"The clock was incorrectly modified.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in a uint of `bits` size.\"}],\"VotesExpiredSignature(uint256)\":[{\"details\":\"The signature used has expired.\"}]},\"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.\"},\"DelegateChanged(address,address,address)\":{\"details\":\"Emitted when an account changes their delegate.\"},\"DelegateVotesChanged(address,uint256,uint256)\":{\"details\":\"Emitted when a token transfer or delegate change results in changes to a delegate's number of voting units.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in ERC-6372.\"},\"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\":\"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\":\"Returns the value of tokens owned by `account`.\"},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"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}.\"},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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/SimpleErc20Votes.sol\":\"SimpleErc20Votes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee\",\"dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9\"]},\"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7\",\"dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578\",\"dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435\",\"dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a\",\"dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99\",\"dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4\",\"dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6\",\"dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256\",\"dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc\"]},\"test/mocks/SimpleErc20Votes.sol\":{\"keccak256\":\"0xdeb81f4f81aee2d28058116048d03e0e6603f90e2a55b4f42ee846bb6af6cd6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b360b01e4f960770e8de90b4b984329cf339e1882519cfda1a88f02e1df495\",\"dweb:/ipfs/QmNzRpGkLxrzcEERrwFpRXqWVMsMom8kW4UpjZTTYxtD9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint256","name":"increasedSupply","type":"uint256"},{"internalType":"uint256","name":"cap","type":"uint256"}],"type":"error","name":"ERC20ExceededSafeSupply"},{"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":"uint256","name":"timepoint","type":"uint256"},{"internalType":"uint48","name":"clock","type":"uint48"}],"type":"error","name":"ERC5805FutureLookup"},{"inputs":[],"type":"error","name":"ERC6372InconsistentClock"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"type":"error","name":"Erc20Votes__AmountExceedsMax"},{"inputs":[],"type":"error","name":"Erc20Votes__NoZeroAddress"},{"inputs":[],"type":"error","name":"Erc20Votes__NoZeroAmount"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[{"internalType":"uint256","name":"expiry","type":"uint256"}],"type":"error","name":"VotesExpiredSignature"},{"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":"delegator","type":"address","indexed":true},{"internalType":"address","name":"fromDelegate","type":"address","indexed":true},{"internalType":"address","name":"toDelegate","type":"address","indexed":true}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegate","type":"address","indexed":true},{"internalType":"uint256","name":"previousVotes","type":"uint256","indexed":false},{"internalType":"uint256","name":"newVotes","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","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":"CLOCK_MODE","outputs":[{"internalType":"string","name":"","type":"string"}]},{"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"stateMutability":"view","type":"function","name":"checkpoints","outputs":[{"internalType":"struct Checkpoints.Checkpoint208","name":"","type":"tuple","components":[{"internalType":"uint48","name":"_key","type":"uint48"},{"internalType":"uint208","name":"_value","type":"uint208"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"clock","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","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":"delegateBySig"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"timepoint","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timepoint","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"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":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"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":{"CLOCK_MODE()":{"details":"Machine-readable description of the clock as specified in ERC-6372."},"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":"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":"Returns the value of tokens owned by `account`."},"checkpoints(address,uint32)":{"details":"Get the `pos`-th checkpoint for `account`."},"clock()":{"details":"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match."},"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}."},"delegate(address)":{"details":"Delegates votes from the sender to `delegatee`."},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Delegates votes from signer to `delegatee`."},"delegates(address)":{"details":"Returns the delegate that `account` has chosen."},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"getPastTotalSupply(uint256)":{"details":"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined."},"getPastVotes(address,uint256)":{"details":"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined."},"getVotes(address)":{"details":"Returns the current amount of votes that `account` has."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the next unused nonce for an address."},"numCheckpoints(address)":{"details":"Get number of checkpoints for `account`."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"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}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/SimpleErc20Votes.sol":"SimpleErc20Votes"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol":{"keccak256":"0xdf466d4c6aa9da903595262100def9c6d960045b2ada0357edc47953bc5e18d6","urls":["bzz-raw://889512f1c9468f4d5e0f90f46b849709fd6fedab29b8377f64f6c3ee8373beee","dweb:/ipfs/QmefA385JqnvagxdFDpM3kxnxUtpJvkxkbTr66naQbAko9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol":{"keccak256":"0x356ccc41954918db31a917fcd718db150fa4649b6aa2ea8054bef309310c24d7","urls":["bzz-raw://5249007609490a433d7b9e329b24b07e3678f45f67fdca2e97e1ec7e79e234b7","dweb:/ipfs/QmSQm28CZHCwZ8Howpp3pZd5T3zcm7dmEdBZbTf4FBg4tc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol":{"keccak256":"0x8fbf3dddff71246ff9ffe21f9f0195a40583c4101c94c747691291f8b9e14ebd","urls":["bzz-raw://8d69db7468e95a56999df81f1c555215b3359483d610dbef17d898ef48801578","dweb:/ipfs/QmSPaSUsHDGqffinNgwajKp8RUdwj3GyW3VqWWNPfwH4b4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol":{"keccak256":"0xed0f7f14eb30c80a82855ddc3f7267bb6290546e5847a8ffc33f599ce4bc5eb6","urls":["bzz-raw://63fab00bbb42ce6f132a93d1c1e1cfed5175821521fb8746caa48129787d2435","dweb:/ipfs/QmVMBNhmVW1h35LsaYNyDChfyTwF8M3EW9T1JDFpsXiaQF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol":{"keccak256":"0xa8eecb7822f96130e5c64b5ac25c9e0394948f05c517d4e3dc8a15033679ee6a","urls":["bzz-raw://c64c0017e3973b4cd34dc39ba225010952c67f0d7193bc4d784719f9f7ef583a","dweb:/ipfs/QmYNenQ2avzBZDk1PMjQuZQMh9CVMuUrK7Rrj8JH1gqPUS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"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/Nonces.sol":{"keccak256":"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f","urls":["bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e","dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0x0768b3bdb701fe4994b3be932ca8635551dfebe04c645f77500322741bebf57c","urls":["bzz-raw://a2059f9ca8d3c11c49ca49fc9c5fb070f18cc85d12a7688e45322ed0e2a1cb99","dweb:/ipfs/QmS2gwX51RAvSw4tYbjHccY2CKbh2uvDzqHLAFXdsddgia"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8440117ea216b97a7bad690a67449fd372c840d073c8375822667e14702782b4","urls":["bzz-raw://ebb6645995b8290d0b9121825e2533e4e28977b2c6befee76e15e58f0feb61d4","dweb:/ipfs/QmVR72j6kL5R2txuihieDev1FeTi4KWJS1Z6ABbwL3Qtph"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0xffca8f1d67bf069a2237a4631c6af36b141f33fb8e894ef58e6a4f72fc098f77","urls":["bzz-raw://4ff8f533667f82b8c3ddd46e6bc26f7c7c1eb73890a2136393aab8a0043e09e6","dweb:/ipfs/QmSPHM9fj6VL2V5owMbARubCZKe6d6kho9CVGEcpzkELNL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x3765cc1833212456000f02d5de0478c2055b5f318e27032537c6d47c91e68b05","urls":["bzz-raw://3e77d9fd11b604fb3820ba6794f1e2516deb1093dada1c7225da6c46def95256","dweb:/ipfs/QmcqQo9mmD5kekxFtJcvZTyCPaEgxQsSVfp7wLiE91fdAc"],"license":"MIT"},"test/mocks/SimpleErc20Votes.sol":{"keccak256":"0xdeb81f4f81aee2d28058116048d03e0e6603f90e2a55b4f42ee846bb6af6cd6a","urls":["bzz-raw://75b360b01e4f960770e8de90b4b984329cf339e1882519cfda1a88f02e1df495","dweb:/ipfs/QmNzRpGkLxrzcEERrwFpRXqWVMsMom8kW4UpjZTTYxtD9H"],"license":"MIT"}},"version":1},"id":184} \ No newline at end of file diff --git a/frontend/context/builds/ZKPassport_Check.json b/frontend/context/builds/ZKPassport_Check.json index 9a0941f7..6716a328 100644 --- a/frontend/context/builds/ZKPassport_Check.json +++ b/frontend/context/builds/ZKPassport_Check.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeMandate","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getConfig","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"config","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getInputParams","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"inputParams","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getNameDescription","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"handleRequest","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"targets","type":"address[]","internalType":"address[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"initializeMandate","inputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"nameDescription","type":"string","internalType":"string"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mandates","inputs":[{"name":"mandateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"inputParams","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"powers","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint16","internalType":"uint16"},{"name":"minor","type":"uint16","internalType":"uint16"},{"name":"patch","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"event","name":"AsyncMandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"oracle","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mandate__Deployed","inputs":[{"name":"configParams","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Mandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"OnlyPowers","inputs":[]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b505f6040516020016100209061006e565b60405160208183030381529060405290507f71bb7b033e40374cfbc64859f679a737bcbfca31158d6a4783c01ee8d445cc5e8160405161006091906101aa565b60405180910390a1506101df565b60c08152601460c08201527f737472696e675b5d20696e707574506172616d7300000000000000000000000060e0820152610100602082015260106101008201526f6164647265737320726567697374727960801b61012082015261014060408201525f61014082015f601982527f75696e74323536207374616c6541667465725365636f6e6473000000000000006020830152604082019050838103606085015261014481601681527f626f6f6c20666163656d61746368526571756972656400000000000000000000602082015260400190565b8481036080860152601781527f6279746573342066756e6374696f6e53656c6563746f7200000000000000000060208201529150506040810183810360a0850152600b81526a189e5d195cc81a5b9c1d5d60aa1b60208201529050604081019392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b612b5d806101ec5f395ff3fe608060405234801561000f575f5ffd5b506004361061009f575f3560e01c806354fd4d5011610072578063b1f50f8911610058578063b1f50f8914610167578063c0d27aad1461017c578063d8a941f41461018f575f5ffd5b806354fd4d5014610125578063552cb37214610144575f5ffd5b806301e07972146100a357806301ffc9a7146100cf5780630d157721146100f25780634d516f0e14610112575b5f5ffd5b6100b66100b1366004611e92565b6101a2565b6040516100c69493929190611ed7565b60405180910390f35b6100e26100dd366004611f42565b610364565b60405190151581526020016100c6565b610105610100366004611f8e565b61039a565b6040516100c69190611fc1565b6100e2610120366004612018565b61046b565b604080515f8152600160208201526008918101919091526060016100c6565b61015761015236600461207e565b610558565b6040516100c694939291906121c8565b61017a610175366004612300565b610ee2565b005b61010561018a366004611f8e565b61102d565b61010561019d366004611f8e565b61107d565b5f602081905290815260409020805481906101bc906123b2565b80601f01602080910402602001604051908101604052809291908181526020018280546101e8906123b2565b80156102335780601f1061020a57610100808354040283529160200191610233565b820191905f5260205f20905b81548152906001019060200180831161021657829003601f168201915b505050505090806001018054610248906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610274906123b2565b80156102bf5780601f10610296576101008083540402835291602001916102bf565b820191905f5260205f20905b8154815290600101906020018083116102a257829003601f168201915b5050505050908060020180546102d4906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610300906123b2565b801561034b5780601f106103225761010080835404028352916020019161034b565b820191905f5260205f20905b81548152906001019060200180831161032e57829003601f168201915b505050600390930154919250506001600160a01b031684565b5f6001600160e01b0319821663e81bd2dd60e01b148061039457506301ffc9a760e01b6001600160e01b03198316145b92915050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912080546103e7906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610413906123b2565b801561045e5780601f106104355761010080835404028352916020019161045e565b820191905f5260205f20905b81548152906001019060200180831161044157829003601f168201915b5050505050905092915050565b6040805133602080830182905261ffff881683850152835180840385018152606090930184528251928101929092205f81815292839052928220600301549192916001600160a01b0316146104d35760405163e317a3d160e01b815260040160405180910390fd5b5f5f5f5f6104e58b338c8c8c8c610558565b604051630de6a60160e01b8152939750919550935091503390630de6a6019061051a908d9088908890889088906004016123ea565b5f604051808303815f87803b158015610531575f5ffd5b505af1158015610543573d5f5f3e3d5ffd5b5060019e9d5050505050505050505050505050565b5f6060806060610566611dc4565b6105708a8a61102d565b806020019051810190610583919061253b565b60c08701526001600160e01b03191660a08601521515608085015260608401526001600160a01b0316604083015260208083018290529051899189916105c891612605565b6105d392829061261c565b8101906105e09190612643565b6001600160a01b0390811660e08301526040820151166106535760405162461bcd60e51b8152602060048201526024808201527f5a4b50617373706f72743a20496e76616c6964207265676973747279206164646044820152637265737360e01b60648201526084015b60405180910390fd5b60e08101516001600160a01b03166106d35760405162461bcd60e51b815260206004820152603560248201527f5a4b50617373706f72743a20496e76616c6964207a65726f206164647265737360448201527f20666f72206163636f756e7420746f20636865636b0000000000000000000000606482015260840161064a565b8a6001600160a01b03168160e001516001600160a01b03161461075e5760405162461bcd60e51b815260206004820152602e60248201527f5a4b50617373706f72743a2043616c6c6572206973206e6f742074686520616360448201527f636f756e7420746f20636865636b000000000000000000000000000000000000606482015260840161064a565b5f816040015190506107a78a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92506110cd915050565b60e0830151604051635941514d60e11b81526001600160a01b03918216600482015291975082169063b282a29a90602401602060405180830381865afa1580156107f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610817919061265e565b610100830181905260608301519061082f9042612675565b1061087c5760405162461bcd60e51b815260206004820152600e60248201527f50726f6f66206973207374616c65000000000000000000000000000000000000604482015260640161064a565b8160800151156109405760e082015160405163306b618f60e21b81526001600160a01b0391821660048201529082169063c1ad863c90602401602060405180830381865afa1580156108d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f49190612688565b6109405760405162461bcd60e51b815260206004820152601d60248201527f466163654d6174636820726571756972656d656e74206e6f74206d6574000000604482015260640161064a565b60e0820151604051633eca794d60e01b81526001600160a01b03918216600482015290821690633eca794d906024015f60405180830381865afa158015610989573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109b091908101906126a1565b61014083015260a08201516001600160e01b03191663d4d6de8760e01b016109f2576109e58260c00151836101400151611103565b1515610120830152610e15565b60a08201516001600160e01b0319166321f06bd160e21b01610a21576109e58260c00151836101400151611135565b60a08201516001600160e01b031916631491889760e31b01610a50576109e58260c00151836101400151611168565b60a08201516001600160e01b0319166303617ca560e61b01610a7f576109e58260c0015183610140015161119a565b60a08201516001600160e01b031916630e85aea760e11b01610aae576109e58260c001518361014001516111cd565b60a08201516001600160e01b03191663210fe7d760e11b01610add576109e58260c00151836101400151611218565b60a08201516001600160e01b0319166331582e7d60e11b01610b0c576109e58260c0015183610140015161124a565b60a08201516001600160e01b03191663a21e3f7960e01b01610b3b576109e58260c00151836101400151611279565b60a08201516001600160e01b0319166351559d7b60e01b01610b6a576109e58260c001518361014001516112a8565b60a08201516001600160e01b0319166312f01d8d60e31b01610b99576109e58260c001518361014001516112d7565b60a08201516001600160e01b03191663df399da760e01b01610bc8576109e58260c00151836101400151611306565b60a08201516001600160e01b031916638bd9b20b60e01b01610bf7576109e58260c00151836101400151611359565b60a08201516001600160e01b03191663d2e2745f60e01b01610c26576109e58260c00151836101400151611388565b60a08201516001600160e01b031916632523ed0760e11b01610c55576109e58260c001518361014001516113b8565b60a08201516001600160e01b031916630c5e0e2760e01b01610c84576109e58260c001518361014001516113e8565b60a08201516001600160e01b031916636191efaf60e11b01610cb3576109e58260c00151836101400151611418565b60a08201516001600160e01b0319166372ab993f60e11b01610ce2576109e58260c00151836101400151611448565b60a08201516001600160e01b031916635cbf449760e11b01610d11576109e58260c00151836101400151611473565b60a08201516001600160e01b031916638519981760e01b01610d40576109e58260c001518361014001516114a3565b60a08201516001600160e01b03191663c91aa4f960e01b01610d6f576109e58260c00151836101400151611515565b60a08201516001600160e01b03191663d3a2e4bb60e01b01610d9e576109e58260c00151836101400151611587565b60a08201516001600160e01b031916631b0093df60e01b01610dcd576109e58260c001518361014001516115ef565b60405162461bcd60e51b815260206004820152601d60248201527f556e737570706f727465642066756e6374696f6e2073656c6563746f72000000604482015260640161064a565b816101200151610e755760405162461bcd60e51b815260206004820152602560248201527f5a4b50617373706f72743a2050726f6f6620766572696669636174696f6e2066604482015264185a5b195960da1b606482015260840161064a565b610e7f6001611656565b6040519297509095509350610ea7908d906020016001600160a01b0391909116815260200190565b604051602081830303815290604052835f81518110610ec857610ec861283b565b602002602001018190525050509650965096509692505050565b5f81806020019051810190610ef7919061253b565b505050505090505f81516001610f0d919061284f565b67ffffffffffffffff811115610f2557610f25612211565b604051908082528060200260200182016040528015610f5857816020015b6060815260200190600190039081610f435790505b5090505f5b8251811015610fa557828181518110610f7857610f7861283b565b6020026020010151828281518110610f9257610f9261283b565b6020908102919091010152600101610f5d565b506040518060400160405280601681526020017f61646472657373204163636f756e74546f436865636b0000000000000000000081525081835181518110610fef57610fef61283b565b60200260200101819052506110258686836040516020016110109190612862565b6040516020818303038152906040528661173a565b505050505050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060020180546103e7906123b2565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060010180546103e7906123b2565b5f8383836040516020016110e3939291906128c5565b60408051601f198184030181529190528051602090910120949350505050565b5f5f838060200190518101906111199190612901565b90508060ff1661112c846080015161185b565b11949350505050565b5f5f8380602001905181019061114b9190612901565b90508060ff1661115e846080015161185b565b1015949350505050565b5f5f8380602001905181019061117e9190612901565b90508060ff16611191846080015161185b565b10949350505050565b5f5f838060200190518101906111b09190612901565b90508060ff166111c3846080015161185b565b1115949350505050565b5f5f5f848060200190518101906111e4919061291a565b915091505f6111f6856080015161185b565b90508260ff16811015801561120e57508160ff168111155b9695505050505050565b5f5f8380602001905181019061122e9190612901565b90508060ff16611241846080015161185b565b14949350505050565b5f5f83806020019051810190611260919061265e565b905061126b816118a5565b61112c84608001515f6118ee565b5f5f8380602001905181019061128f919061265e565b905061129a816118a5565b61115e84608001515f6118ee565b5f5f838060200190518101906112be919061265e565b90506112c9816118a5565b61119184608001515f6118ee565b5f5f838060200190518101906112ed919061265e565b90506112f8816118a5565b6111c384608001515f6118ee565b5f5f5f8480602001905181019061131d9190612942565b915091505f61133085608001515f6118ee565b905061133b836118a5565b811015801561120e575061134e826118a5565b101595945050505050565b5f5f8380602001905181019061136f919061265e565b905061137a816118a5565b61124184608001515f6118ee565b5f5f8380602001905181019061139e919061265e565b90506113a9816118a5565b61112c8460a0015160016118ee565b5f5f838060200190518101906113ce919061265e565b90506113d9816118a5565b61115e8460a0015160016118ee565b5f5f838060200190518101906113fe919061265e565b9050611409816118a5565b6111918460a0015160016118ee565b5f5f8380602001905181019061142e919061265e565b9050611439816118a5565b6111c38460a0015160016118ee565b5f5f5f8480602001905181019061145f9190612942565b915091505f6113308560a0015160016118ee565b5f5f83806020019051810190611489919061265e565b9050611494816118a5565b6112418460a0015160016118ee565b5f5f838060200190518101906114b99190612964565b90505f5b815181101561150b578360200151805190602001208282815181106114e4576114e461283b565b6020026020010151805190602001200361150357600192505050610394565b6001016114bd565b505f949350505050565b5f5f8380602001905181019061152b9190612964565b90505f5b815181101561157c578360200151805190602001208282815181106115565761155661283b565b60200260200101518051906020012003611574575f92505050610394565b60010161152f565b506001949350505050565b5f5f8380602001905181019061159d9190612964565b90505f5b815181101561150b578360400151805190602001208282815181106115c8576115c861283b565b602002602001015180519060200120036115e757600192505050610394565b6001016115a1565b5f5f838060200190518101906116059190612964565b90505f5b815181101561157c578360400151805190602001208282815181106116305761163061283b565b6020026020010151805190602001200361164e575f92505050610394565b600101611609565b60608060608367ffffffffffffffff81111561167457611674612211565b60405190808252806020026020018201604052801561169d578160200160208202803683370190505b5092508367ffffffffffffffff8111156116b9576116b9612211565b6040519080825280602002602001820160405280156116e2578160200160208202803683370190505b5091508367ffffffffffffffff8111156116fe576116fe612211565b60405190808252806020026020018201604052801561173157816020015b606081526020019060019003908161171c5790505b50929491935050565b604080513360208083019190915261ffff8716828401528251808303840181526060909201909252805191012061177484600160ff611af8565b6040805160808101825285815260208082018690528183018590523360608301525f8481529081905291909120815181906117af90826129e1565b50602082015160018201906117c490826129e1565b50604082015160028201906117d990826129e1565b50606091909101516003909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560405161ffff86169033907ff02558935ef4a7a4dd0455b94fd00eb1bcd7d048c0ab648841d3985a31a135c29061184c90889088908890612a9c565b60405180910390a35050505050565b5f5f611867835f6118ee565b90505f611873426118a5565b90508181101561188657505f9392505050565b6127106118938383612675565b61189d9190612ae8565b949350505050565b5f5f5f5f6118b285611b9f565b91945092509050806118c5836064612605565b6118d185612710612605565b6118db919061284f565b6118e5919061284f565b95945050505050565b81515f9083906006146119435760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204d525a2064617465206c656e677468000000000000000000604482015260640161064a565b5f6119cc825f815181106119595761195961283b565b602001015160f81c60f81b836001815181106119775761197761283b565b016020908101516040517fff0000000000000000000000000000000000000000000000000000000000000093841692810192909252919091166021820152602201604051602081830303815290604052611d4a565b90505f611a03836002815181106119e5576119e561283b565b602001015160f81c60f81b846003815181106119775761197761283b565b90505f611a3a84600481518110611a1c57611a1c61283b565b602001015160f81c60f81b856005815181106119775761197761283b565b90505f611a46426118a5565b90505f6064611a5761271084612ae8565b611a619190612afb565b90505f8815611a9b57611a7582603261284f565b861015611a8f57611a88866107d061284f565b9050611abe565b611a888661076c61284f565b81861115611aaf57611a888661076c61284f565b611abb866107d061284f565b90505b83611aca866064612605565b611ad683612710612605565b611ae0919061284f565b611aea919061284f565b9a9950505050505050505050565b8183511015611b495760405162461bcd60e51b815260206004820152601060248201527f537472696e6720746f6f2073686f727400000000000000000000000000000000604482015260640161064a565b8083511115611b9a5760405162461bcd60e51b815260206004820152600f60248201527f537472696e6720746f6f206c6f6e670000000000000000000000000000000000604482015260640161064a565b505050565b5f808080611bb06201518086612ae8565b611bbd90620afa6c61284f565b90505f611bcd62023ab183612ae8565b90505f611bdd8262023ab1612605565b611be79084612675565b90505f61016d611bfa62023ab084612ae8565b611c06618eac85612ae8565b611c126105b486612ae8565b611c1c9086612675565b611c26919061284f565b611c309190612675565b611c3a9190612ae8565b90505f611c4984610190612605565b611c53908361284f565b90505f611c61606484612ae8565b611c6c600485612ae8565b611c788561016d612605565b611c82919061284f565b611c8c9190612675565b611c969085612675565b90505f6099611ca6836005612605565b611cb190600261284f565b611cbb9190612ae8565b90506005611cca826099612605565b611cd590600261284f565b611cdf9190612ae8565b611ce99083612675565b611cf490600161284f565b9750600a8110611d0e57611d09600982612675565b611d19565b611d1981600361284f565b98506002891115611d2a575f611d2d565b60015b611d3a9060ff168461284f565b9950505050505050509193909250565b5f81815b8151811015611dbd575f828281518110611d6a57611d6a61283b565b016020015160f81c905060308110801590611d89575060398160ff1611155b15611db457611d99603082612b0e565b60ff16611da785600a612605565b611db1919061284f565b93505b50600101611d4e565b5050919050565b6040518061016001604052805f15158152602001606081526020015f6001600160a01b031681526020015f81526020015f151581526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001606081526020015f6001600160a01b031681526020015f81526020015f15158152602001611e8d60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b905290565b5f60208284031215611ea2575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f611ee96080830187611ea9565b8281036020840152611efb8187611ea9565b90508281036040840152611f0f8186611ea9565b9150506001600160a01b038316606083015295945050505050565b6001600160e01b031981168114611f3f575f5ffd5b50565b5f60208284031215611f52575f5ffd5b8135611f5d81611f2a565b9392505050565b6001600160a01b0381168114611f3f575f5ffd5b803561ffff81168114611f89575f5ffd5b919050565b5f5f60408385031215611f9f575f5ffd5b8235611faa81611f64565b9150611fb860208401611f78565b90509250929050565b602081525f611f5d6020830184611ea9565b5f5f83601f840112611fe3575f5ffd5b50813567ffffffffffffffff811115611ffa575f5ffd5b602083019150836020828501011115612011575f5ffd5b9250929050565b5f5f5f5f5f6080868803121561202c575f5ffd5b853561203781611f64565b945061204560208701611f78565b9350604086013567ffffffffffffffff811115612060575f5ffd5b61206c88828901611fd3565b96999598509660600135949350505050565b5f5f5f5f5f5f60a08789031215612093575f5ffd5b863561209e81611f64565b955060208701356120ae81611f64565b94506120bc60408801611f78565b9350606087013567ffffffffffffffff8111156120d7575f5ffd5b6120e389828a01611fd3565b979a9699509497949695608090950135949350505050565b5f8151808452602084019350602083015f5b828110156121345781516001600160a01b031686526020958601959091019060010161210d565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612134578151865260209586019590910190600101612150565b5f82825180855260208501945060208160051b830101602085015f5b838110156121bc57601f198584030188526121a6838351611ea9565b602098890198909350919091019060010161218a565b50909695505050505050565b848152608060208201525f6121e060808301866120fb565b82810360408401526121f2818661213e565b90508281036060840152612206818561216e565b979650505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051610100810167ffffffffffffffff8111828210171561224957612249612211565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561227857612278612211565b604052919050565b5f67ffffffffffffffff82111561229957612299612211565b50601f01601f191660200190565b5f6122b96122b484612280565b61224f565b90508281528383830111156122cc575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126122f1575f5ffd5b611f5d838335602085016122a7565b5f5f5f5f60808587031215612313575f5ffd5b61231c85611f78565b9350602085013567ffffffffffffffff811115612337575f5ffd5b8501601f81018713612347575f5ffd5b612356878235602084016122a7565b935050604085013567ffffffffffffffff811115612372575f5ffd5b61237e878288016122e2565b925050606085013567ffffffffffffffff81111561239a575f5ffd5b6123a6878288016122e2565b91505092959194509250565b600181811c908216806123c657607f821691505b6020821081036123e457634e487b7160e01b5f52602260045260245ffd5b50919050565b61ffff8616815284602082015260a060408201525f61240c60a08301866120fb565b828103606084015261241e818661213e565b90508281036080840152612432818561216e565b98975050505050505050565b5f61244b6122b484612280565b905082815283838301111561245e575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112612483575f5ffd5b611f5d8383516020850161243e565b5f82601f8301126124a1575f5ffd5b815167ffffffffffffffff8111156124bb576124bb612211565b8060051b6124cb6020820161224f565b918252602081850181019290810190868411156124e6575f5ffd5b6020860192505b8383101561120e57825167ffffffffffffffff81111561250b575f5ffd5b61251a886020838a0101612474565b835250602092830192909101906124ed565b80518015158114611f89575f5ffd5b5f5f5f5f5f5f60c08789031215612550575f5ffd5b865167ffffffffffffffff811115612566575f5ffd5b61257289828a01612492565b965050602087015161258381611f64565b604088015190955093506125996060880161252c565b925060808701516125a981611f2a565b60a088015190925067ffffffffffffffff8111156125c5575f5ffd5b8701601f810189136125d5575f5ffd5b6125e48982516020840161243e565b9150509295509295509295565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610394576103946125f1565b5f5f8585111561262a575f5ffd5b83861115612636575f5ffd5b5050820193919092039150565b5f60208284031215612653575f5ffd5b8135611f5d81611f64565b5f6020828403121561266e575f5ffd5b5051919050565b81810381811115610394576103946125f1565b5f60208284031215612698575f5ffd5b611f5d8261252c565b5f602082840312156126b1575f5ffd5b815167ffffffffffffffff8111156126c7575f5ffd5b820161010081850312156126d9575f5ffd5b6126e1612225565b815167ffffffffffffffff8111156126f7575f5ffd5b61270386828501612474565b825250602082015167ffffffffffffffff81111561271f575f5ffd5b61272b86828501612474565b602083015250604082015167ffffffffffffffff81111561274a575f5ffd5b61275686828501612474565b604083015250606082015167ffffffffffffffff811115612775575f5ffd5b61278186828501612474565b606083015250608082015167ffffffffffffffff8111156127a0575f5ffd5b6127ac86828501612474565b60808301525060a082015167ffffffffffffffff8111156127cb575f5ffd5b6127d786828501612474565b60a08301525060c082015167ffffffffffffffff8111156127f6575f5ffd5b61280286828501612474565b60c08301525060e082015167ffffffffffffffff811115612821575f5ffd5b61282d86828501612474565b60e083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610394576103946125f1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156128b957603f198786030184526128a4858351611ea9565b94506020938401939190910190600101612888565b50929695505050505050565b61ffff84168152606060208201525f6128e16060830185611ea9565b9050826040830152949350505050565b805160ff81168114611f89575f5ffd5b5f60208284031215612911575f5ffd5b611f5d826128f1565b5f5f6040838503121561292b575f5ffd5b612934836128f1565b9150611fb8602084016128f1565b5f5f60408385031215612953575f5ffd5b505080516020909101519092909150565b5f60208284031215612974575f5ffd5b815167ffffffffffffffff81111561298a575f5ffd5b61189d84828501612492565b601f821115611b9a57805f5260205f20601f840160051c810160208510156129bb5750805b601f840160051c820191505b818110156129da575f81556001016129c7565b5050505050565b815167ffffffffffffffff8111156129fb576129fb612211565b612a0f81612a0984546123b2565b84612996565b6020601f821160018114612a41575f8315612a2a5750848201515b5f19600385901b1c1916600184901b1784556129da565b5f84815260208120601f198516915b82811015612a705787850151825560209485019460019092019101612a50565b5084821015612a8d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f612aae6060830186611ea9565b8281036020840152612ac08186611ea9565b9050828103604084015261120e8185611ea9565b634e487b7160e01b5f52601260045260245ffd5b5f82612af657612af6612ad4565b500490565b5f82612b0957612b09612ad4565b500690565b60ff8281168282160390811115610394576103946125f156fea2646970667358221220b0bcfaf425cfff49ead73907e97fc8a2eb4cdafba6699d76bffa2630cfc5a4b464736f6c634300081e0033","sourceMap":"783:17819:130:-:0;;;1575:536;;;;;;;;;;1599:25;1627:431;;;;;;;:::i;:::-;;;;;;;;;;;;;1599:459;;2073:31;2091:12;2073:31;;;;;;:::i;:::-;;;;;;;;1589:522;783:17819;;532:1514:180;1239:3;1228:9;1221:22;1280:2;1274:3;1263:9;1259:19;1252:31;1320:22;1314:3;1303:9;1299:19;1292:51;1381:3;1374:4;1363:9;1359:20;1352:33;1422:2;1416:3;1405:9;1401:19;1394:31;-1:-1:-1;;;1456:3:180;1445:9;1441:19;1434:47;1517:3;1512:2;1501:9;1497:18;1490:31;1202:4;1556:3;1545:9;1541:19;1580:1;1602:2;1597:3;1590:15;1637:27;1630:4;1625:3;1621:14;1614:51;1690:2;1685:3;1681:12;1674:19;;1738:9;1733:3;1729:19;1724:2;1713:9;1709:18;1702:47;1772:34;1802:3;91:2;79:15;;126:24;119:4;110:14;;103:48;176:2;167:12;;14:171;1772:34;1843:22;;;1837:3;1822:19;;1815:51;267:2;255:15;;302:25;295:4;286:14;;279:49;1758:48;-1:-1:-1;;353:2:180;344:12;;1963:22;;;1957:3;1942:19;;1935:51;444:2;432:15;;-1:-1:-1;;;472:4:180;463:14;;456:37;1875:51;-1:-1:-1;518:2:180;509:12;;1995:45;532:1514;-1:-1:-1;;;532:1514:180:o;2051:416::-;2198:2;2187:9;2180:21;2161:4;2230:6;2224:13;2273:6;2268:2;2257:9;2253:18;2246:34;2332:6;2327:2;2319:6;2315:15;2310:2;2299:9;2295:18;2289:50;2388:1;2383:2;2374:6;2363:9;2359:22;2355:31;2348:42;2458:2;2451;2447:7;2442:2;2434:6;2430:15;2426:29;2415:9;2411:45;2407:54;2399:62;;;2051:416;;;;:::o;:::-;783:17819:130;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061009f575f3560e01c806354fd4d5011610072578063b1f50f8911610058578063b1f50f8914610167578063c0d27aad1461017c578063d8a941f41461018f575f5ffd5b806354fd4d5014610125578063552cb37214610144575f5ffd5b806301e07972146100a357806301ffc9a7146100cf5780630d157721146100f25780634d516f0e14610112575b5f5ffd5b6100b66100b1366004611e92565b6101a2565b6040516100c69493929190611ed7565b60405180910390f35b6100e26100dd366004611f42565b610364565b60405190151581526020016100c6565b610105610100366004611f8e565b61039a565b6040516100c69190611fc1565b6100e2610120366004612018565b61046b565b604080515f8152600160208201526008918101919091526060016100c6565b61015761015236600461207e565b610558565b6040516100c694939291906121c8565b61017a610175366004612300565b610ee2565b005b61010561018a366004611f8e565b61102d565b61010561019d366004611f8e565b61107d565b5f602081905290815260409020805481906101bc906123b2565b80601f01602080910402602001604051908101604052809291908181526020018280546101e8906123b2565b80156102335780601f1061020a57610100808354040283529160200191610233565b820191905f5260205f20905b81548152906001019060200180831161021657829003601f168201915b505050505090806001018054610248906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610274906123b2565b80156102bf5780601f10610296576101008083540402835291602001916102bf565b820191905f5260205f20905b8154815290600101906020018083116102a257829003601f168201915b5050505050908060020180546102d4906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610300906123b2565b801561034b5780601f106103225761010080835404028352916020019161034b565b820191905f5260205f20905b81548152906001019060200180831161032e57829003601f168201915b505050600390930154919250506001600160a01b031684565b5f6001600160e01b0319821663e81bd2dd60e01b148061039457506301ffc9a760e01b6001600160e01b03198316145b92915050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912080546103e7906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610413906123b2565b801561045e5780601f106104355761010080835404028352916020019161045e565b820191905f5260205f20905b81548152906001019060200180831161044157829003601f168201915b5050505050905092915050565b6040805133602080830182905261ffff881683850152835180840385018152606090930184528251928101929092205f81815292839052928220600301549192916001600160a01b0316146104d35760405163e317a3d160e01b815260040160405180910390fd5b5f5f5f5f6104e58b338c8c8c8c610558565b604051630de6a60160e01b8152939750919550935091503390630de6a6019061051a908d9088908890889088906004016123ea565b5f604051808303815f87803b158015610531575f5ffd5b505af1158015610543573d5f5f3e3d5ffd5b5060019e9d5050505050505050505050505050565b5f6060806060610566611dc4565b6105708a8a61102d565b806020019051810190610583919061253b565b60c08701526001600160e01b03191660a08601521515608085015260608401526001600160a01b0316604083015260208083018290529051899189916105c891612605565b6105d392829061261c565b8101906105e09190612643565b6001600160a01b0390811660e08301526040820151166106535760405162461bcd60e51b8152602060048201526024808201527f5a4b50617373706f72743a20496e76616c6964207265676973747279206164646044820152637265737360e01b60648201526084015b60405180910390fd5b60e08101516001600160a01b03166106d35760405162461bcd60e51b815260206004820152603560248201527f5a4b50617373706f72743a20496e76616c6964207a65726f206164647265737360448201527f20666f72206163636f756e7420746f20636865636b0000000000000000000000606482015260840161064a565b8a6001600160a01b03168160e001516001600160a01b03161461075e5760405162461bcd60e51b815260206004820152602e60248201527f5a4b50617373706f72743a2043616c6c6572206973206e6f742074686520616360448201527f636f756e7420746f20636865636b000000000000000000000000000000000000606482015260840161064a565b5f816040015190506107a78a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92506110cd915050565b60e0830151604051635941514d60e11b81526001600160a01b03918216600482015291975082169063b282a29a90602401602060405180830381865afa1580156107f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610817919061265e565b610100830181905260608301519061082f9042612675565b1061087c5760405162461bcd60e51b815260206004820152600e60248201527f50726f6f66206973207374616c65000000000000000000000000000000000000604482015260640161064a565b8160800151156109405760e082015160405163306b618f60e21b81526001600160a01b0391821660048201529082169063c1ad863c90602401602060405180830381865afa1580156108d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f49190612688565b6109405760405162461bcd60e51b815260206004820152601d60248201527f466163654d6174636820726571756972656d656e74206e6f74206d6574000000604482015260640161064a565b60e0820151604051633eca794d60e01b81526001600160a01b03918216600482015290821690633eca794d906024015f60405180830381865afa158015610989573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109b091908101906126a1565b61014083015260a08201516001600160e01b03191663d4d6de8760e01b016109f2576109e58260c00151836101400151611103565b1515610120830152610e15565b60a08201516001600160e01b0319166321f06bd160e21b01610a21576109e58260c00151836101400151611135565b60a08201516001600160e01b031916631491889760e31b01610a50576109e58260c00151836101400151611168565b60a08201516001600160e01b0319166303617ca560e61b01610a7f576109e58260c0015183610140015161119a565b60a08201516001600160e01b031916630e85aea760e11b01610aae576109e58260c001518361014001516111cd565b60a08201516001600160e01b03191663210fe7d760e11b01610add576109e58260c00151836101400151611218565b60a08201516001600160e01b0319166331582e7d60e11b01610b0c576109e58260c0015183610140015161124a565b60a08201516001600160e01b03191663a21e3f7960e01b01610b3b576109e58260c00151836101400151611279565b60a08201516001600160e01b0319166351559d7b60e01b01610b6a576109e58260c001518361014001516112a8565b60a08201516001600160e01b0319166312f01d8d60e31b01610b99576109e58260c001518361014001516112d7565b60a08201516001600160e01b03191663df399da760e01b01610bc8576109e58260c00151836101400151611306565b60a08201516001600160e01b031916638bd9b20b60e01b01610bf7576109e58260c00151836101400151611359565b60a08201516001600160e01b03191663d2e2745f60e01b01610c26576109e58260c00151836101400151611388565b60a08201516001600160e01b031916632523ed0760e11b01610c55576109e58260c001518361014001516113b8565b60a08201516001600160e01b031916630c5e0e2760e01b01610c84576109e58260c001518361014001516113e8565b60a08201516001600160e01b031916636191efaf60e11b01610cb3576109e58260c00151836101400151611418565b60a08201516001600160e01b0319166372ab993f60e11b01610ce2576109e58260c00151836101400151611448565b60a08201516001600160e01b031916635cbf449760e11b01610d11576109e58260c00151836101400151611473565b60a08201516001600160e01b031916638519981760e01b01610d40576109e58260c001518361014001516114a3565b60a08201516001600160e01b03191663c91aa4f960e01b01610d6f576109e58260c00151836101400151611515565b60a08201516001600160e01b03191663d3a2e4bb60e01b01610d9e576109e58260c00151836101400151611587565b60a08201516001600160e01b031916631b0093df60e01b01610dcd576109e58260c001518361014001516115ef565b60405162461bcd60e51b815260206004820152601d60248201527f556e737570706f727465642066756e6374696f6e2073656c6563746f72000000604482015260640161064a565b816101200151610e755760405162461bcd60e51b815260206004820152602560248201527f5a4b50617373706f72743a2050726f6f6620766572696669636174696f6e2066604482015264185a5b195960da1b606482015260840161064a565b610e7f6001611656565b6040519297509095509350610ea7908d906020016001600160a01b0391909116815260200190565b604051602081830303815290604052835f81518110610ec857610ec861283b565b602002602001018190525050509650965096509692505050565b5f81806020019051810190610ef7919061253b565b505050505090505f81516001610f0d919061284f565b67ffffffffffffffff811115610f2557610f25612211565b604051908082528060200260200182016040528015610f5857816020015b6060815260200190600190039081610f435790505b5090505f5b8251811015610fa557828181518110610f7857610f7861283b565b6020026020010151828281518110610f9257610f9261283b565b6020908102919091010152600101610f5d565b506040518060400160405280601681526020017f61646472657373204163636f756e74546f436865636b0000000000000000000081525081835181518110610fef57610fef61283b565b60200260200101819052506110258686836040516020016110109190612862565b6040516020818303038152906040528661173a565b505050505050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060020180546103e7906123b2565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060010180546103e7906123b2565b5f8383836040516020016110e3939291906128c5565b60408051601f198184030181529190528051602090910120949350505050565b5f5f838060200190518101906111199190612901565b90508060ff1661112c846080015161185b565b11949350505050565b5f5f8380602001905181019061114b9190612901565b90508060ff1661115e846080015161185b565b1015949350505050565b5f5f8380602001905181019061117e9190612901565b90508060ff16611191846080015161185b565b10949350505050565b5f5f838060200190518101906111b09190612901565b90508060ff166111c3846080015161185b565b1115949350505050565b5f5f5f848060200190518101906111e4919061291a565b915091505f6111f6856080015161185b565b90508260ff16811015801561120e57508160ff168111155b9695505050505050565b5f5f8380602001905181019061122e9190612901565b90508060ff16611241846080015161185b565b14949350505050565b5f5f83806020019051810190611260919061265e565b905061126b816118a5565b61112c84608001515f6118ee565b5f5f8380602001905181019061128f919061265e565b905061129a816118a5565b61115e84608001515f6118ee565b5f5f838060200190518101906112be919061265e565b90506112c9816118a5565b61119184608001515f6118ee565b5f5f838060200190518101906112ed919061265e565b90506112f8816118a5565b6111c384608001515f6118ee565b5f5f5f8480602001905181019061131d9190612942565b915091505f61133085608001515f6118ee565b905061133b836118a5565b811015801561120e575061134e826118a5565b101595945050505050565b5f5f8380602001905181019061136f919061265e565b905061137a816118a5565b61124184608001515f6118ee565b5f5f8380602001905181019061139e919061265e565b90506113a9816118a5565b61112c8460a0015160016118ee565b5f5f838060200190518101906113ce919061265e565b90506113d9816118a5565b61115e8460a0015160016118ee565b5f5f838060200190518101906113fe919061265e565b9050611409816118a5565b6111918460a0015160016118ee565b5f5f8380602001905181019061142e919061265e565b9050611439816118a5565b6111c38460a0015160016118ee565b5f5f5f8480602001905181019061145f9190612942565b915091505f6113308560a0015160016118ee565b5f5f83806020019051810190611489919061265e565b9050611494816118a5565b6112418460a0015160016118ee565b5f5f838060200190518101906114b99190612964565b90505f5b815181101561150b578360200151805190602001208282815181106114e4576114e461283b565b6020026020010151805190602001200361150357600192505050610394565b6001016114bd565b505f949350505050565b5f5f8380602001905181019061152b9190612964565b90505f5b815181101561157c578360200151805190602001208282815181106115565761155661283b565b60200260200101518051906020012003611574575f92505050610394565b60010161152f565b506001949350505050565b5f5f8380602001905181019061159d9190612964565b90505f5b815181101561150b578360400151805190602001208282815181106115c8576115c861283b565b602002602001015180519060200120036115e757600192505050610394565b6001016115a1565b5f5f838060200190518101906116059190612964565b90505f5b815181101561157c578360400151805190602001208282815181106116305761163061283b565b6020026020010151805190602001200361164e575f92505050610394565b600101611609565b60608060608367ffffffffffffffff81111561167457611674612211565b60405190808252806020026020018201604052801561169d578160200160208202803683370190505b5092508367ffffffffffffffff8111156116b9576116b9612211565b6040519080825280602002602001820160405280156116e2578160200160208202803683370190505b5091508367ffffffffffffffff8111156116fe576116fe612211565b60405190808252806020026020018201604052801561173157816020015b606081526020019060019003908161171c5790505b50929491935050565b604080513360208083019190915261ffff8716828401528251808303840181526060909201909252805191012061177484600160ff611af8565b6040805160808101825285815260208082018690528183018590523360608301525f8481529081905291909120815181906117af90826129e1565b50602082015160018201906117c490826129e1565b50604082015160028201906117d990826129e1565b50606091909101516003909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560405161ffff86169033907ff02558935ef4a7a4dd0455b94fd00eb1bcd7d048c0ab648841d3985a31a135c29061184c90889088908890612a9c565b60405180910390a35050505050565b5f5f611867835f6118ee565b90505f611873426118a5565b90508181101561188657505f9392505050565b6127106118938383612675565b61189d9190612ae8565b949350505050565b5f5f5f5f6118b285611b9f565b91945092509050806118c5836064612605565b6118d185612710612605565b6118db919061284f565b6118e5919061284f565b95945050505050565b81515f9083906006146119435760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204d525a2064617465206c656e677468000000000000000000604482015260640161064a565b5f6119cc825f815181106119595761195961283b565b602001015160f81c60f81b836001815181106119775761197761283b565b016020908101516040517fff0000000000000000000000000000000000000000000000000000000000000093841692810192909252919091166021820152602201604051602081830303815290604052611d4a565b90505f611a03836002815181106119e5576119e561283b565b602001015160f81c60f81b846003815181106119775761197761283b565b90505f611a3a84600481518110611a1c57611a1c61283b565b602001015160f81c60f81b856005815181106119775761197761283b565b90505f611a46426118a5565b90505f6064611a5761271084612ae8565b611a619190612afb565b90505f8815611a9b57611a7582603261284f565b861015611a8f57611a88866107d061284f565b9050611abe565b611a888661076c61284f565b81861115611aaf57611a888661076c61284f565b611abb866107d061284f565b90505b83611aca866064612605565b611ad683612710612605565b611ae0919061284f565b611aea919061284f565b9a9950505050505050505050565b8183511015611b495760405162461bcd60e51b815260206004820152601060248201527f537472696e6720746f6f2073686f727400000000000000000000000000000000604482015260640161064a565b8083511115611b9a5760405162461bcd60e51b815260206004820152600f60248201527f537472696e6720746f6f206c6f6e670000000000000000000000000000000000604482015260640161064a565b505050565b5f808080611bb06201518086612ae8565b611bbd90620afa6c61284f565b90505f611bcd62023ab183612ae8565b90505f611bdd8262023ab1612605565b611be79084612675565b90505f61016d611bfa62023ab084612ae8565b611c06618eac85612ae8565b611c126105b486612ae8565b611c1c9086612675565b611c26919061284f565b611c309190612675565b611c3a9190612ae8565b90505f611c4984610190612605565b611c53908361284f565b90505f611c61606484612ae8565b611c6c600485612ae8565b611c788561016d612605565b611c82919061284f565b611c8c9190612675565b611c969085612675565b90505f6099611ca6836005612605565b611cb190600261284f565b611cbb9190612ae8565b90506005611cca826099612605565b611cd590600261284f565b611cdf9190612ae8565b611ce99083612675565b611cf490600161284f565b9750600a8110611d0e57611d09600982612675565b611d19565b611d1981600361284f565b98506002891115611d2a575f611d2d565b60015b611d3a9060ff168461284f565b9950505050505050509193909250565b5f81815b8151811015611dbd575f828281518110611d6a57611d6a61283b565b016020015160f81c905060308110801590611d89575060398160ff1611155b15611db457611d99603082612b0e565b60ff16611da785600a612605565b611db1919061284f565b93505b50600101611d4e565b5050919050565b6040518061016001604052805f15158152602001606081526020015f6001600160a01b031681526020015f81526020015f151581526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001606081526020015f6001600160a01b031681526020015f81526020015f15158152602001611e8d60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b905290565b5f60208284031215611ea2575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f611ee96080830187611ea9565b8281036020840152611efb8187611ea9565b90508281036040840152611f0f8186611ea9565b9150506001600160a01b038316606083015295945050505050565b6001600160e01b031981168114611f3f575f5ffd5b50565b5f60208284031215611f52575f5ffd5b8135611f5d81611f2a565b9392505050565b6001600160a01b0381168114611f3f575f5ffd5b803561ffff81168114611f89575f5ffd5b919050565b5f5f60408385031215611f9f575f5ffd5b8235611faa81611f64565b9150611fb860208401611f78565b90509250929050565b602081525f611f5d6020830184611ea9565b5f5f83601f840112611fe3575f5ffd5b50813567ffffffffffffffff811115611ffa575f5ffd5b602083019150836020828501011115612011575f5ffd5b9250929050565b5f5f5f5f5f6080868803121561202c575f5ffd5b853561203781611f64565b945061204560208701611f78565b9350604086013567ffffffffffffffff811115612060575f5ffd5b61206c88828901611fd3565b96999598509660600135949350505050565b5f5f5f5f5f5f60a08789031215612093575f5ffd5b863561209e81611f64565b955060208701356120ae81611f64565b94506120bc60408801611f78565b9350606087013567ffffffffffffffff8111156120d7575f5ffd5b6120e389828a01611fd3565b979a9699509497949695608090950135949350505050565b5f8151808452602084019350602083015f5b828110156121345781516001600160a01b031686526020958601959091019060010161210d565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612134578151865260209586019590910190600101612150565b5f82825180855260208501945060208160051b830101602085015f5b838110156121bc57601f198584030188526121a6838351611ea9565b602098890198909350919091019060010161218a565b50909695505050505050565b848152608060208201525f6121e060808301866120fb565b82810360408401526121f2818661213e565b90508281036060840152612206818561216e565b979650505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051610100810167ffffffffffffffff8111828210171561224957612249612211565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561227857612278612211565b604052919050565b5f67ffffffffffffffff82111561229957612299612211565b50601f01601f191660200190565b5f6122b96122b484612280565b61224f565b90508281528383830111156122cc575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126122f1575f5ffd5b611f5d838335602085016122a7565b5f5f5f5f60808587031215612313575f5ffd5b61231c85611f78565b9350602085013567ffffffffffffffff811115612337575f5ffd5b8501601f81018713612347575f5ffd5b612356878235602084016122a7565b935050604085013567ffffffffffffffff811115612372575f5ffd5b61237e878288016122e2565b925050606085013567ffffffffffffffff81111561239a575f5ffd5b6123a6878288016122e2565b91505092959194509250565b600181811c908216806123c657607f821691505b6020821081036123e457634e487b7160e01b5f52602260045260245ffd5b50919050565b61ffff8616815284602082015260a060408201525f61240c60a08301866120fb565b828103606084015261241e818661213e565b90508281036080840152612432818561216e565b98975050505050505050565b5f61244b6122b484612280565b905082815283838301111561245e575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112612483575f5ffd5b611f5d8383516020850161243e565b5f82601f8301126124a1575f5ffd5b815167ffffffffffffffff8111156124bb576124bb612211565b8060051b6124cb6020820161224f565b918252602081850181019290810190868411156124e6575f5ffd5b6020860192505b8383101561120e57825167ffffffffffffffff81111561250b575f5ffd5b61251a886020838a0101612474565b835250602092830192909101906124ed565b80518015158114611f89575f5ffd5b5f5f5f5f5f5f60c08789031215612550575f5ffd5b865167ffffffffffffffff811115612566575f5ffd5b61257289828a01612492565b965050602087015161258381611f64565b604088015190955093506125996060880161252c565b925060808701516125a981611f2a565b60a088015190925067ffffffffffffffff8111156125c5575f5ffd5b8701601f810189136125d5575f5ffd5b6125e48982516020840161243e565b9150509295509295509295565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610394576103946125f1565b5f5f8585111561262a575f5ffd5b83861115612636575f5ffd5b5050820193919092039150565b5f60208284031215612653575f5ffd5b8135611f5d81611f64565b5f6020828403121561266e575f5ffd5b5051919050565b81810381811115610394576103946125f1565b5f60208284031215612698575f5ffd5b611f5d8261252c565b5f602082840312156126b1575f5ffd5b815167ffffffffffffffff8111156126c7575f5ffd5b820161010081850312156126d9575f5ffd5b6126e1612225565b815167ffffffffffffffff8111156126f7575f5ffd5b61270386828501612474565b825250602082015167ffffffffffffffff81111561271f575f5ffd5b61272b86828501612474565b602083015250604082015167ffffffffffffffff81111561274a575f5ffd5b61275686828501612474565b604083015250606082015167ffffffffffffffff811115612775575f5ffd5b61278186828501612474565b606083015250608082015167ffffffffffffffff8111156127a0575f5ffd5b6127ac86828501612474565b60808301525060a082015167ffffffffffffffff8111156127cb575f5ffd5b6127d786828501612474565b60a08301525060c082015167ffffffffffffffff8111156127f6575f5ffd5b61280286828501612474565b60c08301525060e082015167ffffffffffffffff811115612821575f5ffd5b61282d86828501612474565b60e083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610394576103946125f1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156128b957603f198786030184526128a4858351611ea9565b94506020938401939190910190600101612888565b50929695505050505050565b61ffff84168152606060208201525f6128e16060830185611ea9565b9050826040830152949350505050565b805160ff81168114611f89575f5ffd5b5f60208284031215612911575f5ffd5b611f5d826128f1565b5f5f6040838503121561292b575f5ffd5b612934836128f1565b9150611fb8602084016128f1565b5f5f60408385031215612953575f5ffd5b505080516020909101519092909150565b5f60208284031215612974575f5ffd5b815167ffffffffffffffff81111561298a575f5ffd5b61189d84828501612492565b601f821115611b9a57805f5260205f20601f840160051c810160208510156129bb5750805b601f840160051c820191505b818110156129da575f81556001016129c7565b5050505050565b815167ffffffffffffffff8111156129fb576129fb612211565b612a0f81612a0984546123b2565b84612996565b6020601f821160018114612a41575f8315612a2a5750848201515b5f19600385901b1c1916600184901b1784556129da565b5f84815260208120601f198516915b82811015612a705787850151825560209485019460019092019101612a50565b5084821015612a8d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f612aae6060830186611ea9565b8281036020840152612ac08186611ea9565b9050828103604084015261120e8185611ea9565b634e487b7160e01b5f52601260045260245ffd5b5f82612af657612af6612ad4565b500490565b5f82612b0957612b09612ad4565b500690565b60ff8281168282160390811115610394576103946125f156fea2646970667358221220b0bcfaf425cfff49ead73907e97fc8a2eb4cdafba6699d76bffa2630cfc5a4b464736f6c634300081e0033","sourceMap":"783:17819:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1889:59:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6406:213;;;;;;:::i;:::-;;:::i;:::-;;;1713:14:180;;1706:22;1688:41;;1676:2;1661:18;6406:213:107;1548:187:180;5157:211:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3222:756::-;;;;;;:::i;:::-;;:::i;5775:123::-;;;;5823:12;3902:38:180;;5886:1:107;3971:2:180;3956:18;;3949:47;5889:1:107;4012:18:180;;;4005:47;;;;3890:2;3875:18;5775:123:107;3706:352:180;2738:6158:130;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2117:587::-;;;;;;:::i;:::-;;:::i;:::-;;5586:183:107;;;;;;:::i;:::-;;:::i;5374:206::-;;;;;;:::i;:::-;;:::i;1889:59::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1889:59:107;;;;;;;-1:-1:-1;;;;;;;1889:59:107;;:::o;6406:213::-;6508:4;-1:-1:-1;;;;;;6531:41:107;;-1:-1:-1;;;6531:41:107;;:81;;-1:-1:-1;;;;;;;;;;829:40:78;;;6576:36:107;6524:88;6406:213;-1:-1:-1;;6406:213:107:o;5157:211::-;2202:25:177;;;-1:-1:-1;;;;;21505:55:180;;2202:25:177;;;;21487:74:180;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:177;;;;;;;;;5240:29:107;21460:18:180;;;2202:25:177;;2192:36;;;;;;-1:-1:-1;5288:57:107;;;;;;;;;;;5281:80;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:211;;;;:::o;3222:756::-;2202:25:177;;;3438:10:107;2202:25:177;;;;21487:74:180;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:177;;;;;;;;;21460:18:180;;;;2202:25:177;;2192:36;;;;;;;;;-1:-1:-1;3474:21:107;;;;;;;;;;:28;;;-1:-1:-1;;2192:36:177;-1:-1:-1;;;;;3474:28:107;:42;3470:92;;3539:12;;-1:-1:-1;;;3539:12:107;;;;;;;;;;;3470:92;3676:16;3694:24;3720:23;3745:24;3785:77;3799:6;3815:10;3828:9;3839:15;;3856:5;3785:13;:77::i;:::-;3873:76;;-1:-1:-1;;;3873:76:107;;3675:187;;-1:-1:-1;3675:187:107;;-1:-1:-1;3675:187:107;-1:-1:-1;3675:187:107;-1:-1:-1;3881:10:107;;3873:27;;:76;;3901:9;;3675:187;;;;;;;;3873:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3967:4:107;;3222:756;-1:-1:-1;;;;;;;;;;;;;;3222:756:107:o;2738:6158:130:-;2966:16;2984:24;3010:23;3035:24;3100:14;;:::i;:::-;3260:28;3270:6;3278:9;3260;:28::i;:::-;3249:91;;;;;;;;;;;;:::i;:::-;3224:9;;;3124:216;-1:-1:-1;;;;;;3124:216:130;3202:20;;;3124:216;;;3179:21;;;3124:216;3156:21;;;3124:216;-1:-1:-1;;;;;3124:216:130;3142:12;;;3124:216;3125:15;;;;3124:216;;;3519:22;;3503:15;;;;3519:27;;;:::i;:::-;3503:45;;;;;:::i;:::-;3492:68;;;;;;;:::i;:::-;-1:-1:-1;;;;;3471:89:130;;;:18;;;:89;3605:12;;;;:26;3601:78;;3633:46;;-1:-1:-1;;;3633:46:130;;14970:2:180;3633:46:130;;;14952:21:180;15009:2;14989:18;;;14982:30;15048:34;15028:18;;;15021:62;-1:-1:-1;;;15099:18:180;;;15092:34;15143:19;;3633:46:130;;;;;;;;3601:78;3693:18;;;;-1:-1:-1;;;;;3693:32:130;3689:101;;3727:63;;-1:-1:-1;;;3727:63:130;;15375:2:180;3727:63:130;;;15357:21:180;15414:2;15394:18;;;15387:30;15453:34;15433:18;;;15426:62;15524:23;15504:18;;;15497:51;15565:19;;3727:63:130;15173:417:180;3689:101:130;3826:6;-1:-1:-1;;;;;3804:28:130;:3;:18;;;-1:-1:-1;;;;;3804:28:130;;3800:90;;3834:56;;-1:-1:-1;;;3834:56:130;;15797:2:180;3834:56:130;;;15779:21:180;15836:2;15816:18;;;15809:30;15875:34;15855:18;;;15848:62;15946:16;15926:18;;;15919:44;15980:19;;3834:56:130;15595:410:180;3800:90:130;3901:34;3964:3;:12;;;3901:76;;3998:67;4031:9;4042:15;;3998:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4059:5:130;;-1:-1:-1;3998:32:130;;-1:-1:-1;;3998:67:130:i;:::-;4172:18;;;;4145:46;;-1:-1:-1;;;4145:46:130;;-1:-1:-1;;;;;16174:55:180;;;4145:46:130;;;16156:74:180;3987:78:130;;-1:-1:-1;4145:26:130;;;;;16129:18:180;;4145:46:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4124:18;;;:67;;;4248:21;;;;;4209:36;;:15;:36;:::i;:::-;:60;4201:87;;;;-1:-1:-1;;;4201:87:130;;16811:2:180;4201:87:130;;;16793:21:180;16850:2;16830:18;;;16823:30;16889:16;16869:18;;;16862:44;16923:18;;4201:87:130;16609:338:180;4201:87:130;4375:3;:21;;;4371:139;;;4446:18;;;;4420:45;;-1:-1:-1;;;4420:45:130;;-1:-1:-1;;;;;16174:55:180;;;4420:45:130;;;16156:74:180;4420:25:130;;;;;;16129:18:180;;4420:45:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4412:87;;;;-1:-1:-1;;;4412:87:130;;17361:2:180;4412:87:130;;;17343:21:180;17400:2;17380:18;;;17373:30;17439:31;17419:18;;;17412:59;17488:18;;4412:87:130;17159:353:180;4412:87:130;4600:18;;;;4578:41;;-1:-1:-1;;;4578:41:130;;-1:-1:-1;;;;;16174:55:180;;;4578:41:130;;;16156:74:180;4578:21:130;;;;;;16129:18:180;;4578:41:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4578:41:130;;;;;;;;;;;;:::i;:::-;4558:17;;;:61;4703:20;;;;-1:-1:-1;;;;;;4703:62:130;-1:-1:-1;;;4703:62:130;4699:3914;;4795:45;4811:3;:9;;;4822:3;:17;;;4795:15;:45::i;:::-;4781:59;;:11;;;:59;4699:3914;;;4861:20;;;;-1:-1:-1;;;;;;4861:69:130;-1:-1:-1;;;4861:69:130;4857:3756;;4960:52;4983:3;:9;;;4994:3;:17;;;4960:22;:52::i;4857:3756::-;5033:20;;;;-1:-1:-1;;;;;;5033:62:130;-1:-1:-1;;;5033:62:130;5029:3584;;5125:45;5141:3;:9;;;5152:3;:17;;;5125:15;:45::i;5029:3584::-;5191:20;;;;-1:-1:-1;;;;;;5191:69:130;-1:-1:-1;;;5191:69:130;5187:3426;;5290:52;5313:3;:9;;;5324:3;:17;;;5290:22;:52::i;5187:3426::-;5363:20;;;;-1:-1:-1;;;;;;5363:70:130;-1:-1:-1;;;5363:70:130;5359:3254;;5463:47;5481:3;:9;;;5492:3;:17;;;5463;:47::i;5359:3254::-;5531:20;;;;-1:-1:-1;;;;;;5531:62:130;-1:-1:-1;;;5531:62:130;5527:3086;;5623:45;5639:3;:9;;;5650:3;:17;;;5623:15;:45::i;5527:3086::-;5689:20;;;;-1:-1:-1;;;;;;5689:70:130;-1:-1:-1;;;5689:70:130;5685:2928;;5789:51;5811:3;:9;;;5822:3;:17;;;5789:21;:51::i;5685:2928::-;5861:20;;;;-1:-1:-1;;;;;;5861:77:130;-1:-1:-1;;;5861:77:130;5857:2756;;5968:58;5997:3;:9;;;6008:3;:17;;;5968:28;:58::i;5857:2756::-;6047:20;;;;-1:-1:-1;;;;;;6047:71:130;-1:-1:-1;;;6047:71:130;6043:2570;;6148:52;6171:3;:9;;;6182:3;:17;;;6148:22;:52::i;6043:2570::-;6221:20;;;;-1:-1:-1;;;;;;6221:78:130;-1:-1:-1;;;6221:78:130;6217:2396;;6329:59;6359:3;:9;;;6370:3;:17;;;6329:29;:59::i;6217:2396::-;6409:20;;;;-1:-1:-1;;;;;;6409:80:130;-1:-1:-1;;;6409:80:130;6405:2208;;6519:53;6543:3;:9;;;6554:3;:17;;;6519:23;:53::i;6405:2208::-;6593:20;;;;-1:-1:-1;;;;;;6593:70:130;-1:-1:-1;;;6593:70:130;6589:2024;;6693:51;6715:3;:9;;;6726:3;:17;;;6693:21;:51::i;6589:2024::-;6765:20;;;;-1:-1:-1;;;;;;6765:71:130;-1:-1:-1;;;6765:71:130;6761:1852;;6866:52;6889:3;:9;;;6900:3;:17;;;6866:22;:52::i;6761:1852::-;6939:20;;;;-1:-1:-1;;;;;;6939:78:130;-1:-1:-1;;;6939:78:130;6935:1678;;7047:59;7077:3;:9;;;7088:3;:17;;;7047:29;:59::i;6935:1678::-;7127:20;;;;-1:-1:-1;;;;;;7127:72:130;-1:-1:-1;;;7127:72:130;7123:1490;;7229:53;7253:3;:9;;;7264:3;:17;;;7229:23;:53::i;7123:1490::-;7303:20;;;;-1:-1:-1;;;;;;7303:79:130;-1:-1:-1;;;7303:79:130;7299:1314;;7412:60;7443:3;:9;;;7454:3;:17;;;7412:30;:60::i;7299:1314::-;7493:20;;;;-1:-1:-1;;;;;;7493:81:130;-1:-1:-1;;;7493:81:130;7489:1124;;7604:54;7629:3;:9;;;7640:3;:17;;;7604:24;:54::i;7489:1124::-;7679:20;;;;-1:-1:-1;;;;;;7679:71:130;-1:-1:-1;;;7679:71:130;7675:938;;7780:52;7803:3;:9;;;7814:3;:17;;;7780:22;:52::i;7675:938::-;7853:20;;;;-1:-1:-1;;;;;;7853:73:130;-1:-1:-1;;;7853:73:130;7849:764;;7956:53;7980:3;:9;;;7991:3;:17;;;7956:23;:53::i;7849:764::-;8030:20;;;;-1:-1:-1;;;;;;8030:74:130;-1:-1:-1;;;8030:74:130;8026:587;;8134:54;8159:3;:9;;;8170:3;:17;;;8134:24;:54::i;8026:587::-;8209:20;;;;-1:-1:-1;;;;;;8209:70:130;-1:-1:-1;;;8209:70:130;8205:408;;8309:50;8330:3;:9;;;8341:3;:17;;;8309:20;:50::i;8205:408::-;8380:20;;;;-1:-1:-1;;;;;;8380:71:130;-1:-1:-1;;;8380:71:130;8376:237;;8481:51;8503:3;:9;;;8514:3;:17;;;8481:21;:51::i;8376:237::-;8563:39;;-1:-1:-1;;;8563:39:130;;19704:2:180;8563:39:130;;;19686:21:180;19743:2;19723:18;;;19716:30;19782:31;19762:18;;;19755:59;19831:18;;8563:39:130;19502:353:180;8376:237:130;8628:3;:11;;;8623:90;;8655:47;;-1:-1:-1;;;8655:47:130;;20062:2:180;8655:47:130;;;20044:21:180;20101:2;20081:18;;;20074:30;20140:34;20120:18;;;20113:62;-1:-1:-1;;;20191:18:180;;;20184:35;20236:19;;8655:47:130;19860:401:180;8623:90:130;8754:37;8789:1;8754:34;:37::i;:::-;8816:18;;8723:68;;-1:-1:-1;8723:68:130;;-1:-1:-1;8723:68:130;-1:-1:-1;8816:18:130;;8827:6;;8816:18;;-1:-1:-1;;;;;16174:55:180;;;;16156:74;;16144:2;16129:18;;16010:226;8816:18:130;;;;;;;;;;;;;8801:9;8811:1;8801:12;;;;;;;;:::i;:::-;;;;;;:33;;;;8844:45;;2738:6158;;;;;;;;;;;:::o;2117:587::-;2271:23;2314:6;2303:69;;;;;;;;;;;;:::i;:::-;2270:102;;;;;;;2383:26;2425:7;:14;2442:1;2425:18;;;;:::i;:::-;2412:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2383:61;;2459:9;2454:92;2474:7;:14;2470:1;:18;2454:92;;;2525:7;2533:1;2525:10;;;;;;;;:::i;:::-;;;;;;;2509;2520:1;2509:13;;;;;;;;:::i;:::-;;;;;;;;;;:26;2490:3;;2454:92;;;;2555:53;;;;;;;;;;;;;;;;;:10;2566:7;:14;2555:26;;;;;;;;:::i;:::-;;;;;;:53;;;;2618:79;2642:5;2649:15;2677:10;2666:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;2690:6;2618:23;:79::i;:::-;2260:444;;2117:587;;;;:::o;5586:183:107:-;2202:25:177;;;-1:-1:-1;;;;;21505:55:180;;2202:25:177;;;;21487:74:180;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:177;;;;;;;;;5660:19:107;21460:18:180;;;2202:25:177;;2192:36;;;;;;-1:-1:-1;5698:57:107;;;;;;;;;;;:64;;5691:71;;;;;:::i;5374:206::-;2202:25:177;;;-1:-1:-1;;;;;21505:55:180;;2202:25:177;;;;21487:74:180;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:177;;;;;;;;;5461:24:107;21460:18:180;;;2202:25:177;;2192:36;;;;;;-1:-1:-1;5504:57:107;;;;;;;;;;;:69;;5497:76;;;;;:::i;1492:250:177:-;1627:16;1699:9;1710:15;1727:5;1688:45;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1688:45:177;;;;;;;;;1678:56;;1688:45;1678:56;;;;;1492:250;-1:-1:-1;;;;1492:250:177:o;9103:220:130:-;9198:4;9214:15;9243:5;9232:26;;;;;;;;;;;;:::i;:::-;9214:44;;9307:9;9275:41;;:29;9289:4;:14;;;9275:13;:29::i;:::-;:41;;9103:220;-1:-1:-1;;;;9103:220:130:o;9329:228::-;9431:4;9447:15;9476:5;9465:26;;;;;;;;;;;;:::i;:::-;9447:44;;9541:9;9508:42;;:29;9522:4;:14;;;9508:13;:29::i;:::-;:42;;;9329:228;-1:-1:-1;;;;9329:228:130:o;9563:220::-;9658:4;9674:15;9703:5;9692:26;;;;;;;;;;;;:::i;:::-;9674:44;;9767:9;9735:41;;:29;9749:4;:14;;;9735:13;:29::i;:::-;:41;;9563:220;-1:-1:-1;;;;9563:220:130:o;9789:228::-;9891:4;9907:15;9936:5;9925:26;;;;;;;;;;;;:::i;:::-;9907:44;;10001:9;9968:42;;:29;9982:4;:14;;;9968:13;:29::i;:::-;:42;;;9789:228;-1:-1:-1;;;;9789:228:130:o;10023:280::-;10120:4;10137:11;10150;10176:5;10165:33;;;;;;;;;;;;:::i;:::-;10136:62;;;;10208:11;10222:29;10236:4;:14;;;10222:13;:29::i;:::-;10208:43;;10275:5;10268:12;;:3;:12;;:28;;;;;10291:5;10284:12;;:3;:12;;10268:28;10261:35;10023:280;-1:-1:-1;;;;;;10023:280:130:o;10309:221::-;10404:4;10420:15;10449:5;10438:26;;;;;;;;;;;;:::i;:::-;10420:44;;10514:9;10481:42;;:29;10495:4;:14;;;10481:13;:29::i;:::-;:42;;10309:221;-1:-1:-1;;;;10309:221:130:o;10536:260::-;10637:4;10653:17;10684:5;10673:28;;;;;;;;;;;;:::i;:::-;10653:48;;10758:31;10779:9;10758:20;:31::i;:::-;10718:37;10733:4;:14;;;10749:5;10718:14;:37::i;10802:268::-;10910:4;10926:17;10957:5;10946:28;;;;;;;;;;;;:::i;:::-;10926:48;;11032:31;11053:9;11032:20;:31::i;:::-;10991:37;11006:4;:14;;;11022:5;10991:14;:37::i;11076:261::-;11178:4;11194:17;11225:5;11214:28;;;;;;;;;;;;:::i;:::-;11194:48;;11299:31;11320:9;11299:20;:31::i;:::-;11259:37;11274:4;:14;;;11290:5;11259:14;:37::i;11343:269::-;11452:4;11468:17;11499:5;11488:28;;;;;;;;;;;;:::i;:::-;11468:48;;11574:31;11595:9;11574:20;:31::i;:::-;11533:37;11548:4;:14;;;11564:5;11533:14;:37::i;11618:368::-;11721:4;11738:14;11754;11783:5;11772:37;;;;;;;;;;;;:::i;:::-;11737:72;;;;11819:17;11839:37;11854:4;:14;;;11870:5;11839:14;:37::i;:::-;11819:57;;11906:28;11927:6;11906:20;:28::i;:::-;11893:9;:41;;:86;;;;;11951:28;11972:6;11951:20;:28::i;:::-;-1:-1:-1;11938:41:130;;11618:368;-1:-1:-1;;;;;11618:368:130:o;11992:261::-;12093:4;12109:17;12140:5;12129:28;;;;;;;;;;;;:::i;:::-;12109:48;;12215:31;12236:9;12215:20;:31::i;:::-;12174:37;12189:4;:14;;;12205:5;12174:14;:37::i;12259:261::-;12361:4;12377:17;12408:5;12397:28;;;;;;;;;;;;:::i;:::-;12377:48;;12482:31;12503:9;12482:20;:31::i;:::-;12442:37;12457:4;:15;;;12474:4;12442:14;:37::i;12526:269::-;12635:4;12651:17;12682:5;12671:28;;;;;;;;;;;;:::i;:::-;12651:48;;12757:31;12778:9;12757:20;:31::i;:::-;12716:37;12731:4;:15;;;12748:4;12716:14;:37::i;12801:262::-;12904:4;12920:17;12951:5;12940:28;;;;;;;;;;;;:::i;:::-;12920:48;;13025:31;13046:9;13025:20;:31::i;:::-;12985:37;13000:4;:15;;;13017:4;12985:14;:37::i;13069:298::-;13203:4;13223:17;13254:5;13243:28;;;;;;;;;;;;:::i;:::-;13223:48;;13329:31;13350:9;13329:20;:31::i;:::-;13288:37;13303:4;:15;;;13320:4;13288:14;:37::i;13373:369::-;13477:4;13494:14;13510;13539:5;13528:37;;;;;;;;;;;;:::i;:::-;13493:72;;;;13575:17;13595:37;13610:4;:15;;;13627:4;13595:14;:37::i;13748:262::-;13850:4;13866:17;13897:5;13886:28;;;;;;;;;;;;:::i;:::-;13866:48;;13972:31;13993:9;13972:20;:31::i;:::-;13931:37;13946:4;:15;;;13963:4;13931:14;:37::i;14016:406::-;14119:4;14135:25;14174:5;14163:29;;;;;;;;;;;;:::i;:::-;14135:57;-1:-1:-1;14207:9:130;14202:192;14226:9;:16;14222:1;:20;14202:192;;;14317:4;:19;;;14301:37;;;;;;14283:9;14293:1;14283:12;;;;;;;;:::i;:::-;;;;;;;14267:30;;;;;;:71;14263:121;;14365:4;14358:11;;;;;;14263:121;14244:3;;14202:192;;;-1:-1:-1;14410:5:130;;14016:406;-1:-1:-1;;;;14016:406:130:o;14428:407::-;14532:4;14548:25;14587:5;14576:29;;;;;;;;;;;;:::i;:::-;14548:57;-1:-1:-1;14620:9:130;14615:193;14639:9;:16;14635:1;:20;14615:193;;;14730:4;:19;;;14714:37;;;;;;14696:9;14706:1;14696:12;;;;;;;;:::i;:::-;;;;;;;14680:30;;;;;;:71;14676:122;;14778:5;14771:12;;;;;;14676:122;14657:3;;14615:193;;;-1:-1:-1;14824:4:130;;14428:407;-1:-1:-1;;;;14428:407:130:o;14841:412::-;14941:4;14957:29;15000:5;14989:29;;;;;;;;;;;;:::i;:::-;14957:61;-1:-1:-1;15033:9:130;15028:197;15052:13;:20;15048:1;:24;15028:197;;;15151:4;:16;;;15135:34;;;;;;15113:13;15127:1;15113:16;;;;;;;;:::i;:::-;;;;;;;15097:34;;;;;;:72;15093:122;;15196:4;15189:11;;;;;;15093:122;15074:3;;15028:197;;15259:413;15360:4;15376:29;15419:5;15408:29;;;;;;;;;;;;:::i;:::-;15376:61;-1:-1:-1;15452:9:130;15447:198;15471:13;:20;15467:1;:24;15447:198;;;15570:4;:16;;;15554:34;;;;;;15532:13;15546:1;15532:16;;;;;;;;:::i;:::-;;;;;;;15516:34;;;;;;:72;15512:123;;15615:5;15608:12;;;;;;15512:123;15493:3;;15447:198;;2604:300:177;2694:24;2720:23;2745:24;2809:6;2795:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2795:21:177;;2785:31;;2849:6;2835:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2835:21:177;;2826:30;;2890:6;2878:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2604:300:177;;;;-1:-1:-1;;2604:300:177:o;2235:586:107:-;2202:25:177;;;2468:10:107;2202:25:177;;;;21487:74:180;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:177;;;;;;;;;21460:18:180;;;;2202:25:177;;;2192:36;;;;;2496:59:107;2531:15;2548:1;2551:3;2496:34;:59::i;:::-;2590:131;;;;;;;;;;;;;;;;;;;;;;;;2700:10;2590:131;;;;-1:-1:-1;2566:21:107;;;;;;;;;;;:155;;:21;;:155;;:21;:155;:::i;:::-;-1:-1:-1;2566:155:107;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2566:155:107;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2566:155:107;;;;;;;;;;;;-1:-1:-1;;2566:155:107;-1:-1:-1;;;;;2566:155:107;;;;;;;;;2737:77;;;;;;2758:10;;2737:77;;;;2777:15;;2794:11;;2807:6;;2737:77;:::i;:::-;;;;;;;;2407:414;2235:586;;;;:::o;15880:332:130:-;15951:7;15970:17;15990:32;16005:9;16016:5;15990:14;:32::i;:::-;15970:52;;16032:17;16052:37;16073:15;16052:20;:37::i;:::-;16032:57;;16116:9;16104;:21;16100:35;;;-1:-1:-1;16134:1:130;;15880:332;-1:-1:-1;;;15880:332:130:o;16100:35::-;16199:6;16174:21;16186:9;16174;:21;:::i;:::-;16173:32;;;;:::i;:::-;16166:39;15880:332;-1:-1:-1;;;;15880:332:130:o;17417:202::-;17489:7;17509:9;17520;17531;17544:27;17561:9;17544:16;:27::i;:::-;17508:63;;-1:-1:-1;17508:63:130;-1:-1:-1;17508:63:130;-1:-1:-1;17508:63:130;17601:7;17508:63;17605:3;17601:7;:::i;:::-;17588:10;:1;17592:6;17588:10;:::i;:::-;:20;;;;:::i;:::-;:24;;;;:::i;:::-;17581:31;17417:202;-1:-1:-1;;;;;17417:202:130:o;16218:1193::-;16363:8;;16299:7;;16341:3;;16375:1;16363:13;16355:49;;;;-1:-1:-1;;;16355:49:130;;27825:2:180;16355:49:130;;;27807:21:180;27864:2;27844:18;;;27837:30;27903:25;27883:18;;;27876:53;27946:18;;16355:49:130;27623:347:180;16355:49:130;16414:10;16427:51;16465:1;16467;16465:4;;;;;;;;:::i;:::-;;;;;;;;;16471:1;16473;16471:4;;;;;;;;:::i;:::-;;;;;;;16448:28;;16471:4;28140:26:180;;;16448:28:130;;;28128:39:180;;;;16471:4:130;;;;28183:11:180;;;28176:47;28239:11;;16448:28:130;;;;;;;;;;;;16427:13;:51::i;:::-;16414:64;;16488:10;16501:51;16539:1;16541;16539:4;;;;;;;;:::i;:::-;;;;;;;;;16545:1;16547;16545:4;;;;;;;;:::i;16501:51::-;16488:64;;16562:10;16575:51;16613:1;16615;16613:4;;;;;;;;:::i;:::-;;;;;;;;;16619:1;16621;16619:4;;;;;;;;:::i;16575:51::-;16562:64;;16637:23;16663:37;16684:15;16663:20;:37::i;:::-;16637:63;-1:-1:-1;16710:17:130;16759:3;16731:24;16749:6;16637:63;16731:24;:::i;:::-;16730:32;;;;:::i;:::-;16710:52;;16773:12;16799:8;16795:563;;;17005:14;:9;17017:2;17005:14;:::i;:::-;17000:2;:19;16996:129;;;17046:9;17053:2;17046:4;:9;:::i;:::-;17039:16;;16795:563;;16996:129;17101:9;17108:2;17101:4;:9;:::i;16795:563::-;17233:9;17228:2;:14;17224:124;;;17269:9;17276:2;17269:4;:9;:::i;17224:124::-;17324:9;17331:2;17324:4;:9;:::i;:::-;17317:16;;17224:124;17402:2;17391:8;:2;17396:3;17391:8;:::i;:::-;17375:13;:4;17382:6;17375:13;:::i;:::-;:24;;;;:::i;:::-;:29;;;;:::i;:::-;17368:36;16218:1193;-1:-1:-1;;;;;;;;;;16218:1193:130:o;619:300:177:-;755:9;739:5;733:19;:31;729:88;;;780:26;;-1:-1:-1;;;780:26:177;;28580:2:180;780:26:177;;;28562:21:180;28619:2;28599:18;;;28592:30;28658:18;28638;;;28631:46;28694:18;;780:26:177;28378:340:180;729:88:177;852:9;836:5;830:19;:31;826:87;;;877:25;;-1:-1:-1;;;877:25:177;;28925:2:180;877:25:177;;;28907:21:180;28964:2;28944:18;;;28937:30;29003:17;28983:18;;;28976:45;29038:18;;877:25:177;28723:339:180;826:87:177;619:300;;;:::o;17625:622:130:-;17693:12;;;;17757:18;17769:6;17757:9;:18;:::i;:::-;:28;;17778:7;17757:28;:::i;:::-;17745:40;-1:-1:-1;17795:11:130;17809:36;17838:7;17745:40;17809:36;:::i;:::-;17795:50;-1:-1:-1;17855:11:130;17873:13;17795:50;17879:7;17873:13;:::i;:::-;17869:17;;:1;:17;:::i;:::-;17855:31;-1:-1:-1;17896:12:130;17963:3;17946:13;17952:7;17855:31;17946:13;:::i;:::-;17931:12;17937:6;17931:3;:12;:::i;:::-;17918:10;17924:4;17918:3;:10;:::i;:::-;17912:16;;:3;:16;:::i;:::-;:31;;;;:::i;:::-;:47;;;;:::i;:::-;17911:55;;;;:::i;:::-;17896:70;-1:-1:-1;17976:9:130;17995;:3;18001;17995:9;:::i;:::-;17988:16;;:4;:16;:::i;:::-;17976:28;-1:-1:-1;18014:11:130;18059:10;18066:3;18059:4;:10;:::i;:::-;18048:8;18055:1;18048:4;:8;:::i;:::-;18035:10;18041:4;18035:3;:10;:::i;:::-;:21;;;;:::i;:::-;:34;;;;:::i;:::-;18028:42;;:3;:42;:::i;:::-;18014:56;-1:-1:-1;18080:10:130;18109:3;18094:7;18014:56;18094:1;:7;:::i;:::-;:11;;18104:1;18094:11;:::i;:::-;18093:19;;;;:::i;:::-;18080:32;-1:-1:-1;18151:1:130;18135:8;18080:32;18135:3;:8;:::i;:::-;:12;;18146:1;18135:12;:::i;:::-;18134:18;;;;:::i;:::-;18128:24;;:3;:24;:::i;:::-;:28;;18155:1;18128:28;:::i;:::-;18122:34;;18179:2;18174;:7;:25;;18193:6;18198:1;18193:2;:6;:::i;:::-;18174:25;;;18184:6;:2;18189:1;18184:6;:::i;:::-;18166:33;;18230:1;18221:5;:10;;:18;;18238:1;18221:18;;;18234:1;18221:18;18216:24;;;;:1;:24;:::i;:::-;18209:31;;17735:512;;;;;;;17625:622;;;;;:::o;18253:347::-;18316:14;18365:1;18316:14;18416:178;18432:1;:8;18428:1;:12;18416:178;;;18461:7;18477:1;18479;18477:4;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;18505:2:130;18500:7;;;;;:18;;;18516:2;18511:1;:7;;;;18500:18;18496:88;;;18562:6;18566:2;18562:1;:6;:::i;:::-;18547:22;;:11;:6;18556:2;18547:11;:::i;:::-;:22;;;;:::i;:::-;18538:31;;18496:88;-1:-1:-1;18442:3:130;;18416:178;;;18332:268;;18253:347;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:180:180:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:180;;14:180;-1:-1:-1;14:180:180:o;199:289::-;241:3;279:5;273:12;306:6;301:3;294:19;362:6;355:4;348:5;344:16;337:4;332:3;328:14;322:47;414:1;407:4;398:6;393:3;389:16;385:27;378:38;477:4;470:2;466:7;461:2;453:6;449:15;445:29;440:3;436:39;432:50;425:57;;;199:289;;;;:::o;493:664::-;762:3;751:9;744:22;725:4;789:46;830:3;819:9;815:19;807:6;789:46;:::i;:::-;883:9;875:6;871:22;866:2;855:9;851:18;844:50;917:33;943:6;935;917:33;:::i;:::-;903:47;;998:9;990:6;986:22;981:2;970:9;966:18;959:50;1026:33;1052:6;1044;1026:33;:::i;:::-;1018:41;;;-1:-1:-1;;;;;1099:6:180;1095:55;1090:2;1079:9;1075:18;1068:83;493:664;;;;;;;:::o;1162:131::-;-1:-1:-1;;;;;;1236:32:180;;1226:43;;1216:71;;1283:1;1280;1273:12;1216:71;1162:131;:::o;1298:245::-;1356:6;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;1464:9;1451:23;1483:30;1507:5;1483:30;:::i;:::-;1532:5;1298:245;-1:-1:-1;;;1298:245:180:o;1740:154::-;-1:-1:-1;;;;;1819:5:180;1815:54;1808:5;1805:65;1795:93;;1884:1;1881;1874:12;1899:159;1966:20;;2026:6;2015:18;;2005:29;;1995:57;;2048:1;2045;2038:12;1995:57;1899:159;;;:::o;2063:319::-;2130:6;2138;2191:2;2179:9;2170:7;2166:23;2162:32;2159:52;;;2207:1;2204;2197:12;2159:52;2246:9;2233:23;2265:31;2290:5;2265:31;:::i;:::-;2315:5;-1:-1:-1;2339:37:180;2372:2;2357:18;;2339:37;:::i;:::-;2329:47;;2063:319;;;;;:::o;2387:220::-;2536:2;2525:9;2518:21;2499:4;2556:45;2597:2;2586:9;2582:18;2574:6;2556:45;:::i;2612:347::-;2663:8;2673:6;2727:3;2720:4;2712:6;2708:17;2704:27;2694:55;;2745:1;2742;2735:12;2694:55;-1:-1:-1;2768:20:180;;2811:18;2800:30;;2797:50;;;2843:1;2840;2833:12;2797:50;2880:4;2872:6;2868:17;2856:29;;2932:3;2925:4;2916:6;2908;2904:19;2900:30;2897:39;2894:59;;;2949:1;2946;2939:12;2894:59;2612:347;;;;;:::o;2964:737::-;3060:6;3068;3076;3084;3092;3145:3;3133:9;3124:7;3120:23;3116:33;3113:53;;;3162:1;3159;3152:12;3113:53;3201:9;3188:23;3220:31;3245:5;3220:31;:::i;:::-;3270:5;-1:-1:-1;3294:37:180;3327:2;3312:18;;3294:37;:::i;:::-;3284:47;;3382:2;3371:9;3367:18;3354:32;3409:18;3401:6;3398:30;3395:50;;;3441:1;3438;3431:12;3395:50;3480:58;3530:7;3521:6;3510:9;3506:22;3480:58;:::i;:::-;2964:737;;;;-1:-1:-1;3557:8:180;3665:2;3650:18;3637:32;;2964:737;-1:-1:-1;;;;2964:737:180:o;4063:879::-;4168:6;4176;4184;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;4317:9;4304:23;4336:31;4361:5;4336:31;:::i;:::-;4386:5;-1:-1:-1;4443:2:180;4428:18;;4415:32;4456:33;4415:32;4456:33;:::i;:::-;4508:7;-1:-1:-1;4534:37:180;4567:2;4552:18;;4534:37;:::i;:::-;4524:47;;4622:2;4611:9;4607:18;4594:32;4649:18;4641:6;4638:30;4635:50;;;4681:1;4678;4671:12;4635:50;4720:58;4770:7;4761:6;4750:9;4746:22;4720:58;:::i;:::-;4063:879;;;;-1:-1:-1;4063:879:180;;;;;4905:3;4890:19;;;4877:33;;4063:879;-1:-1:-1;;;;4063:879:180:o;4947:469::-;5000:3;5038:5;5032:12;5065:6;5060:3;5053:19;5097:4;5092:3;5088:14;5081:21;;5136:4;5129:5;5125:16;5159:1;5169:222;5183:6;5180:1;5177:13;5169:222;;;5248:13;;-1:-1:-1;;;;;5244:62:180;5232:75;;5336:4;5327:14;;;;5364:17;;;;5205:1;5198:9;5169:222;;;-1:-1:-1;5407:3:180;;4947:469;-1:-1:-1;;;;4947:469:180:o;5421:420::-;5474:3;5512:5;5506:12;5539:6;5534:3;5527:19;5571:4;5566:3;5562:14;5555:21;;5610:4;5603:5;5599:16;5633:1;5643:173;5657:6;5654:1;5651:13;5643:173;;;5718:13;;5706:26;;5761:4;5752:14;;;;5789:17;;;;5679:1;5672:9;5643:173;;5846:578;5897:3;5928;5960:5;5954:12;5987:6;5982:3;5975:19;6019:4;6014:3;6010:14;6003:21;;6077:4;6067:6;6064:1;6060:14;6053:5;6049:26;6045:37;6116:4;6109:5;6105:16;6139:1;6149:249;6163:6;6160:1;6157:13;6149:249;;;6250:2;6246:7;6238:5;6232:4;6228:16;6224:30;6219:3;6212:43;6276:38;6309:4;6300:6;6294:13;6276:38;:::i;:::-;6349:4;6374:14;;;;6268:46;;-1:-1:-1;6337:17:180;;;;;6185:1;6178:9;6149:249;;;-1:-1:-1;6414:4:180;;5846:578;-1:-1:-1;;;;;;5846:578:180:o;6429:758::-;6810:6;6799:9;6792:25;6853:3;6848:2;6837:9;6833:18;6826:31;6773:4;6880:57;6932:3;6921:9;6917:19;6909:6;6880:57;:::i;:::-;6985:9;6977:6;6973:22;6968:2;6957:9;6953:18;6946:50;7019:44;7056:6;7048;7019:44;:::i;:::-;7005:58;;7111:9;7103:6;7099:22;7094:2;7083:9;7079:18;7072:50;7139:42;7174:6;7166;7139:42;:::i;:::-;7131:50;6429:758;-1:-1:-1;;;;;;;6429:758:180:o;7192:127::-;7253:10;7248:3;7244:20;7241:1;7234:31;7284:4;7281:1;7274:15;7308:4;7305:1;7298:15;7324:255;7396:2;7390:9;7438:6;7426:19;;7475:18;7460:34;;7496:22;;;7457:62;7454:88;;;7522:18;;:::i;:::-;7558:2;7551:22;7324:255;:::o;7584:275::-;7655:2;7649:9;7720:2;7701:13;;-1:-1:-1;;7697:27:180;7685:40;;7755:18;7740:34;;7776:22;;;7737:62;7734:88;;;7802:18;;:::i;:::-;7838:2;7831:22;7584:275;;-1:-1:-1;7584:275:180:o;7864:187::-;7913:4;7946:18;7938:6;7935:30;7932:56;;;7968:18;;:::i;:::-;-1:-1:-1;8034:2:180;8013:15;-1:-1:-1;;8009:29:180;8040:4;8005:40;;7864:187::o;8056:338::-;8121:5;8150:53;8166:36;8195:6;8166:36;:::i;:::-;8150:53;:::i;:::-;8141:62;;8226:6;8219:5;8212:21;8266:3;8257:6;8252:3;8248:16;8245:25;8242:45;;;8283:1;8280;8273:12;8242:45;8332:6;8327:3;8320:4;8313:5;8309:16;8296:43;8386:1;8379:4;8370:6;8363:5;8359:18;8355:29;8348:40;8056:338;;;;;:::o;8399:221::-;8441:5;8494:3;8487:4;8479:6;8475:17;8471:27;8461:55;;8512:1;8509;8502:12;8461:55;8534:80;8610:3;8601:6;8588:20;8581:4;8573:6;8569:17;8534:80;:::i;8625:952::-;8738:6;8746;8754;8762;8815:3;8803:9;8794:7;8790:23;8786:33;8783:53;;;8832:1;8829;8822:12;8783:53;8855:28;8873:9;8855:28;:::i;:::-;8845:38;;8934:2;8923:9;8919:18;8906:32;8961:18;8953:6;8950:30;8947:50;;;8993:1;8990;8983:12;8947:50;9016:22;;9069:4;9061:13;;9057:27;-1:-1:-1;9047:55:180;;9098:1;9095;9088:12;9047:55;9121:74;9187:7;9182:2;9169:16;9164:2;9160;9156:11;9121:74;:::i;:::-;9111:84;;;9248:2;9237:9;9233:18;9220:32;9277:18;9267:8;9264:32;9261:52;;;9309:1;9306;9299:12;9261:52;9332:51;9375:7;9364:8;9353:9;9349:24;9332:51;:::i;:::-;9322:61;;;9436:2;9425:9;9421:18;9408:32;9465:18;9455:8;9452:32;9449:52;;;9497:1;9494;9487:12;9449:52;9520:51;9563:7;9552:8;9541:9;9537:24;9520:51;:::i;:::-;9510:61;;;8625:952;;;;;;;:::o;9805:380::-;9884:1;9880:12;;;;9927;;;9948:61;;10002:4;9994:6;9990:17;9980:27;;9948:61;10055:2;10047:6;10044:14;10024:18;10021:38;10018:161;;10101:10;10096:3;10092:20;10089:1;10082:31;10136:4;10133:1;10126:15;10164:4;10161:1;10154:15;10018:161;;9805:380;;;:::o;10190:841::-;10609:6;10601;10597:19;10586:9;10579:38;10653:6;10648:2;10637:9;10633:18;10626:34;10696:3;10691:2;10680:9;10676:18;10669:31;10560:4;10723:57;10775:3;10764:9;10760:19;10752:6;10723:57;:::i;:::-;10828:9;10820:6;10816:22;10811:2;10800:9;10796:18;10789:50;10862:44;10899:6;10891;10862:44;:::i;:::-;10848:58;;10955:9;10947:6;10943:22;10937:3;10926:9;10922:19;10915:51;10983:42;11018:6;11010;10983:42;:::i;:::-;10975:50;10190:841;-1:-1:-1;;;;;;;;10190:841:180:o;11036:342::-;11112:5;11141:53;11157:36;11186:6;11157:36;:::i;11141:53::-;11132:62;;11217:6;11210:5;11203:21;11257:3;11248:6;11243:3;11239:16;11236:25;11233:45;;;11274:1;11271;11264:12;11233:45;11316:6;11311:3;11304:4;11297:5;11293:16;11287:36;11370:1;11363:4;11354:6;11347:5;11343:18;11339:29;11332:40;11036:342;;;;;:::o;11383:237::-;11437:5;11490:3;11483:4;11475:6;11471:17;11467:27;11457:55;;11508:1;11505;11498:12;11457:55;11530:84;11610:3;11601:6;11595:13;11588:4;11580:6;11576:17;11530:84;:::i;11625:887::-;11689:5;11742:3;11735:4;11727:6;11723:17;11719:27;11709:55;;11760:1;11757;11750:12;11709:55;11793:6;11787:13;11823:18;11815:6;11812:30;11809:56;;;11845:18;;:::i;:::-;11891:6;11888:1;11884:14;11918:30;11942:4;11938:2;11934:13;11918:30;:::i;:::-;11984:19;;;12028:4;12060:15;;;12056:26;;;12019:14;;;;12094:15;;;12091:35;;;12122:1;12119;12112:12;12091:35;12158:4;12150:6;12146:17;12135:28;;12172:309;12188:6;12183:3;12180:15;12172:309;;;12269:3;12263:10;12305:18;12292:11;12289:35;12286:55;;;12337:1;12334;12327:12;12286:55;12366:70;12432:3;12425:4;12411:11;12403:6;12399:24;12395:35;12366:70;:::i;:::-;12354:83;;-1:-1:-1;12466:4:180;12205:14;;;;12457;;;;12172:309;;12517:164;12593:13;;12642;;12635:21;12625:32;;12615:60;;12671:1;12668;12661:12;12686:1176;12849:6;12857;12865;12873;12881;12889;12942:3;12930:9;12921:7;12917:23;12913:33;12910:53;;;12959:1;12956;12949:12;12910:53;12992:9;12986:16;13025:18;13017:6;13014:30;13011:50;;;13057:1;13054;13047:12;13011:50;13080:71;13143:7;13134:6;13123:9;13119:22;13080:71;:::i;:::-;13070:81;;;13194:2;13183:9;13179:18;13173:25;13207:31;13232:5;13207:31;:::i;:::-;13328:2;13313:18;;13307:25;13257:5;;-1:-1:-1;13307:25:180;-1:-1:-1;13377:46:180;13419:2;13404:18;;13377:46;:::i;:::-;13367:56;;13468:3;13457:9;13453:19;13447:26;13482:32;13506:7;13482:32;:::i;:::-;13586:3;13571:19;;13565:26;13533:7;;-1:-1:-1;13616:18:180;13603:32;;13600:52;;;13648:1;13645;13638:12;13600:52;13671:24;;13726:4;13718:13;;13714:27;-1:-1:-1;13704:55:180;;13755:1;13752;13745:12;13704:55;13778:78;13848:7;13843:2;13837:9;13832:2;13828;13824:11;13778:78;:::i;:::-;13768:88;;;12686:1176;;;;;;;;:::o;13867:127::-;13928:10;13923:3;13919:20;13916:1;13909:31;13959:4;13956:1;13949:15;13983:4;13980:1;13973:15;13999:168;14072:9;;;14103;;14120:15;;;14114:22;;14100:37;14090:71;;14141:18;;:::i;14172:331::-;14277:9;14288;14330:8;14318:10;14315:24;14312:44;;;14352:1;14349;14342:12;14312:44;14381:6;14371:8;14368:20;14365:40;;;14401:1;14398;14391:12;14365:40;-1:-1:-1;;14427:23:180;;;14472:25;;;;;-1:-1:-1;14172:331:180:o;14508:255::-;14575:6;14628:2;14616:9;14607:7;14603:23;14599:32;14596:52;;;14644:1;14641;14634:12;14596:52;14683:9;14670:23;14702:31;14727:5;14702:31;:::i;16241:230::-;16311:6;16364:2;16352:9;16343:7;16339:23;16335:32;16332:52;;;16380:1;16377;16370:12;16332:52;-1:-1:-1;16425:16:180;;16241:230;-1:-1:-1;16241:230:180:o;16476:128::-;16543:9;;;16564:11;;;16561:37;;;16578:18;;:::i;16952:202::-;17019:6;17072:2;17060:9;17051:7;17047:23;17043:32;17040:52;;;17088:1;17085;17078:12;17040:52;17111:37;17138:9;17111:37;:::i;17517:1980::-;17619:6;17672:2;17660:9;17651:7;17647:23;17643:32;17640:52;;;17688:1;17685;17678:12;17640:52;17721:9;17715:16;17754:18;17746:6;17743:30;17740:50;;;17786:1;17783;17776:12;17740:50;17809:22;;17865:6;17847:16;;;17843:29;17840:49;;;17885:1;17882;17875:12;17840:49;17911:22;;:::i;:::-;17964:2;17958:9;17992:18;17982:8;17979:32;17976:52;;;18024:1;18021;18014:12;17976:52;18051:56;18099:7;18088:8;18084:2;18080:17;18051:56;:::i;:::-;18044:5;18037:71;;18147:2;18143;18139:11;18133:18;18176;18166:8;18163:32;18160:52;;;18208:1;18205;18198:12;18160:52;18244:56;18292:7;18281:8;18277:2;18273:17;18244:56;:::i;:::-;18239:2;18232:5;18228:14;18221:80;;18340:2;18336;18332:11;18326:18;18369;18359:8;18356:32;18353:52;;;18401:1;18398;18391:12;18353:52;18437:56;18485:7;18474:8;18470:2;18466:17;18437:56;:::i;:::-;18432:2;18425:5;18421:14;18414:80;;18533:2;18529;18525:11;18519:18;18562;18552:8;18549:32;18546:52;;;18594:1;18591;18584:12;18546:52;18630:56;18678:7;18667:8;18663:2;18659:17;18630:56;:::i;:::-;18625:2;18618:5;18614:14;18607:80;;18726:3;18722:2;18718:12;18712:19;18756:18;18746:8;18743:32;18740:52;;;18788:1;18785;18778:12;18740:52;18825:56;18873:7;18862:8;18858:2;18854:17;18825:56;:::i;:::-;18819:3;18812:5;18808:15;18801:81;;18921:3;18917:2;18913:12;18907:19;18951:18;18941:8;18938:32;18935:52;;;18983:1;18980;18973:12;18935:52;19020:56;19068:7;19057:8;19053:2;19049:17;19020:56;:::i;:::-;19014:3;19007:5;19003:15;18996:81;;19116:3;19112:2;19108:12;19102:19;19146:18;19136:8;19133:32;19130:52;;;19178:1;19175;19168:12;19130:52;19215:56;19263:7;19252:8;19248:2;19244:17;19215:56;:::i;:::-;19209:3;19202:5;19198:15;19191:81;;19311:3;19307:2;19303:12;19297:19;19341:18;19331:8;19328:32;19325:52;;;19373:1;19370;19363:12;19325:52;19410:56;19458:7;19447:8;19443:2;19439:17;19410:56;:::i;:::-;19404:3;19393:15;;19386:81;-1:-1:-1;19397:5:180;17517:1980;-1:-1:-1;;;;17517:1980:180:o;20266:127::-;20327:10;20322:3;20318:20;20315:1;20308:31;20358:4;20355:1;20348:15;20382:4;20379:1;20372:15;20398:125;20463:9;;;20484:10;;;20481:36;;;20497:18;;:::i;20528:782::-;20690:4;20738:2;20727:9;20723:18;20768:2;20757:9;20750:21;20791:6;20826;20820:13;20857:6;20849;20842:22;20895:2;20884:9;20880:18;20873:25;;20957:2;20947:6;20944:1;20940:14;20929:9;20925:30;20921:39;20907:53;;20995:2;20987:6;20983:15;21016:1;21026:255;21040:6;21037:1;21034:13;21026:255;;;21133:2;21129:7;21117:9;21109:6;21105:22;21101:36;21096:3;21089:49;21161:40;21194:6;21185;21179:13;21161:40;:::i;:::-;21151:50;-1:-1:-1;21236:2:180;21259:12;;;;21224:15;;;;;21062:1;21055:9;21026:255;;;-1:-1:-1;21298:6:180;;20528:782;-1:-1:-1;;;;;;20528:782:180:o;21628:371::-;21841:6;21833;21829:19;21818:9;21811:38;21885:2;21880;21869:9;21865:18;21858:30;21792:4;21905:45;21946:2;21935:9;21931:18;21923:6;21905:45;:::i;:::-;21897:53;;21986:6;21981:2;21970:9;21966:18;21959:34;21628:371;;;;;;:::o;22004:160::-;22081:13;;22134:4;22123:16;;22113:27;;22103:55;;22154:1;22151;22144:12;22169:204;22237:6;22290:2;22278:9;22269:7;22265:23;22261:32;22258:52;;;22306:1;22303;22296:12;22258:52;22329:38;22357:9;22329:38;:::i;22378:285::-;22453:6;22461;22514:2;22502:9;22493:7;22489:23;22485:32;22482:52;;;22530:1;22527;22520:12;22482:52;22553:38;22581:9;22553:38;:::i;:::-;22543:48;;22610:47;22653:2;22642:9;22638:18;22610:47;:::i;22668:343::-;22747:6;22755;22808:2;22796:9;22787:7;22783:23;22779:32;22776:52;;;22824:1;22821;22814:12;22776:52;-1:-1:-1;;22869:16:180;;22975:2;22960:18;;;22954:25;22869:16;;22954:25;;-1:-1:-1;22668:343:180:o;23016:372::-;23121:6;23174:2;23162:9;23153:7;23149:23;23145:32;23142:52;;;23190:1;23187;23180:12;23142:52;23223:9;23217:16;23256:18;23248:6;23245:30;23242:50;;;23288:1;23285;23278:12;23242:50;23311:71;23374:7;23365:6;23354:9;23350:22;23311:71;:::i;23519:518::-;23621:2;23616:3;23613:11;23610:421;;;23657:5;23654:1;23647:16;23701:4;23698:1;23688:18;23771:2;23759:10;23755:19;23752:1;23748:27;23742:4;23738:38;23807:4;23795:10;23792:20;23789:47;;;-1:-1:-1;23830:4:180;23789:47;23885:2;23880:3;23876:12;23873:1;23869:20;23863:4;23859:31;23849:41;;23940:81;23958:2;23951:5;23948:13;23940:81;;;24017:1;24003:16;;23984:1;23973:13;23940:81;;;23944:3;;23519:518;;;:::o;24213:1299::-;24339:3;24333:10;24366:18;24358:6;24355:30;24352:56;;;24388:18;;:::i;:::-;24417:97;24507:6;24467:38;24499:4;24493:11;24467:38;:::i;:::-;24461:4;24417:97;:::i;:::-;24563:4;24594:2;24583:14;;24611:1;24606:649;;;;25299:1;25316:6;25313:89;;;-1:-1:-1;25368:19:180;;;25362:26;25313:89;-1:-1:-1;;24170:1:180;24166:11;;;24162:24;24158:29;24148:40;24194:1;24190:11;;;24145:57;25415:81;;24576:930;;24606:649;23466:1;23459:14;;;23503:4;23490:18;;-1:-1:-1;;24642:20:180;;;24760:222;24774:7;24771:1;24768:14;24760:222;;;24856:19;;;24850:26;24835:42;;24963:4;24948:20;;;;24916:1;24904:14;;;;24790:12;24760:222;;;24764:3;25010:6;25001:7;24998:19;24995:201;;;25071:19;;;25065:26;-1:-1:-1;;25154:1:180;25150:14;;;25166:3;25146:24;25142:37;25138:42;25123:58;25108:74;;24995:201;-1:-1:-1;;;;25242:1:180;25226:14;;;25222:22;25209:36;;-1:-1:-1;24213:1299:180:o;26819:542::-;27060:2;27049:9;27042:21;27023:4;27086:45;27127:2;27116:9;27112:18;27104:6;27086:45;:::i;:::-;27179:9;27171:6;27167:22;27162:2;27151:9;27147:18;27140:50;27213:33;27239:6;27231;27213:33;:::i;:::-;27199:47;;27294:9;27286:6;27282:22;27277:2;27266:9;27262:18;27255:50;27322:33;27348:6;27340;27322:33;:::i;27366:127::-;27427:10;27422:3;27418:20;27415:1;27408:31;27458:4;27455:1;27448:15;27482:4;27479:1;27472:15;27498:120;27538:1;27564;27554:35;;27569:18;;:::i;:::-;-1:-1:-1;27603:9:180;;27498:120::o;28261:112::-;28293:1;28319;28309:35;;28324:18;;:::i;:::-;-1:-1:-1;28358:9:180;;28261:112::o;29067:151::-;29157:4;29150:12;;;29136;;;29132:31;;29175:14;;29172:40;;;29192:18;;:::i","linkReferences":{}},"methodIdentifiers":{"executeMandate(address,uint16,bytes,uint256)":"4d516f0e","getConfig(address,uint16)":"c0d27aad","getInputParams(address,uint16)":"d8a941f4","getNameDescription(address,uint16)":"0d157721","handleRequest(address,address,uint16,bytes,uint256)":"552cb372","initializeMandate(uint16,string,bytes,bytes)":"b1f50f89","mandates(bytes32)":"01e07972","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OnlyPowers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"AsyncMandate__Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"configParams\",\"type\":\"bytes\"}],\"name\":\"Mandate__Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"Mandate__Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"executeMandate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getInputParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getNameDescription\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"handleRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"initializeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"mandates\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"}],\"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\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"major\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"patch\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"oracle\":\"Address of the oracle for the async mandate\",\"powers\":\"Address of the Powers protocol\"}},\"Mandate__Deployed(bytes)\":{\"params\":{\"configParams\":\"Configurations parameters for the mandate\"}},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"powers\":\"Address of the Powers protocol\"}}},\"kind\":\"dev\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"details\":\"Called by the Powers protocol during action execution\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"success\":\"True if execution succeeded\"}},\"getConfig(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"config\":\"The configuration data for the mandate\"}},\"getInputParams(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"inputParams\":\"The input parameters for the mandate\"}},\"getNameDescription(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"nameDescription\":\"The name and description of the mandate\"}},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"details\":\"Must be overridden by implementing contracts\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"actionId\":\"The action ID\",\"calldatas\":\"Encoded function calls\",\"targets\":\"Target contract addresses for calls\",\"values\":\"ETH values to send with calls\"}},\"version()\":{\"returns\":{\"major\":\"The major version number\",\"minor\":\"The minor version number\",\"patch\":\"The patch version number\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"notice\":\"Emitted when an async mandate is initialized\"},\"Mandate__Deployed(bytes)\":{\"notice\":\"Emitted when a mandate is deployed\"},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"notice\":\"Emitted when a mandate is initialized\"}},\"kind\":\"user\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"notice\":\"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers\"},\"getConfig(address,uint16)\":{\"notice\":\"Retrieves the configuration for a specific mandate\"},\"getInputParams(address,uint16)\":{\"notice\":\"Retrieves the input parameters for a specific mandate\"},\"getNameDescription(address,uint16)\":{\"notice\":\"Retrieves the name and description for a specific mandate\"},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"notice\":\"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use.\"},\"version()\":{\"notice\":\"Retrieves the version of the mandate contract\"}},\"notice\":\"NB: a list of available checks and their functionSelectors is appended below. NB 2: You can only run one check at a time on the registry. If you want to run multiple checks, you need to create multiple mandates with different configs in a single chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol\":\"ZKPassport_Check\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol\":{\"keccak256\":\"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6\",\"dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj\"]},\"src/Mandate.sol\":{\"keccak256\":\"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929\",\"dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P\"]},\"src/addons/helpers/ZKPassport_PowersRegistry.sol\":{\"keccak256\":\"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6\",\"dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K\"]},\"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol\":{\"keccak256\":\"0x5679d5320b1a577c61d48bf7165285fecf272421eb20b3480f00f15e2550f65f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad924e386b1095eace963df6b8ae8f6351f02cd92e4ac93e38d1ae109be86017\",\"dweb:/ipfs/QmXmEewVBgrQp2gJAioXHENF7Q7ewdrUxZVjGDibXog8ij\"]},\"src/interfaces/IMandate.sol\":{\"keccak256\":\"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931\",\"dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A\"]},\"src/interfaces/IPowers.sol\":{\"keccak256\":\"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec\",\"dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp\"]},\"src/interfaces/IZKPassport.sol\":{\"keccak256\":\"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588\",\"dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q\"]},\"src/interfaces/PowersErrors.sol\":{\"keccak256\":\"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882\",\"dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf\"]},\"src/interfaces/PowersEvents.sol\":{\"keccak256\":\"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d\",\"dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB\"]},\"src/interfaces/PowersTypes.sol\":{\"keccak256\":\"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740\",\"dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK\"]},\"src/libraries/MandateUtilities.sol\":{\"keccak256\":\"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad\",\"dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"OnlyPowers"},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false},{"internalType":"address","name":"oracle","type":"address","indexed":false}],"type":"event","name":"AsyncMandate__Initialized","anonymous":false},{"inputs":[{"internalType":"bytes","name":"configParams","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Deployed","anonymous":false},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"executeMandate","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getInputParams","outputs":[{"internalType":"bytes","name":"inputParams","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getNameDescription","outputs":[{"internalType":"string","name":"nameDescription","type":"string"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"handleRequest","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}]},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"},{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initializeMandate"},{"inputs":[{"internalType":"bytes32","name":"mandateHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"mandates","outputs":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"inputParams","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address","name":"powers","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint16","name":"major","type":"uint16"},{"internalType":"uint16","name":"minor","type":"uint16"},{"internalType":"uint16","name":"patch","type":"uint16"}]}],"devdoc":{"kind":"dev","methods":{"executeMandate(address,uint16,bytes,uint256)":{"details":"Called by the Powers protocol during action execution","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","nonce":"The nonce for the action"},"returns":{"success":"True if execution succeeded"}},"getConfig(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"config":"The configuration data for the mandate"}},"getInputParams(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"inputParams":"The input parameters for the mandate"}},"getNameDescription(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"nameDescription":"The name and description of the mandate"}},"handleRequest(address,address,uint16,bytes,uint256)":{"details":"Must be overridden by implementing contracts","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","mandateId":"The id of the mandate","nonce":"The nonce for the action"},"returns":{"actionId":"The action ID","calldatas":"Encoded function calls","targets":"Target contract addresses for calls","values":"ETH values to send with calls"}},"version()":{"returns":{"major":"The major version number","minor":"The minor version number","patch":"The patch version number"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeMandate(address,uint16,bytes,uint256)":{"notice":"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers"},"getConfig(address,uint16)":{"notice":"Retrieves the configuration for a specific mandate"},"getInputParams(address,uint16)":{"notice":"Retrieves the input parameters for a specific mandate"},"getNameDescription(address,uint16)":{"notice":"Retrieves the name and description for a specific mandate"},"handleRequest(address,address,uint16,bytes,uint256)":{"notice":"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use."},"version()":{"notice":"Retrieves the version of the mandate contract"}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol":"ZKPassport_Check"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620","urls":["bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8","dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol":{"keccak256":"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c","urls":["bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6","dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj"],"license":"Apache-2.0"},"src/Mandate.sol":{"keccak256":"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d","urls":["bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929","dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P"],"license":"MIT"},"src/addons/helpers/ZKPassport_PowersRegistry.sol":{"keccak256":"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2","urls":["bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6","dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K"],"license":"MIT"},"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol":{"keccak256":"0x5679d5320b1a577c61d48bf7165285fecf272421eb20b3480f00f15e2550f65f","urls":["bzz-raw://ad924e386b1095eace963df6b8ae8f6351f02cd92e4ac93e38d1ae109be86017","dweb:/ipfs/QmXmEewVBgrQp2gJAioXHENF7Q7ewdrUxZVjGDibXog8ij"],"license":"MIT"},"src/interfaces/IMandate.sol":{"keccak256":"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa","urls":["bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931","dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A"],"license":"MIT"},"src/interfaces/IPowers.sol":{"keccak256":"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690","urls":["bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec","dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp"],"license":"MIT"},"src/interfaces/IZKPassport.sol":{"keccak256":"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141","urls":["bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588","dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q"],"license":"MIT"},"src/interfaces/PowersErrors.sol":{"keccak256":"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098","urls":["bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882","dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf"],"license":"MIT"},"src/interfaces/PowersEvents.sol":{"keccak256":"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e","urls":["bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d","dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB"],"license":"MIT"},"src/interfaces/PowersTypes.sol":{"keccak256":"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878","urls":["bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740","dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK"],"license":"MIT"},"src/libraries/MandateUtilities.sol":{"keccak256":"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5","urls":["bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad","dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC"],"license":"MIT"}},"version":1},"id":130} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeMandate","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getConfig","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"config","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getInputParams","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"inputParams","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getNameDescription","inputs":[{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"handleRequest","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"powers","type":"address","internalType":"address"},{"name":"mandateId","type":"uint16","internalType":"uint16"},{"name":"mandateCalldata","type":"bytes","internalType":"bytes"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"actionId","type":"uint256","internalType":"uint256"},{"name":"targets","type":"address[]","internalType":"address[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"calldatas","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"initializeMandate","inputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"nameDescription","type":"string","internalType":"string"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mandates","inputs":[{"name":"mandateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"nameDescription","type":"string","internalType":"string"},{"name":"inputParams","type":"bytes","internalType":"bytes"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"powers","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint16","internalType":"uint16"},{"name":"minor","type":"uint16","internalType":"uint16"},{"name":"patch","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"event","name":"AsyncMandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"oracle","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mandate__Deployed","inputs":[{"name":"configParams","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Mandate__Initialized","inputs":[{"name":"powers","type":"address","indexed":true,"internalType":"address"},{"name":"index","type":"uint16","indexed":true,"internalType":"uint16"},{"name":"nameDescription","type":"string","indexed":false,"internalType":"string"},{"name":"inputParams","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"config","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"OnlyPowers","inputs":[]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b505f6040516020016100209061006e565b60405160208183030381529060405290507f71bb7b033e40374cfbc64859f679a737bcbfca31158d6a4783c01ee8d445cc5e8160405161006091906101aa565b60405180910390a1506101df565b60c08152601460c08201527f737472696e675b5d20696e707574506172616d7300000000000000000000000060e0820152610100602082015260106101008201526f6164647265737320726567697374727960801b61012082015261014060408201525f61014082015f601982527f75696e74323536207374616c6541667465725365636f6e6473000000000000006020830152604082019050838103606085015261014481601681527f626f6f6c20666163656d61746368526571756972656400000000000000000000602082015260400190565b8481036080860152601781527f6279746573342066756e6374696f6e53656c6563746f7200000000000000000060208201529150506040810183810360a0850152600b81526a189e5d195cc81a5b9c1d5d60aa1b60208201529050604081019392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b612b5d806101ec5f395ff3fe608060405234801561000f575f5ffd5b506004361061009f575f3560e01c806354fd4d5011610072578063b1f50f8911610058578063b1f50f8914610167578063c0d27aad1461017c578063d8a941f41461018f575f5ffd5b806354fd4d5014610125578063552cb37214610144575f5ffd5b806301e07972146100a357806301ffc9a7146100cf5780630d157721146100f25780634d516f0e14610112575b5f5ffd5b6100b66100b1366004611e92565b6101a2565b6040516100c69493929190611ed7565b60405180910390f35b6100e26100dd366004611f42565b610364565b60405190151581526020016100c6565b610105610100366004611f8e565b61039a565b6040516100c69190611fc1565b6100e2610120366004612018565b61046b565b604080515f8152600160208201526008918101919091526060016100c6565b61015761015236600461207e565b610558565b6040516100c694939291906121c8565b61017a610175366004612300565b610ee2565b005b61010561018a366004611f8e565b61102d565b61010561019d366004611f8e565b61107d565b5f602081905290815260409020805481906101bc906123b2565b80601f01602080910402602001604051908101604052809291908181526020018280546101e8906123b2565b80156102335780601f1061020a57610100808354040283529160200191610233565b820191905f5260205f20905b81548152906001019060200180831161021657829003601f168201915b505050505090806001018054610248906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610274906123b2565b80156102bf5780601f10610296576101008083540402835291602001916102bf565b820191905f5260205f20905b8154815290600101906020018083116102a257829003601f168201915b5050505050908060020180546102d4906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610300906123b2565b801561034b5780601f106103225761010080835404028352916020019161034b565b820191905f5260205f20905b81548152906001019060200180831161032e57829003601f168201915b505050600390930154919250506001600160a01b031684565b5f6001600160e01b0319821663e81bd2dd60e01b148061039457506301ffc9a760e01b6001600160e01b03198316145b92915050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912080546103e7906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610413906123b2565b801561045e5780601f106104355761010080835404028352916020019161045e565b820191905f5260205f20905b81548152906001019060200180831161044157829003601f168201915b5050505050905092915050565b6040805133602080830182905261ffff881683850152835180840385018152606090930184528251928101929092205f81815292839052928220600301549192916001600160a01b0316146104d35760405163e317a3d160e01b815260040160405180910390fd5b5f5f5f5f6104e58b338c8c8c8c610558565b604051630de6a60160e01b8152939750919550935091503390630de6a6019061051a908d9088908890889088906004016123ea565b5f604051808303815f87803b158015610531575f5ffd5b505af1158015610543573d5f5f3e3d5ffd5b5060019e9d5050505050505050505050505050565b5f6060806060610566611dc4565b6105708a8a61102d565b806020019051810190610583919061253b565b60c08701526001600160e01b03191660a08601521515608085015260608401526001600160a01b0316604083015260208083018290529051899189916105c891612605565b6105d392829061261c565b8101906105e09190612643565b6001600160a01b0390811660e08301526040820151166106535760405162461bcd60e51b8152602060048201526024808201527f5a4b50617373706f72743a20496e76616c6964207265676973747279206164646044820152637265737360e01b60648201526084015b60405180910390fd5b60e08101516001600160a01b03166106d35760405162461bcd60e51b815260206004820152603560248201527f5a4b50617373706f72743a20496e76616c6964207a65726f206164647265737360448201527f20666f72206163636f756e7420746f20636865636b0000000000000000000000606482015260840161064a565b8a6001600160a01b03168160e001516001600160a01b03161461075e5760405162461bcd60e51b815260206004820152602e60248201527f5a4b50617373706f72743a2043616c6c6572206973206e6f742074686520616360448201527f636f756e7420746f20636865636b000000000000000000000000000000000000606482015260840161064a565b5f816040015190506107a78a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92506110cd915050565b60e0830151604051635941514d60e11b81526001600160a01b03918216600482015291975082169063b282a29a90602401602060405180830381865afa1580156107f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610817919061265e565b610100830181905260608301519061082f9042612675565b1061087c5760405162461bcd60e51b815260206004820152600e60248201527f50726f6f66206973207374616c65000000000000000000000000000000000000604482015260640161064a565b8160800151156109405760e082015160405163306b618f60e21b81526001600160a01b0391821660048201529082169063c1ad863c90602401602060405180830381865afa1580156108d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f49190612688565b6109405760405162461bcd60e51b815260206004820152601d60248201527f466163654d6174636820726571756972656d656e74206e6f74206d6574000000604482015260640161064a565b60e0820151604051633eca794d60e01b81526001600160a01b03918216600482015290821690633eca794d906024015f60405180830381865afa158015610989573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109b091908101906126a1565b61014083015260a08201516001600160e01b03191663d4d6de8760e01b016109f2576109e58260c00151836101400151611103565b1515610120830152610e15565b60a08201516001600160e01b0319166321f06bd160e21b01610a21576109e58260c00151836101400151611135565b60a08201516001600160e01b031916631491889760e31b01610a50576109e58260c00151836101400151611168565b60a08201516001600160e01b0319166303617ca560e61b01610a7f576109e58260c0015183610140015161119a565b60a08201516001600160e01b031916630e85aea760e11b01610aae576109e58260c001518361014001516111cd565b60a08201516001600160e01b03191663210fe7d760e11b01610add576109e58260c00151836101400151611218565b60a08201516001600160e01b0319166331582e7d60e11b01610b0c576109e58260c0015183610140015161124a565b60a08201516001600160e01b03191663a21e3f7960e01b01610b3b576109e58260c00151836101400151611279565b60a08201516001600160e01b0319166351559d7b60e01b01610b6a576109e58260c001518361014001516112a8565b60a08201516001600160e01b0319166312f01d8d60e31b01610b99576109e58260c001518361014001516112d7565b60a08201516001600160e01b03191663df399da760e01b01610bc8576109e58260c00151836101400151611306565b60a08201516001600160e01b031916638bd9b20b60e01b01610bf7576109e58260c00151836101400151611359565b60a08201516001600160e01b03191663d2e2745f60e01b01610c26576109e58260c00151836101400151611388565b60a08201516001600160e01b031916632523ed0760e11b01610c55576109e58260c001518361014001516113b8565b60a08201516001600160e01b031916630c5e0e2760e01b01610c84576109e58260c001518361014001516113e8565b60a08201516001600160e01b031916636191efaf60e11b01610cb3576109e58260c00151836101400151611418565b60a08201516001600160e01b0319166372ab993f60e11b01610ce2576109e58260c00151836101400151611448565b60a08201516001600160e01b031916635cbf449760e11b01610d11576109e58260c00151836101400151611473565b60a08201516001600160e01b031916638519981760e01b01610d40576109e58260c001518361014001516114a3565b60a08201516001600160e01b03191663c91aa4f960e01b01610d6f576109e58260c00151836101400151611515565b60a08201516001600160e01b03191663d3a2e4bb60e01b01610d9e576109e58260c00151836101400151611587565b60a08201516001600160e01b031916631b0093df60e01b01610dcd576109e58260c001518361014001516115ef565b60405162461bcd60e51b815260206004820152601d60248201527f556e737570706f727465642066756e6374696f6e2073656c6563746f72000000604482015260640161064a565b816101200151610e755760405162461bcd60e51b815260206004820152602560248201527f5a4b50617373706f72743a2050726f6f6620766572696669636174696f6e2066604482015264185a5b195960da1b606482015260840161064a565b610e7f6001611656565b6040519297509095509350610ea7908d906020016001600160a01b0391909116815260200190565b604051602081830303815290604052835f81518110610ec857610ec861283b565b602002602001018190525050509650965096509692505050565b5f81806020019051810190610ef7919061253b565b505050505090505f81516001610f0d919061284f565b67ffffffffffffffff811115610f2557610f25612211565b604051908082528060200260200182016040528015610f5857816020015b6060815260200190600190039081610f435790505b5090505f5b8251811015610fa557828181518110610f7857610f7861283b565b6020026020010151828281518110610f9257610f9261283b565b6020908102919091010152600101610f5d565b506040518060400160405280601681526020017f61646472657373204163636f756e74546f436865636b0000000000000000000081525081835181518110610fef57610fef61283b565b60200260200101819052506110258686836040516020016110109190612862565b6040516020818303038152906040528661173a565b505050505050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060020180546103e7906123b2565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060010180546103e7906123b2565b5f8383836040516020016110e3939291906128c5565b60408051601f198184030181529190528051602090910120949350505050565b5f5f838060200190518101906111199190612901565b90508060ff1661112c846080015161185b565b11949350505050565b5f5f8380602001905181019061114b9190612901565b90508060ff1661115e846080015161185b565b1015949350505050565b5f5f8380602001905181019061117e9190612901565b90508060ff16611191846080015161185b565b10949350505050565b5f5f838060200190518101906111b09190612901565b90508060ff166111c3846080015161185b565b1115949350505050565b5f5f5f848060200190518101906111e4919061291a565b915091505f6111f6856080015161185b565b90508260ff16811015801561120e57508160ff168111155b9695505050505050565b5f5f8380602001905181019061122e9190612901565b90508060ff16611241846080015161185b565b14949350505050565b5f5f83806020019051810190611260919061265e565b905061126b816118a5565b61112c84608001515f6118ee565b5f5f8380602001905181019061128f919061265e565b905061129a816118a5565b61115e84608001515f6118ee565b5f5f838060200190518101906112be919061265e565b90506112c9816118a5565b61119184608001515f6118ee565b5f5f838060200190518101906112ed919061265e565b90506112f8816118a5565b6111c384608001515f6118ee565b5f5f5f8480602001905181019061131d9190612942565b915091505f61133085608001515f6118ee565b905061133b836118a5565b811015801561120e575061134e826118a5565b101595945050505050565b5f5f8380602001905181019061136f919061265e565b905061137a816118a5565b61124184608001515f6118ee565b5f5f8380602001905181019061139e919061265e565b90506113a9816118a5565b61112c8460a0015160016118ee565b5f5f838060200190518101906113ce919061265e565b90506113d9816118a5565b61115e8460a0015160016118ee565b5f5f838060200190518101906113fe919061265e565b9050611409816118a5565b6111918460a0015160016118ee565b5f5f8380602001905181019061142e919061265e565b9050611439816118a5565b6111c38460a0015160016118ee565b5f5f5f8480602001905181019061145f9190612942565b915091505f6113308560a0015160016118ee565b5f5f83806020019051810190611489919061265e565b9050611494816118a5565b6112418460a0015160016118ee565b5f5f838060200190518101906114b99190612964565b90505f5b815181101561150b578360200151805190602001208282815181106114e4576114e461283b565b6020026020010151805190602001200361150357600192505050610394565b6001016114bd565b505f949350505050565b5f5f8380602001905181019061152b9190612964565b90505f5b815181101561157c578360200151805190602001208282815181106115565761155661283b565b60200260200101518051906020012003611574575f92505050610394565b60010161152f565b506001949350505050565b5f5f8380602001905181019061159d9190612964565b90505f5b815181101561150b578360400151805190602001208282815181106115c8576115c861283b565b602002602001015180519060200120036115e757600192505050610394565b6001016115a1565b5f5f838060200190518101906116059190612964565b90505f5b815181101561157c578360400151805190602001208282815181106116305761163061283b565b6020026020010151805190602001200361164e575f92505050610394565b600101611609565b60608060608367ffffffffffffffff81111561167457611674612211565b60405190808252806020026020018201604052801561169d578160200160208202803683370190505b5092508367ffffffffffffffff8111156116b9576116b9612211565b6040519080825280602002602001820160405280156116e2578160200160208202803683370190505b5091508367ffffffffffffffff8111156116fe576116fe612211565b60405190808252806020026020018201604052801561173157816020015b606081526020019060019003908161171c5790505b50929491935050565b604080513360208083019190915261ffff8716828401528251808303840181526060909201909252805191012061177484600160ff611af8565b6040805160808101825285815260208082018690528183018590523360608301525f8481529081905291909120815181906117af90826129e1565b50602082015160018201906117c490826129e1565b50604082015160028201906117d990826129e1565b50606091909101516003909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560405161ffff86169033907ff02558935ef4a7a4dd0455b94fd00eb1bcd7d048c0ab648841d3985a31a135c29061184c90889088908890612a9c565b60405180910390a35050505050565b5f5f611867835f6118ee565b90505f611873426118a5565b90508181101561188657505f9392505050565b6127106118938383612675565b61189d9190612ae8565b949350505050565b5f5f5f5f6118b285611b9f565b91945092509050806118c5836064612605565b6118d185612710612605565b6118db919061284f565b6118e5919061284f565b95945050505050565b81515f9083906006146119435760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204d525a2064617465206c656e677468000000000000000000604482015260640161064a565b5f6119cc825f815181106119595761195961283b565b602001015160f81c60f81b836001815181106119775761197761283b565b016020908101516040517fff0000000000000000000000000000000000000000000000000000000000000093841692810192909252919091166021820152602201604051602081830303815290604052611d4a565b90505f611a03836002815181106119e5576119e561283b565b602001015160f81c60f81b846003815181106119775761197761283b565b90505f611a3a84600481518110611a1c57611a1c61283b565b602001015160f81c60f81b856005815181106119775761197761283b565b90505f611a46426118a5565b90505f6064611a5761271084612ae8565b611a619190612afb565b90505f8815611a9b57611a7582603261284f565b861015611a8f57611a88866107d061284f565b9050611abe565b611a888661076c61284f565b81861115611aaf57611a888661076c61284f565b611abb866107d061284f565b90505b83611aca866064612605565b611ad683612710612605565b611ae0919061284f565b611aea919061284f565b9a9950505050505050505050565b8183511015611b495760405162461bcd60e51b815260206004820152601060248201527f537472696e6720746f6f2073686f727400000000000000000000000000000000604482015260640161064a565b8083511115611b9a5760405162461bcd60e51b815260206004820152600f60248201527f537472696e6720746f6f206c6f6e670000000000000000000000000000000000604482015260640161064a565b505050565b5f808080611bb06201518086612ae8565b611bbd90620afa6c61284f565b90505f611bcd62023ab183612ae8565b90505f611bdd8262023ab1612605565b611be79084612675565b90505f61016d611bfa62023ab084612ae8565b611c06618eac85612ae8565b611c126105b486612ae8565b611c1c9086612675565b611c26919061284f565b611c309190612675565b611c3a9190612ae8565b90505f611c4984610190612605565b611c53908361284f565b90505f611c61606484612ae8565b611c6c600485612ae8565b611c788561016d612605565b611c82919061284f565b611c8c9190612675565b611c969085612675565b90505f6099611ca6836005612605565b611cb190600261284f565b611cbb9190612ae8565b90506005611cca826099612605565b611cd590600261284f565b611cdf9190612ae8565b611ce99083612675565b611cf490600161284f565b9750600a8110611d0e57611d09600982612675565b611d19565b611d1981600361284f565b98506002891115611d2a575f611d2d565b60015b611d3a9060ff168461284f565b9950505050505050509193909250565b5f81815b8151811015611dbd575f828281518110611d6a57611d6a61283b565b016020015160f81c905060308110801590611d89575060398160ff1611155b15611db457611d99603082612b0e565b60ff16611da785600a612605565b611db1919061284f565b93505b50600101611d4e565b5050919050565b6040518061016001604052805f15158152602001606081526020015f6001600160a01b031681526020015f81526020015f151581526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001606081526020015f6001600160a01b031681526020015f81526020015f15158152602001611e8d60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b905290565b5f60208284031215611ea2575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f611ee96080830187611ea9565b8281036020840152611efb8187611ea9565b90508281036040840152611f0f8186611ea9565b9150506001600160a01b038316606083015295945050505050565b6001600160e01b031981168114611f3f575f5ffd5b50565b5f60208284031215611f52575f5ffd5b8135611f5d81611f2a565b9392505050565b6001600160a01b0381168114611f3f575f5ffd5b803561ffff81168114611f89575f5ffd5b919050565b5f5f60408385031215611f9f575f5ffd5b8235611faa81611f64565b9150611fb860208401611f78565b90509250929050565b602081525f611f5d6020830184611ea9565b5f5f83601f840112611fe3575f5ffd5b50813567ffffffffffffffff811115611ffa575f5ffd5b602083019150836020828501011115612011575f5ffd5b9250929050565b5f5f5f5f5f6080868803121561202c575f5ffd5b853561203781611f64565b945061204560208701611f78565b9350604086013567ffffffffffffffff811115612060575f5ffd5b61206c88828901611fd3565b96999598509660600135949350505050565b5f5f5f5f5f5f60a08789031215612093575f5ffd5b863561209e81611f64565b955060208701356120ae81611f64565b94506120bc60408801611f78565b9350606087013567ffffffffffffffff8111156120d7575f5ffd5b6120e389828a01611fd3565b979a9699509497949695608090950135949350505050565b5f8151808452602084019350602083015f5b828110156121345781516001600160a01b031686526020958601959091019060010161210d565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612134578151865260209586019590910190600101612150565b5f82825180855260208501945060208160051b830101602085015f5b838110156121bc57601f198584030188526121a6838351611ea9565b602098890198909350919091019060010161218a565b50909695505050505050565b848152608060208201525f6121e060808301866120fb565b82810360408401526121f2818661213e565b90508281036060840152612206818561216e565b979650505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051610100810167ffffffffffffffff8111828210171561224957612249612211565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561227857612278612211565b604052919050565b5f67ffffffffffffffff82111561229957612299612211565b50601f01601f191660200190565b5f6122b96122b484612280565b61224f565b90508281528383830111156122cc575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126122f1575f5ffd5b611f5d838335602085016122a7565b5f5f5f5f60808587031215612313575f5ffd5b61231c85611f78565b9350602085013567ffffffffffffffff811115612337575f5ffd5b8501601f81018713612347575f5ffd5b612356878235602084016122a7565b935050604085013567ffffffffffffffff811115612372575f5ffd5b61237e878288016122e2565b925050606085013567ffffffffffffffff81111561239a575f5ffd5b6123a6878288016122e2565b91505092959194509250565b600181811c908216806123c657607f821691505b6020821081036123e457634e487b7160e01b5f52602260045260245ffd5b50919050565b61ffff8616815284602082015260a060408201525f61240c60a08301866120fb565b828103606084015261241e818661213e565b90508281036080840152612432818561216e565b98975050505050505050565b5f61244b6122b484612280565b905082815283838301111561245e575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112612483575f5ffd5b611f5d8383516020850161243e565b5f82601f8301126124a1575f5ffd5b815167ffffffffffffffff8111156124bb576124bb612211565b8060051b6124cb6020820161224f565b918252602081850181019290810190868411156124e6575f5ffd5b6020860192505b8383101561120e57825167ffffffffffffffff81111561250b575f5ffd5b61251a886020838a0101612474565b835250602092830192909101906124ed565b80518015158114611f89575f5ffd5b5f5f5f5f5f5f60c08789031215612550575f5ffd5b865167ffffffffffffffff811115612566575f5ffd5b61257289828a01612492565b965050602087015161258381611f64565b604088015190955093506125996060880161252c565b925060808701516125a981611f2a565b60a088015190925067ffffffffffffffff8111156125c5575f5ffd5b8701601f810189136125d5575f5ffd5b6125e48982516020840161243e565b9150509295509295509295565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610394576103946125f1565b5f5f8585111561262a575f5ffd5b83861115612636575f5ffd5b5050820193919092039150565b5f60208284031215612653575f5ffd5b8135611f5d81611f64565b5f6020828403121561266e575f5ffd5b5051919050565b81810381811115610394576103946125f1565b5f60208284031215612698575f5ffd5b611f5d8261252c565b5f602082840312156126b1575f5ffd5b815167ffffffffffffffff8111156126c7575f5ffd5b820161010081850312156126d9575f5ffd5b6126e1612225565b815167ffffffffffffffff8111156126f7575f5ffd5b61270386828501612474565b825250602082015167ffffffffffffffff81111561271f575f5ffd5b61272b86828501612474565b602083015250604082015167ffffffffffffffff81111561274a575f5ffd5b61275686828501612474565b604083015250606082015167ffffffffffffffff811115612775575f5ffd5b61278186828501612474565b606083015250608082015167ffffffffffffffff8111156127a0575f5ffd5b6127ac86828501612474565b60808301525060a082015167ffffffffffffffff8111156127cb575f5ffd5b6127d786828501612474565b60a08301525060c082015167ffffffffffffffff8111156127f6575f5ffd5b61280286828501612474565b60c08301525060e082015167ffffffffffffffff811115612821575f5ffd5b61282d86828501612474565b60e083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610394576103946125f1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156128b957603f198786030184526128a4858351611ea9565b94506020938401939190910190600101612888565b50929695505050505050565b61ffff84168152606060208201525f6128e16060830185611ea9565b9050826040830152949350505050565b805160ff81168114611f89575f5ffd5b5f60208284031215612911575f5ffd5b611f5d826128f1565b5f5f6040838503121561292b575f5ffd5b612934836128f1565b9150611fb8602084016128f1565b5f5f60408385031215612953575f5ffd5b505080516020909101519092909150565b5f60208284031215612974575f5ffd5b815167ffffffffffffffff81111561298a575f5ffd5b61189d84828501612492565b601f821115611b9a57805f5260205f20601f840160051c810160208510156129bb5750805b601f840160051c820191505b818110156129da575f81556001016129c7565b5050505050565b815167ffffffffffffffff8111156129fb576129fb612211565b612a0f81612a0984546123b2565b84612996565b6020601f821160018114612a41575f8315612a2a5750848201515b5f19600385901b1c1916600184901b1784556129da565b5f84815260208120601f198516915b82811015612a705787850151825560209485019460019092019101612a50565b5084821015612a8d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f612aae6060830186611ea9565b8281036020840152612ac08186611ea9565b9050828103604084015261120e8185611ea9565b634e487b7160e01b5f52601260045260245ffd5b5f82612af657612af6612ad4565b500490565b5f82612b0957612b09612ad4565b500690565b60ff8281168282160390811115610394576103946125f156fea2646970667358221220fb879d216f8d27b5c35b0b3afe4889ba15ee5c48517e4d5aaffa5ab79841813364736f6c634300081e0033","sourceMap":"783:17819:135:-:0;;;1575:536;;;;;;;;;;1599:25;1627:431;;;;;;;:::i;:::-;;;;;;;;;;;;;1599:459;;2073:31;2091:12;2073:31;;;;;;:::i;:::-;;;;;;;;1589:522;783:17819;;532:1514:187;1239:3;1228:9;1221:22;1280:2;1274:3;1263:9;1259:19;1252:31;1320:22;1314:3;1303:9;1299:19;1292:51;1381:3;1374:4;1363:9;1359:20;1352:33;1422:2;1416:3;1405:9;1401:19;1394:31;-1:-1:-1;;;1456:3:187;1445:9;1441:19;1434:47;1517:3;1512:2;1501:9;1497:18;1490:31;1202:4;1556:3;1545:9;1541:19;1580:1;1602:2;1597:3;1590:15;1637:27;1630:4;1625:3;1621:14;1614:51;1690:2;1685:3;1681:12;1674:19;;1738:9;1733:3;1729:19;1724:2;1713:9;1709:18;1702:47;1772:34;1802:3;91:2;79:15;;126:24;119:4;110:14;;103:48;176:2;167:12;;14:171;1772:34;1843:22;;;1837:3;1822:19;;1815:51;267:2;255:15;;302:25;295:4;286:14;;279:49;1758:48;-1:-1:-1;;353:2:187;344:12;;1963:22;;;1957:3;1942:19;;1935:51;444:2;432:15;;-1:-1:-1;;;472:4:187;463:14;;456:37;1875:51;-1:-1:-1;518:2:187;509:12;;1995:45;532:1514;-1:-1:-1;;;532:1514:187:o;2051:416::-;2198:2;2187:9;2180:21;2161:4;2230:6;2224:13;2273:6;2268:2;2257:9;2253:18;2246:34;2332:6;2327:2;2319:6;2315:15;2310:2;2299:9;2295:18;2289:50;2388:1;2383:2;2374:6;2363:9;2359:22;2355:31;2348:42;2458:2;2451;2447:7;2442:2;2434:6;2430:15;2426:29;2415:9;2411:45;2407:54;2399:62;;;2051:416;;;;:::o;:::-;783:17819:135;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061009f575f3560e01c806354fd4d5011610072578063b1f50f8911610058578063b1f50f8914610167578063c0d27aad1461017c578063d8a941f41461018f575f5ffd5b806354fd4d5014610125578063552cb37214610144575f5ffd5b806301e07972146100a357806301ffc9a7146100cf5780630d157721146100f25780634d516f0e14610112575b5f5ffd5b6100b66100b1366004611e92565b6101a2565b6040516100c69493929190611ed7565b60405180910390f35b6100e26100dd366004611f42565b610364565b60405190151581526020016100c6565b610105610100366004611f8e565b61039a565b6040516100c69190611fc1565b6100e2610120366004612018565b61046b565b604080515f8152600160208201526008918101919091526060016100c6565b61015761015236600461207e565b610558565b6040516100c694939291906121c8565b61017a610175366004612300565b610ee2565b005b61010561018a366004611f8e565b61102d565b61010561019d366004611f8e565b61107d565b5f602081905290815260409020805481906101bc906123b2565b80601f01602080910402602001604051908101604052809291908181526020018280546101e8906123b2565b80156102335780601f1061020a57610100808354040283529160200191610233565b820191905f5260205f20905b81548152906001019060200180831161021657829003601f168201915b505050505090806001018054610248906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610274906123b2565b80156102bf5780601f10610296576101008083540402835291602001916102bf565b820191905f5260205f20905b8154815290600101906020018083116102a257829003601f168201915b5050505050908060020180546102d4906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610300906123b2565b801561034b5780601f106103225761010080835404028352916020019161034b565b820191905f5260205f20905b81548152906001019060200180831161032e57829003601f168201915b505050600390930154919250506001600160a01b031684565b5f6001600160e01b0319821663e81bd2dd60e01b148061039457506301ffc9a760e01b6001600160e01b03198316145b92915050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912080546103e7906123b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610413906123b2565b801561045e5780601f106104355761010080835404028352916020019161045e565b820191905f5260205f20905b81548152906001019060200180831161044157829003601f168201915b5050505050905092915050565b6040805133602080830182905261ffff881683850152835180840385018152606090930184528251928101929092205f81815292839052928220600301549192916001600160a01b0316146104d35760405163e317a3d160e01b815260040160405180910390fd5b5f5f5f5f6104e58b338c8c8c8c610558565b604051630de6a60160e01b8152939750919550935091503390630de6a6019061051a908d9088908890889088906004016123ea565b5f604051808303815f87803b158015610531575f5ffd5b505af1158015610543573d5f5f3e3d5ffd5b5060019e9d5050505050505050505050505050565b5f6060806060610566611dc4565b6105708a8a61102d565b806020019051810190610583919061253b565b60c08701526001600160e01b03191660a08601521515608085015260608401526001600160a01b0316604083015260208083018290529051899189916105c891612605565b6105d392829061261c565b8101906105e09190612643565b6001600160a01b0390811660e08301526040820151166106535760405162461bcd60e51b8152602060048201526024808201527f5a4b50617373706f72743a20496e76616c6964207265676973747279206164646044820152637265737360e01b60648201526084015b60405180910390fd5b60e08101516001600160a01b03166106d35760405162461bcd60e51b815260206004820152603560248201527f5a4b50617373706f72743a20496e76616c6964207a65726f206164647265737360448201527f20666f72206163636f756e7420746f20636865636b0000000000000000000000606482015260840161064a565b8a6001600160a01b03168160e001516001600160a01b03161461075e5760405162461bcd60e51b815260206004820152602e60248201527f5a4b50617373706f72743a2043616c6c6572206973206e6f742074686520616360448201527f636f756e7420746f20636865636b000000000000000000000000000000000000606482015260840161064a565b5f816040015190506107a78a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92506110cd915050565b60e0830151604051635941514d60e11b81526001600160a01b03918216600482015291975082169063b282a29a90602401602060405180830381865afa1580156107f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610817919061265e565b610100830181905260608301519061082f9042612675565b1061087c5760405162461bcd60e51b815260206004820152600e60248201527f50726f6f66206973207374616c65000000000000000000000000000000000000604482015260640161064a565b8160800151156109405760e082015160405163306b618f60e21b81526001600160a01b0391821660048201529082169063c1ad863c90602401602060405180830381865afa1580156108d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f49190612688565b6109405760405162461bcd60e51b815260206004820152601d60248201527f466163654d6174636820726571756972656d656e74206e6f74206d6574000000604482015260640161064a565b60e0820151604051633eca794d60e01b81526001600160a01b03918216600482015290821690633eca794d906024015f60405180830381865afa158015610989573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109b091908101906126a1565b61014083015260a08201516001600160e01b03191663d4d6de8760e01b016109f2576109e58260c00151836101400151611103565b1515610120830152610e15565b60a08201516001600160e01b0319166321f06bd160e21b01610a21576109e58260c00151836101400151611135565b60a08201516001600160e01b031916631491889760e31b01610a50576109e58260c00151836101400151611168565b60a08201516001600160e01b0319166303617ca560e61b01610a7f576109e58260c0015183610140015161119a565b60a08201516001600160e01b031916630e85aea760e11b01610aae576109e58260c001518361014001516111cd565b60a08201516001600160e01b03191663210fe7d760e11b01610add576109e58260c00151836101400151611218565b60a08201516001600160e01b0319166331582e7d60e11b01610b0c576109e58260c0015183610140015161124a565b60a08201516001600160e01b03191663a21e3f7960e01b01610b3b576109e58260c00151836101400151611279565b60a08201516001600160e01b0319166351559d7b60e01b01610b6a576109e58260c001518361014001516112a8565b60a08201516001600160e01b0319166312f01d8d60e31b01610b99576109e58260c001518361014001516112d7565b60a08201516001600160e01b03191663df399da760e01b01610bc8576109e58260c00151836101400151611306565b60a08201516001600160e01b031916638bd9b20b60e01b01610bf7576109e58260c00151836101400151611359565b60a08201516001600160e01b03191663d2e2745f60e01b01610c26576109e58260c00151836101400151611388565b60a08201516001600160e01b031916632523ed0760e11b01610c55576109e58260c001518361014001516113b8565b60a08201516001600160e01b031916630c5e0e2760e01b01610c84576109e58260c001518361014001516113e8565b60a08201516001600160e01b031916636191efaf60e11b01610cb3576109e58260c00151836101400151611418565b60a08201516001600160e01b0319166372ab993f60e11b01610ce2576109e58260c00151836101400151611448565b60a08201516001600160e01b031916635cbf449760e11b01610d11576109e58260c00151836101400151611473565b60a08201516001600160e01b031916638519981760e01b01610d40576109e58260c001518361014001516114a3565b60a08201516001600160e01b03191663c91aa4f960e01b01610d6f576109e58260c00151836101400151611515565b60a08201516001600160e01b03191663d3a2e4bb60e01b01610d9e576109e58260c00151836101400151611587565b60a08201516001600160e01b031916631b0093df60e01b01610dcd576109e58260c001518361014001516115ef565b60405162461bcd60e51b815260206004820152601d60248201527f556e737570706f727465642066756e6374696f6e2073656c6563746f72000000604482015260640161064a565b816101200151610e755760405162461bcd60e51b815260206004820152602560248201527f5a4b50617373706f72743a2050726f6f6620766572696669636174696f6e2066604482015264185a5b195960da1b606482015260840161064a565b610e7f6001611656565b6040519297509095509350610ea7908d906020016001600160a01b0391909116815260200190565b604051602081830303815290604052835f81518110610ec857610ec861283b565b602002602001018190525050509650965096509692505050565b5f81806020019051810190610ef7919061253b565b505050505090505f81516001610f0d919061284f565b67ffffffffffffffff811115610f2557610f25612211565b604051908082528060200260200182016040528015610f5857816020015b6060815260200190600190039081610f435790505b5090505f5b8251811015610fa557828181518110610f7857610f7861283b565b6020026020010151828281518110610f9257610f9261283b565b6020908102919091010152600101610f5d565b506040518060400160405280601681526020017f61646472657373204163636f756e74546f436865636b0000000000000000000081525081835181518110610fef57610fef61283b565b60200260200101819052506110258686836040516020016110109190612862565b6040516020818303038152906040528661173a565b505050505050565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060020180546103e7906123b2565b604080516001600160a01b03841660208083019190915261ffff841682840152825180830384018152606092830184528051908201205f908152908190529190912060010180546103e7906123b2565b5f8383836040516020016110e3939291906128c5565b60408051601f198184030181529190528051602090910120949350505050565b5f5f838060200190518101906111199190612901565b90508060ff1661112c846080015161185b565b11949350505050565b5f5f8380602001905181019061114b9190612901565b90508060ff1661115e846080015161185b565b1015949350505050565b5f5f8380602001905181019061117e9190612901565b90508060ff16611191846080015161185b565b10949350505050565b5f5f838060200190518101906111b09190612901565b90508060ff166111c3846080015161185b565b1115949350505050565b5f5f5f848060200190518101906111e4919061291a565b915091505f6111f6856080015161185b565b90508260ff16811015801561120e57508160ff168111155b9695505050505050565b5f5f8380602001905181019061122e9190612901565b90508060ff16611241846080015161185b565b14949350505050565b5f5f83806020019051810190611260919061265e565b905061126b816118a5565b61112c84608001515f6118ee565b5f5f8380602001905181019061128f919061265e565b905061129a816118a5565b61115e84608001515f6118ee565b5f5f838060200190518101906112be919061265e565b90506112c9816118a5565b61119184608001515f6118ee565b5f5f838060200190518101906112ed919061265e565b90506112f8816118a5565b6111c384608001515f6118ee565b5f5f5f8480602001905181019061131d9190612942565b915091505f61133085608001515f6118ee565b905061133b836118a5565b811015801561120e575061134e826118a5565b101595945050505050565b5f5f8380602001905181019061136f919061265e565b905061137a816118a5565b61124184608001515f6118ee565b5f5f8380602001905181019061139e919061265e565b90506113a9816118a5565b61112c8460a0015160016118ee565b5f5f838060200190518101906113ce919061265e565b90506113d9816118a5565b61115e8460a0015160016118ee565b5f5f838060200190518101906113fe919061265e565b9050611409816118a5565b6111918460a0015160016118ee565b5f5f8380602001905181019061142e919061265e565b9050611439816118a5565b6111c38460a0015160016118ee565b5f5f5f8480602001905181019061145f9190612942565b915091505f6113308560a0015160016118ee565b5f5f83806020019051810190611489919061265e565b9050611494816118a5565b6112418460a0015160016118ee565b5f5f838060200190518101906114b99190612964565b90505f5b815181101561150b578360200151805190602001208282815181106114e4576114e461283b565b6020026020010151805190602001200361150357600192505050610394565b6001016114bd565b505f949350505050565b5f5f8380602001905181019061152b9190612964565b90505f5b815181101561157c578360200151805190602001208282815181106115565761155661283b565b60200260200101518051906020012003611574575f92505050610394565b60010161152f565b506001949350505050565b5f5f8380602001905181019061159d9190612964565b90505f5b815181101561150b578360400151805190602001208282815181106115c8576115c861283b565b602002602001015180519060200120036115e757600192505050610394565b6001016115a1565b5f5f838060200190518101906116059190612964565b90505f5b815181101561157c578360400151805190602001208282815181106116305761163061283b565b6020026020010151805190602001200361164e575f92505050610394565b600101611609565b60608060608367ffffffffffffffff81111561167457611674612211565b60405190808252806020026020018201604052801561169d578160200160208202803683370190505b5092508367ffffffffffffffff8111156116b9576116b9612211565b6040519080825280602002602001820160405280156116e2578160200160208202803683370190505b5091508367ffffffffffffffff8111156116fe576116fe612211565b60405190808252806020026020018201604052801561173157816020015b606081526020019060019003908161171c5790505b50929491935050565b604080513360208083019190915261ffff8716828401528251808303840181526060909201909252805191012061177484600160ff611af8565b6040805160808101825285815260208082018690528183018590523360608301525f8481529081905291909120815181906117af90826129e1565b50602082015160018201906117c490826129e1565b50604082015160028201906117d990826129e1565b50606091909101516003909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560405161ffff86169033907ff02558935ef4a7a4dd0455b94fd00eb1bcd7d048c0ab648841d3985a31a135c29061184c90889088908890612a9c565b60405180910390a35050505050565b5f5f611867835f6118ee565b90505f611873426118a5565b90508181101561188657505f9392505050565b6127106118938383612675565b61189d9190612ae8565b949350505050565b5f5f5f5f6118b285611b9f565b91945092509050806118c5836064612605565b6118d185612710612605565b6118db919061284f565b6118e5919061284f565b95945050505050565b81515f9083906006146119435760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964204d525a2064617465206c656e677468000000000000000000604482015260640161064a565b5f6119cc825f815181106119595761195961283b565b602001015160f81c60f81b836001815181106119775761197761283b565b016020908101516040517fff0000000000000000000000000000000000000000000000000000000000000093841692810192909252919091166021820152602201604051602081830303815290604052611d4a565b90505f611a03836002815181106119e5576119e561283b565b602001015160f81c60f81b846003815181106119775761197761283b565b90505f611a3a84600481518110611a1c57611a1c61283b565b602001015160f81c60f81b856005815181106119775761197761283b565b90505f611a46426118a5565b90505f6064611a5761271084612ae8565b611a619190612afb565b90505f8815611a9b57611a7582603261284f565b861015611a8f57611a88866107d061284f565b9050611abe565b611a888661076c61284f565b81861115611aaf57611a888661076c61284f565b611abb866107d061284f565b90505b83611aca866064612605565b611ad683612710612605565b611ae0919061284f565b611aea919061284f565b9a9950505050505050505050565b8183511015611b495760405162461bcd60e51b815260206004820152601060248201527f537472696e6720746f6f2073686f727400000000000000000000000000000000604482015260640161064a565b8083511115611b9a5760405162461bcd60e51b815260206004820152600f60248201527f537472696e6720746f6f206c6f6e670000000000000000000000000000000000604482015260640161064a565b505050565b5f808080611bb06201518086612ae8565b611bbd90620afa6c61284f565b90505f611bcd62023ab183612ae8565b90505f611bdd8262023ab1612605565b611be79084612675565b90505f61016d611bfa62023ab084612ae8565b611c06618eac85612ae8565b611c126105b486612ae8565b611c1c9086612675565b611c26919061284f565b611c309190612675565b611c3a9190612ae8565b90505f611c4984610190612605565b611c53908361284f565b90505f611c61606484612ae8565b611c6c600485612ae8565b611c788561016d612605565b611c82919061284f565b611c8c9190612675565b611c969085612675565b90505f6099611ca6836005612605565b611cb190600261284f565b611cbb9190612ae8565b90506005611cca826099612605565b611cd590600261284f565b611cdf9190612ae8565b611ce99083612675565b611cf490600161284f565b9750600a8110611d0e57611d09600982612675565b611d19565b611d1981600361284f565b98506002891115611d2a575f611d2d565b60015b611d3a9060ff168461284f565b9950505050505050509193909250565b5f81815b8151811015611dbd575f828281518110611d6a57611d6a61283b565b016020015160f81c905060308110801590611d89575060398160ff1611155b15611db457611d99603082612b0e565b60ff16611da785600a612605565b611db1919061284f565b93505b50600101611d4e565b5050919050565b6040518061016001604052805f15158152602001606081526020015f6001600160a01b031681526020015f81526020015f151581526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001606081526020015f6001600160a01b031681526020015f81526020015f15158152602001611e8d60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b905290565b5f60208284031215611ea2575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f611ee96080830187611ea9565b8281036020840152611efb8187611ea9565b90508281036040840152611f0f8186611ea9565b9150506001600160a01b038316606083015295945050505050565b6001600160e01b031981168114611f3f575f5ffd5b50565b5f60208284031215611f52575f5ffd5b8135611f5d81611f2a565b9392505050565b6001600160a01b0381168114611f3f575f5ffd5b803561ffff81168114611f89575f5ffd5b919050565b5f5f60408385031215611f9f575f5ffd5b8235611faa81611f64565b9150611fb860208401611f78565b90509250929050565b602081525f611f5d6020830184611ea9565b5f5f83601f840112611fe3575f5ffd5b50813567ffffffffffffffff811115611ffa575f5ffd5b602083019150836020828501011115612011575f5ffd5b9250929050565b5f5f5f5f5f6080868803121561202c575f5ffd5b853561203781611f64565b945061204560208701611f78565b9350604086013567ffffffffffffffff811115612060575f5ffd5b61206c88828901611fd3565b96999598509660600135949350505050565b5f5f5f5f5f5f60a08789031215612093575f5ffd5b863561209e81611f64565b955060208701356120ae81611f64565b94506120bc60408801611f78565b9350606087013567ffffffffffffffff8111156120d7575f5ffd5b6120e389828a01611fd3565b979a9699509497949695608090950135949350505050565b5f8151808452602084019350602083015f5b828110156121345781516001600160a01b031686526020958601959091019060010161210d565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612134578151865260209586019590910190600101612150565b5f82825180855260208501945060208160051b830101602085015f5b838110156121bc57601f198584030188526121a6838351611ea9565b602098890198909350919091019060010161218a565b50909695505050505050565b848152608060208201525f6121e060808301866120fb565b82810360408401526121f2818661213e565b90508281036060840152612206818561216e565b979650505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051610100810167ffffffffffffffff8111828210171561224957612249612211565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561227857612278612211565b604052919050565b5f67ffffffffffffffff82111561229957612299612211565b50601f01601f191660200190565b5f6122b96122b484612280565b61224f565b90508281528383830111156122cc575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126122f1575f5ffd5b611f5d838335602085016122a7565b5f5f5f5f60808587031215612313575f5ffd5b61231c85611f78565b9350602085013567ffffffffffffffff811115612337575f5ffd5b8501601f81018713612347575f5ffd5b612356878235602084016122a7565b935050604085013567ffffffffffffffff811115612372575f5ffd5b61237e878288016122e2565b925050606085013567ffffffffffffffff81111561239a575f5ffd5b6123a6878288016122e2565b91505092959194509250565b600181811c908216806123c657607f821691505b6020821081036123e457634e487b7160e01b5f52602260045260245ffd5b50919050565b61ffff8616815284602082015260a060408201525f61240c60a08301866120fb565b828103606084015261241e818661213e565b90508281036080840152612432818561216e565b98975050505050505050565b5f61244b6122b484612280565b905082815283838301111561245e575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112612483575f5ffd5b611f5d8383516020850161243e565b5f82601f8301126124a1575f5ffd5b815167ffffffffffffffff8111156124bb576124bb612211565b8060051b6124cb6020820161224f565b918252602081850181019290810190868411156124e6575f5ffd5b6020860192505b8383101561120e57825167ffffffffffffffff81111561250b575f5ffd5b61251a886020838a0101612474565b835250602092830192909101906124ed565b80518015158114611f89575f5ffd5b5f5f5f5f5f5f60c08789031215612550575f5ffd5b865167ffffffffffffffff811115612566575f5ffd5b61257289828a01612492565b965050602087015161258381611f64565b604088015190955093506125996060880161252c565b925060808701516125a981611f2a565b60a088015190925067ffffffffffffffff8111156125c5575f5ffd5b8701601f810189136125d5575f5ffd5b6125e48982516020840161243e565b9150509295509295509295565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610394576103946125f1565b5f5f8585111561262a575f5ffd5b83861115612636575f5ffd5b5050820193919092039150565b5f60208284031215612653575f5ffd5b8135611f5d81611f64565b5f6020828403121561266e575f5ffd5b5051919050565b81810381811115610394576103946125f1565b5f60208284031215612698575f5ffd5b611f5d8261252c565b5f602082840312156126b1575f5ffd5b815167ffffffffffffffff8111156126c7575f5ffd5b820161010081850312156126d9575f5ffd5b6126e1612225565b815167ffffffffffffffff8111156126f7575f5ffd5b61270386828501612474565b825250602082015167ffffffffffffffff81111561271f575f5ffd5b61272b86828501612474565b602083015250604082015167ffffffffffffffff81111561274a575f5ffd5b61275686828501612474565b604083015250606082015167ffffffffffffffff811115612775575f5ffd5b61278186828501612474565b606083015250608082015167ffffffffffffffff8111156127a0575f5ffd5b6127ac86828501612474565b60808301525060a082015167ffffffffffffffff8111156127cb575f5ffd5b6127d786828501612474565b60a08301525060c082015167ffffffffffffffff8111156127f6575f5ffd5b61280286828501612474565b60c08301525060e082015167ffffffffffffffff811115612821575f5ffd5b61282d86828501612474565b60e083015250949350505050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610394576103946125f1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156128b957603f198786030184526128a4858351611ea9565b94506020938401939190910190600101612888565b50929695505050505050565b61ffff84168152606060208201525f6128e16060830185611ea9565b9050826040830152949350505050565b805160ff81168114611f89575f5ffd5b5f60208284031215612911575f5ffd5b611f5d826128f1565b5f5f6040838503121561292b575f5ffd5b612934836128f1565b9150611fb8602084016128f1565b5f5f60408385031215612953575f5ffd5b505080516020909101519092909150565b5f60208284031215612974575f5ffd5b815167ffffffffffffffff81111561298a575f5ffd5b61189d84828501612492565b601f821115611b9a57805f5260205f20601f840160051c810160208510156129bb5750805b601f840160051c820191505b818110156129da575f81556001016129c7565b5050505050565b815167ffffffffffffffff8111156129fb576129fb612211565b612a0f81612a0984546123b2565b84612996565b6020601f821160018114612a41575f8315612a2a5750848201515b5f19600385901b1c1916600184901b1784556129da565b5f84815260208120601f198516915b82811015612a705787850151825560209485019460019092019101612a50565b5084821015612a8d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f612aae6060830186611ea9565b8281036020840152612ac08186611ea9565b9050828103604084015261120e8185611ea9565b634e487b7160e01b5f52601260045260245ffd5b5f82612af657612af6612ad4565b500490565b5f82612b0957612b09612ad4565b500690565b60ff8281168282160390811115610394576103946125f156fea2646970667358221220fb879d216f8d27b5c35b0b3afe4889ba15ee5c48517e4d5aaffa5ab79841813364736f6c634300081e0033","sourceMap":"783:17819:135:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1889:59:112;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6406:213;;;;;;:::i;:::-;;:::i;:::-;;;1713:14:187;;1706:22;1688:41;;1676:2;1661:18;6406:213:112;1548:187:187;5157:211:112;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3222:756::-;;;;;;:::i;:::-;;:::i;5775:123::-;;;;5823:12;3902:38:187;;5886:1:112;3971:2:187;3956:18;;3949:47;5889:1:112;4012:18:187;;;4005:47;;;;3890:2;3875:18;5775:123:112;3706:352:187;2738:6158:135;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2117:587::-;;;;;;:::i;:::-;;:::i;:::-;;5586:183:112;;;;;;:::i;:::-;;:::i;5374:206::-;;;;;;:::i;:::-;;:::i;1889:59::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1889:59:112;;;;;;;-1:-1:-1;;;;;;;1889:59:112;;:::o;6406:213::-;6508:4;-1:-1:-1;;;;;;6531:41:112;;-1:-1:-1;;;6531:41:112;;:81;;-1:-1:-1;;;;;;;;;;829:40:84;;;6576:36:112;6524:88;6406:213;-1:-1:-1;;6406:213:112:o;5157:211::-;2202:25:182;;;-1:-1:-1;;;;;21505:55:187;;2202:25:182;;;;21487:74:187;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:182;;;;;;;;;5240:29:112;21460:18:187;;;2202:25:182;;2192:36;;;;;;-1:-1:-1;5288:57:112;;;;;;;;;;;5281:80;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:211;;;;:::o;3222:756::-;2202:25:182;;;3438:10:112;2202:25:182;;;;21487:74:187;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:182;;;;;;;;;21460:18:187;;;;2202:25:182;;2192:36;;;;;;;;;-1:-1:-1;3474:21:112;;;;;;;;;;:28;;;-1:-1:-1;;2192:36:182;-1:-1:-1;;;;;3474:28:112;:42;3470:92;;3539:12;;-1:-1:-1;;;3539:12:112;;;;;;;;;;;3470:92;3676:16;3694:24;3720:23;3745:24;3785:77;3799:6;3815:10;3828:9;3839:15;;3856:5;3785:13;:77::i;:::-;3873:76;;-1:-1:-1;;;3873:76:112;;3675:187;;-1:-1:-1;3675:187:112;;-1:-1:-1;3675:187:112;-1:-1:-1;3675:187:112;-1:-1:-1;3881:10:112;;3873:27;;:76;;3901:9;;3675:187;;;;;;;;3873:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3967:4:112;;3222:756;-1:-1:-1;;;;;;;;;;;;;;3222:756:112:o;2738:6158:135:-;2966:16;2984:24;3010:23;3035:24;3100:14;;:::i;:::-;3260:28;3270:6;3278:9;3260;:28::i;:::-;3249:91;;;;;;;;;;;;:::i;:::-;3224:9;;;3124:216;-1:-1:-1;;;;;;3124:216:135;3202:20;;;3124:216;;;3179:21;;;3124:216;3156:21;;;3124:216;-1:-1:-1;;;;;3124:216:135;3142:12;;;3124:216;3125:15;;;;3124:216;;;3519:22;;3503:15;;;;3519:27;;;:::i;:::-;3503:45;;;;;:::i;:::-;3492:68;;;;;;;:::i;:::-;-1:-1:-1;;;;;3471:89:135;;;:18;;;:89;3605:12;;;;:26;3601:78;;3633:46;;-1:-1:-1;;;3633:46:135;;14970:2:187;3633:46:135;;;14952:21:187;15009:2;14989:18;;;14982:30;15048:34;15028:18;;;15021:62;-1:-1:-1;;;15099:18:187;;;15092:34;15143:19;;3633:46:135;;;;;;;;3601:78;3693:18;;;;-1:-1:-1;;;;;3693:32:135;3689:101;;3727:63;;-1:-1:-1;;;3727:63:135;;15375:2:187;3727:63:135;;;15357:21:187;15414:2;15394:18;;;15387:30;15453:34;15433:18;;;15426:62;15524:23;15504:18;;;15497:51;15565:19;;3727:63:135;15173:417:187;3689:101:135;3826:6;-1:-1:-1;;;;;3804:28:135;:3;:18;;;-1:-1:-1;;;;;3804:28:135;;3800:90;;3834:56;;-1:-1:-1;;;3834:56:135;;15797:2:187;3834:56:135;;;15779:21:187;15836:2;15816:18;;;15809:30;15875:34;15855:18;;;15848:62;15946:16;15926:18;;;15919:44;15980:19;;3834:56:135;15595:410:187;3800:90:135;3901:34;3964:3;:12;;;3901:76;;3998:67;4031:9;4042:15;;3998:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4059:5:135;;-1:-1:-1;3998:32:135;;-1:-1:-1;;3998:67:135:i;:::-;4172:18;;;;4145:46;;-1:-1:-1;;;4145:46:135;;-1:-1:-1;;;;;16174:55:187;;;4145:46:135;;;16156:74:187;3987:78:135;;-1:-1:-1;4145:26:135;;;;;16129:18:187;;4145:46:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4124:18;;;:67;;;4248:21;;;;;4209:36;;:15;:36;:::i;:::-;:60;4201:87;;;;-1:-1:-1;;;4201:87:135;;16811:2:187;4201:87:135;;;16793:21:187;16850:2;16830:18;;;16823:30;16889:16;16869:18;;;16862:44;16923:18;;4201:87:135;16609:338:187;4201:87:135;4375:3;:21;;;4371:139;;;4446:18;;;;4420:45;;-1:-1:-1;;;4420:45:135;;-1:-1:-1;;;;;16174:55:187;;;4420:45:135;;;16156:74:187;4420:25:135;;;;;;16129:18:187;;4420:45:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4412:87;;;;-1:-1:-1;;;4412:87:135;;17361:2:187;4412:87:135;;;17343:21:187;17400:2;17380:18;;;17373:30;17439:31;17419:18;;;17412:59;17488:18;;4412:87:135;17159:353:187;4412:87:135;4600:18;;;;4578:41;;-1:-1:-1;;;4578:41:135;;-1:-1:-1;;;;;16174:55:187;;;4578:41:135;;;16156:74:187;4578:21:135;;;;;;16129:18:187;;4578:41:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4578:41:135;;;;;;;;;;;;:::i;:::-;4558:17;;;:61;4703:20;;;;-1:-1:-1;;;;;;4703:62:135;-1:-1:-1;;;4703:62:135;4699:3914;;4795:45;4811:3;:9;;;4822:3;:17;;;4795:15;:45::i;:::-;4781:59;;:11;;;:59;4699:3914;;;4861:20;;;;-1:-1:-1;;;;;;4861:69:135;-1:-1:-1;;;4861:69:135;4857:3756;;4960:52;4983:3;:9;;;4994:3;:17;;;4960:22;:52::i;4857:3756::-;5033:20;;;;-1:-1:-1;;;;;;5033:62:135;-1:-1:-1;;;5033:62:135;5029:3584;;5125:45;5141:3;:9;;;5152:3;:17;;;5125:15;:45::i;5029:3584::-;5191:20;;;;-1:-1:-1;;;;;;5191:69:135;-1:-1:-1;;;5191:69:135;5187:3426;;5290:52;5313:3;:9;;;5324:3;:17;;;5290:22;:52::i;5187:3426::-;5363:20;;;;-1:-1:-1;;;;;;5363:70:135;-1:-1:-1;;;5363:70:135;5359:3254;;5463:47;5481:3;:9;;;5492:3;:17;;;5463;:47::i;5359:3254::-;5531:20;;;;-1:-1:-1;;;;;;5531:62:135;-1:-1:-1;;;5531:62:135;5527:3086;;5623:45;5639:3;:9;;;5650:3;:17;;;5623:15;:45::i;5527:3086::-;5689:20;;;;-1:-1:-1;;;;;;5689:70:135;-1:-1:-1;;;5689:70:135;5685:2928;;5789:51;5811:3;:9;;;5822:3;:17;;;5789:21;:51::i;5685:2928::-;5861:20;;;;-1:-1:-1;;;;;;5861:77:135;-1:-1:-1;;;5861:77:135;5857:2756;;5968:58;5997:3;:9;;;6008:3;:17;;;5968:28;:58::i;5857:2756::-;6047:20;;;;-1:-1:-1;;;;;;6047:71:135;-1:-1:-1;;;6047:71:135;6043:2570;;6148:52;6171:3;:9;;;6182:3;:17;;;6148:22;:52::i;6043:2570::-;6221:20;;;;-1:-1:-1;;;;;;6221:78:135;-1:-1:-1;;;6221:78:135;6217:2396;;6329:59;6359:3;:9;;;6370:3;:17;;;6329:29;:59::i;6217:2396::-;6409:20;;;;-1:-1:-1;;;;;;6409:80:135;-1:-1:-1;;;6409:80:135;6405:2208;;6519:53;6543:3;:9;;;6554:3;:17;;;6519:23;:53::i;6405:2208::-;6593:20;;;;-1:-1:-1;;;;;;6593:70:135;-1:-1:-1;;;6593:70:135;6589:2024;;6693:51;6715:3;:9;;;6726:3;:17;;;6693:21;:51::i;6589:2024::-;6765:20;;;;-1:-1:-1;;;;;;6765:71:135;-1:-1:-1;;;6765:71:135;6761:1852;;6866:52;6889:3;:9;;;6900:3;:17;;;6866:22;:52::i;6761:1852::-;6939:20;;;;-1:-1:-1;;;;;;6939:78:135;-1:-1:-1;;;6939:78:135;6935:1678;;7047:59;7077:3;:9;;;7088:3;:17;;;7047:29;:59::i;6935:1678::-;7127:20;;;;-1:-1:-1;;;;;;7127:72:135;-1:-1:-1;;;7127:72:135;7123:1490;;7229:53;7253:3;:9;;;7264:3;:17;;;7229:23;:53::i;7123:1490::-;7303:20;;;;-1:-1:-1;;;;;;7303:79:135;-1:-1:-1;;;7303:79:135;7299:1314;;7412:60;7443:3;:9;;;7454:3;:17;;;7412:30;:60::i;7299:1314::-;7493:20;;;;-1:-1:-1;;;;;;7493:81:135;-1:-1:-1;;;7493:81:135;7489:1124;;7604:54;7629:3;:9;;;7640:3;:17;;;7604:24;:54::i;7489:1124::-;7679:20;;;;-1:-1:-1;;;;;;7679:71:135;-1:-1:-1;;;7679:71:135;7675:938;;7780:52;7803:3;:9;;;7814:3;:17;;;7780:22;:52::i;7675:938::-;7853:20;;;;-1:-1:-1;;;;;;7853:73:135;-1:-1:-1;;;7853:73:135;7849:764;;7956:53;7980:3;:9;;;7991:3;:17;;;7956:23;:53::i;7849:764::-;8030:20;;;;-1:-1:-1;;;;;;8030:74:135;-1:-1:-1;;;8030:74:135;8026:587;;8134:54;8159:3;:9;;;8170:3;:17;;;8134:24;:54::i;8026:587::-;8209:20;;;;-1:-1:-1;;;;;;8209:70:135;-1:-1:-1;;;8209:70:135;8205:408;;8309:50;8330:3;:9;;;8341:3;:17;;;8309:20;:50::i;8205:408::-;8380:20;;;;-1:-1:-1;;;;;;8380:71:135;-1:-1:-1;;;8380:71:135;8376:237;;8481:51;8503:3;:9;;;8514:3;:17;;;8481:21;:51::i;8376:237::-;8563:39;;-1:-1:-1;;;8563:39:135;;19704:2:187;8563:39:135;;;19686:21:187;19743:2;19723:18;;;19716:30;19782:31;19762:18;;;19755:59;19831:18;;8563:39:135;19502:353:187;8376:237:135;8628:3;:11;;;8623:90;;8655:47;;-1:-1:-1;;;8655:47:135;;20062:2:187;8655:47:135;;;20044:21:187;20101:2;20081:18;;;20074:30;20140:34;20120:18;;;20113:62;-1:-1:-1;;;20191:18:187;;;20184:35;20236:19;;8655:47:135;19860:401:187;8623:90:135;8754:37;8789:1;8754:34;:37::i;:::-;8816:18;;8723:68;;-1:-1:-1;8723:68:135;;-1:-1:-1;8723:68:135;-1:-1:-1;8816:18:135;;8827:6;;8816:18;;-1:-1:-1;;;;;16174:55:187;;;;16156:74;;16144:2;16129:18;;16010:226;8816:18:135;;;;;;;;;;;;;8801:9;8811:1;8801:12;;;;;;;;:::i;:::-;;;;;;:33;;;;8844:45;;2738:6158;;;;;;;;;;;:::o;2117:587::-;2271:23;2314:6;2303:69;;;;;;;;;;;;:::i;:::-;2270:102;;;;;;;2383:26;2425:7;:14;2442:1;2425:18;;;;:::i;:::-;2412:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2383:61;;2459:9;2454:92;2474:7;:14;2470:1;:18;2454:92;;;2525:7;2533:1;2525:10;;;;;;;;:::i;:::-;;;;;;;2509;2520:1;2509:13;;;;;;;;:::i;:::-;;;;;;;;;;:26;2490:3;;2454:92;;;;2555:53;;;;;;;;;;;;;;;;;:10;2566:7;:14;2555:26;;;;;;;;:::i;:::-;;;;;;:53;;;;2618:79;2642:5;2649:15;2677:10;2666:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;2690:6;2618:23;:79::i;:::-;2260:444;;2117:587;;;;:::o;5586:183:112:-;2202:25:182;;;-1:-1:-1;;;;;21505:55:187;;2202:25:182;;;;21487:74:187;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:182;;;;;;;;;5660:19:112;21460:18:187;;;2202:25:182;;2192:36;;;;;;-1:-1:-1;5698:57:112;;;;;;;;;;;:64;;5691:71;;;;;:::i;5374:206::-;2202:25:182;;;-1:-1:-1;;;;;21505:55:187;;2202:25:182;;;;21487:74:187;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:182;;;;;;;;;5461:24:112;21460:18:187;;;2202:25:182;;2192:36;;;;;;-1:-1:-1;5504:57:112;;;;;;;;;;;:69;;5497:76;;;;;:::i;1492:250:182:-;1627:16;1699:9;1710:15;1727:5;1688:45;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1688:45:182;;;;;;;;;1678:56;;1688:45;1678:56;;;;;1492:250;-1:-1:-1;;;;1492:250:182:o;9103:220:135:-;9198:4;9214:15;9243:5;9232:26;;;;;;;;;;;;:::i;:::-;9214:44;;9307:9;9275:41;;:29;9289:4;:14;;;9275:13;:29::i;:::-;:41;;9103:220;-1:-1:-1;;;;9103:220:135:o;9329:228::-;9431:4;9447:15;9476:5;9465:26;;;;;;;;;;;;:::i;:::-;9447:44;;9541:9;9508:42;;:29;9522:4;:14;;;9508:13;:29::i;:::-;:42;;;9329:228;-1:-1:-1;;;;9329:228:135:o;9563:220::-;9658:4;9674:15;9703:5;9692:26;;;;;;;;;;;;:::i;:::-;9674:44;;9767:9;9735:41;;:29;9749:4;:14;;;9735:13;:29::i;:::-;:41;;9563:220;-1:-1:-1;;;;9563:220:135:o;9789:228::-;9891:4;9907:15;9936:5;9925:26;;;;;;;;;;;;:::i;:::-;9907:44;;10001:9;9968:42;;:29;9982:4;:14;;;9968:13;:29::i;:::-;:42;;;9789:228;-1:-1:-1;;;;9789:228:135:o;10023:280::-;10120:4;10137:11;10150;10176:5;10165:33;;;;;;;;;;;;:::i;:::-;10136:62;;;;10208:11;10222:29;10236:4;:14;;;10222:13;:29::i;:::-;10208:43;;10275:5;10268:12;;:3;:12;;:28;;;;;10291:5;10284:12;;:3;:12;;10268:28;10261:35;10023:280;-1:-1:-1;;;;;;10023:280:135:o;10309:221::-;10404:4;10420:15;10449:5;10438:26;;;;;;;;;;;;:::i;:::-;10420:44;;10514:9;10481:42;;:29;10495:4;:14;;;10481:13;:29::i;:::-;:42;;10309:221;-1:-1:-1;;;;10309:221:135:o;10536:260::-;10637:4;10653:17;10684:5;10673:28;;;;;;;;;;;;:::i;:::-;10653:48;;10758:31;10779:9;10758:20;:31::i;:::-;10718:37;10733:4;:14;;;10749:5;10718:14;:37::i;10802:268::-;10910:4;10926:17;10957:5;10946:28;;;;;;;;;;;;:::i;:::-;10926:48;;11032:31;11053:9;11032:20;:31::i;:::-;10991:37;11006:4;:14;;;11022:5;10991:14;:37::i;11076:261::-;11178:4;11194:17;11225:5;11214:28;;;;;;;;;;;;:::i;:::-;11194:48;;11299:31;11320:9;11299:20;:31::i;:::-;11259:37;11274:4;:14;;;11290:5;11259:14;:37::i;11343:269::-;11452:4;11468:17;11499:5;11488:28;;;;;;;;;;;;:::i;:::-;11468:48;;11574:31;11595:9;11574:20;:31::i;:::-;11533:37;11548:4;:14;;;11564:5;11533:14;:37::i;11618:368::-;11721:4;11738:14;11754;11783:5;11772:37;;;;;;;;;;;;:::i;:::-;11737:72;;;;11819:17;11839:37;11854:4;:14;;;11870:5;11839:14;:37::i;:::-;11819:57;;11906:28;11927:6;11906:20;:28::i;:::-;11893:9;:41;;:86;;;;;11951:28;11972:6;11951:20;:28::i;:::-;-1:-1:-1;11938:41:135;;11618:368;-1:-1:-1;;;;;11618:368:135:o;11992:261::-;12093:4;12109:17;12140:5;12129:28;;;;;;;;;;;;:::i;:::-;12109:48;;12215:31;12236:9;12215:20;:31::i;:::-;12174:37;12189:4;:14;;;12205:5;12174:14;:37::i;12259:261::-;12361:4;12377:17;12408:5;12397:28;;;;;;;;;;;;:::i;:::-;12377:48;;12482:31;12503:9;12482:20;:31::i;:::-;12442:37;12457:4;:15;;;12474:4;12442:14;:37::i;12526:269::-;12635:4;12651:17;12682:5;12671:28;;;;;;;;;;;;:::i;:::-;12651:48;;12757:31;12778:9;12757:20;:31::i;:::-;12716:37;12731:4;:15;;;12748:4;12716:14;:37::i;12801:262::-;12904:4;12920:17;12951:5;12940:28;;;;;;;;;;;;:::i;:::-;12920:48;;13025:31;13046:9;13025:20;:31::i;:::-;12985:37;13000:4;:15;;;13017:4;12985:14;:37::i;13069:298::-;13203:4;13223:17;13254:5;13243:28;;;;;;;;;;;;:::i;:::-;13223:48;;13329:31;13350:9;13329:20;:31::i;:::-;13288:37;13303:4;:15;;;13320:4;13288:14;:37::i;13373:369::-;13477:4;13494:14;13510;13539:5;13528:37;;;;;;;;;;;;:::i;:::-;13493:72;;;;13575:17;13595:37;13610:4;:15;;;13627:4;13595:14;:37::i;13748:262::-;13850:4;13866:17;13897:5;13886:28;;;;;;;;;;;;:::i;:::-;13866:48;;13972:31;13993:9;13972:20;:31::i;:::-;13931:37;13946:4;:15;;;13963:4;13931:14;:37::i;14016:406::-;14119:4;14135:25;14174:5;14163:29;;;;;;;;;;;;:::i;:::-;14135:57;-1:-1:-1;14207:9:135;14202:192;14226:9;:16;14222:1;:20;14202:192;;;14317:4;:19;;;14301:37;;;;;;14283:9;14293:1;14283:12;;;;;;;;:::i;:::-;;;;;;;14267:30;;;;;;:71;14263:121;;14365:4;14358:11;;;;;;14263:121;14244:3;;14202:192;;;-1:-1:-1;14410:5:135;;14016:406;-1:-1:-1;;;;14016:406:135:o;14428:407::-;14532:4;14548:25;14587:5;14576:29;;;;;;;;;;;;:::i;:::-;14548:57;-1:-1:-1;14620:9:135;14615:193;14639:9;:16;14635:1;:20;14615:193;;;14730:4;:19;;;14714:37;;;;;;14696:9;14706:1;14696:12;;;;;;;;:::i;:::-;;;;;;;14680:30;;;;;;:71;14676:122;;14778:5;14771:12;;;;;;14676:122;14657:3;;14615:193;;;-1:-1:-1;14824:4:135;;14428:407;-1:-1:-1;;;;14428:407:135:o;14841:412::-;14941:4;14957:29;15000:5;14989:29;;;;;;;;;;;;:::i;:::-;14957:61;-1:-1:-1;15033:9:135;15028:197;15052:13;:20;15048:1;:24;15028:197;;;15151:4;:16;;;15135:34;;;;;;15113:13;15127:1;15113:16;;;;;;;;:::i;:::-;;;;;;;15097:34;;;;;;:72;15093:122;;15196:4;15189:11;;;;;;15093:122;15074:3;;15028:197;;15259:413;15360:4;15376:29;15419:5;15408:29;;;;;;;;;;;;:::i;:::-;15376:61;-1:-1:-1;15452:9:135;15447:198;15471:13;:20;15467:1;:24;15447:198;;;15570:4;:16;;;15554:34;;;;;;15532:13;15546:1;15532:16;;;;;;;;:::i;:::-;;;;;;;15516:34;;;;;;:72;15512:123;;15615:5;15608:12;;;;;;15512:123;15493:3;;15447:198;;2604:300:182;2694:24;2720:23;2745:24;2809:6;2795:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2795:21:182;;2785:31;;2849:6;2835:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2835:21:182;;2826:30;;2890:6;2878:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2604:300:182;;;;-1:-1:-1;;2604:300:182:o;2235:586:112:-;2202:25:182;;;2468:10:112;2202:25:182;;;;21487:74:187;;;;21609:6;21597:19;;21577:18;;;21570:47;2202:25:182;;;;;;;;;21460:18:187;;;;2202:25:182;;;2192:36;;;;;2496:59:112;2531:15;2548:1;2551:3;2496:34;:59::i;:::-;2590:131;;;;;;;;;;;;;;;;;;;;;;;;2700:10;2590:131;;;;-1:-1:-1;2566:21:112;;;;;;;;;;;:155;;:21;;:155;;:21;:155;:::i;:::-;-1:-1:-1;2566:155:112;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2566:155:112;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2566:155:112;;;;;;;;;;;;-1:-1:-1;;2566:155:112;-1:-1:-1;;;;;2566:155:112;;;;;;;;;2737:77;;;;;;2758:10;;2737:77;;;;2777:15;;2794:11;;2807:6;;2737:77;:::i;:::-;;;;;;;;2407:414;2235:586;;;;:::o;15880:332:135:-;15951:7;15970:17;15990:32;16005:9;16016:5;15990:14;:32::i;:::-;15970:52;;16032:17;16052:37;16073:15;16052:20;:37::i;:::-;16032:57;;16116:9;16104;:21;16100:35;;;-1:-1:-1;16134:1:135;;15880:332;-1:-1:-1;;;15880:332:135:o;16100:35::-;16199:6;16174:21;16186:9;16174;:21;:::i;:::-;16173:32;;;;:::i;:::-;16166:39;15880:332;-1:-1:-1;;;;15880:332:135:o;17417:202::-;17489:7;17509:9;17520;17531;17544:27;17561:9;17544:16;:27::i;:::-;17508:63;;-1:-1:-1;17508:63:135;-1:-1:-1;17508:63:135;-1:-1:-1;17508:63:135;17601:7;17508:63;17605:3;17601:7;:::i;:::-;17588:10;:1;17592:6;17588:10;:::i;:::-;:20;;;;:::i;:::-;:24;;;;:::i;:::-;17581:31;17417:202;-1:-1:-1;;;;;17417:202:135:o;16218:1193::-;16363:8;;16299:7;;16341:3;;16375:1;16363:13;16355:49;;;;-1:-1:-1;;;16355:49:135;;27825:2:187;16355:49:135;;;27807:21:187;27864:2;27844:18;;;27837:30;27903:25;27883:18;;;27876:53;27946:18;;16355:49:135;27623:347:187;16355:49:135;16414:10;16427:51;16465:1;16467;16465:4;;;;;;;;:::i;:::-;;;;;;;;;16471:1;16473;16471:4;;;;;;;;:::i;:::-;;;;;;;16448:28;;16471:4;28140:26:187;;;16448:28:135;;;28128:39:187;;;;16471:4:135;;;;28183:11:187;;;28176:47;28239:11;;16448:28:135;;;;;;;;;;;;16427:13;:51::i;:::-;16414:64;;16488:10;16501:51;16539:1;16541;16539:4;;;;;;;;:::i;:::-;;;;;;;;;16545:1;16547;16545:4;;;;;;;;:::i;16501:51::-;16488:64;;16562:10;16575:51;16613:1;16615;16613:4;;;;;;;;:::i;:::-;;;;;;;;;16619:1;16621;16619:4;;;;;;;;:::i;16575:51::-;16562:64;;16637:23;16663:37;16684:15;16663:20;:37::i;:::-;16637:63;-1:-1:-1;16710:17:135;16759:3;16731:24;16749:6;16637:63;16731:24;:::i;:::-;16730:32;;;;:::i;:::-;16710:52;;16773:12;16799:8;16795:563;;;17005:14;:9;17017:2;17005:14;:::i;:::-;17000:2;:19;16996:129;;;17046:9;17053:2;17046:4;:9;:::i;:::-;17039:16;;16795:563;;16996:129;17101:9;17108:2;17101:4;:9;:::i;16795:563::-;17233:9;17228:2;:14;17224:124;;;17269:9;17276:2;17269:4;:9;:::i;17224:124::-;17324:9;17331:2;17324:4;:9;:::i;:::-;17317:16;;17224:124;17402:2;17391:8;:2;17396:3;17391:8;:::i;:::-;17375:13;:4;17382:6;17375:13;:::i;:::-;:24;;;;:::i;:::-;:29;;;;:::i;:::-;17368:36;16218:1193;-1:-1:-1;;;;;;;;;;16218:1193:135:o;619:300:182:-;755:9;739:5;733:19;:31;729:88;;;780:26;;-1:-1:-1;;;780:26:182;;28580:2:187;780:26:182;;;28562:21:187;28619:2;28599:18;;;28592:30;28658:18;28638;;;28631:46;28694:18;;780:26:182;28378:340:187;729:88:182;852:9;836:5;830:19;:31;826:87;;;877:25;;-1:-1:-1;;;877:25:182;;28925:2:187;877:25:182;;;28907:21:187;28964:2;28944:18;;;28937:30;29003:17;28983:18;;;28976:45;29038:18;;877:25:182;28723:339:187;826:87:182;619:300;;;:::o;17625:622:135:-;17693:12;;;;17757:18;17769:6;17757:9;:18;:::i;:::-;:28;;17778:7;17757:28;:::i;:::-;17745:40;-1:-1:-1;17795:11:135;17809:36;17838:7;17745:40;17809:36;:::i;:::-;17795:50;-1:-1:-1;17855:11:135;17873:13;17795:50;17879:7;17873:13;:::i;:::-;17869:17;;:1;:17;:::i;:::-;17855:31;-1:-1:-1;17896:12:135;17963:3;17946:13;17952:7;17855:31;17946:13;:::i;:::-;17931:12;17937:6;17931:3;:12;:::i;:::-;17918:10;17924:4;17918:3;:10;:::i;:::-;17912:16;;:3;:16;:::i;:::-;:31;;;;:::i;:::-;:47;;;;:::i;:::-;17911:55;;;;:::i;:::-;17896:70;-1:-1:-1;17976:9:135;17995;:3;18001;17995:9;:::i;:::-;17988:16;;:4;:16;:::i;:::-;17976:28;-1:-1:-1;18014:11:135;18059:10;18066:3;18059:4;:10;:::i;:::-;18048:8;18055:1;18048:4;:8;:::i;:::-;18035:10;18041:4;18035:3;:10;:::i;:::-;:21;;;;:::i;:::-;:34;;;;:::i;:::-;18028:42;;:3;:42;:::i;:::-;18014:56;-1:-1:-1;18080:10:135;18109:3;18094:7;18014:56;18094:1;:7;:::i;:::-;:11;;18104:1;18094:11;:::i;:::-;18093:19;;;;:::i;:::-;18080:32;-1:-1:-1;18151:1:135;18135:8;18080:32;18135:3;:8;:::i;:::-;:12;;18146:1;18135:12;:::i;:::-;18134:18;;;;:::i;:::-;18128:24;;:3;:24;:::i;:::-;:28;;18155:1;18128:28;:::i;:::-;18122:34;;18179:2;18174;:7;:25;;18193:6;18198:1;18193:2;:6;:::i;:::-;18174:25;;;18184:6;:2;18189:1;18184:6;:::i;:::-;18166:33;;18230:1;18221:5;:10;;:18;;18238:1;18221:18;;;18234:1;18221:18;18216:24;;;;:1;:24;:::i;:::-;18209:31;;17735:512;;;;;;;17625:622;;;;;:::o;18253:347::-;18316:14;18365:1;18316:14;18416:178;18432:1;:8;18428:1;:12;18416:178;;;18461:7;18477:1;18479;18477:4;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;18505:2:135;18500:7;;;;;:18;;;18516:2;18511:1;:7;;;;18500:18;18496:88;;;18562:6;18566:2;18562:1;:6;:::i;:::-;18547:22;;:11;:6;18556:2;18547:11;:::i;:::-;:22;;;;:::i;:::-;18538:31;;18496:88;-1:-1:-1;18442:3:135;;18416:178;;;18332:268;;18253:347;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:180:187:-;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:187;;14:180;-1:-1:-1;14:180:187:o;199:289::-;241:3;279:5;273:12;306:6;301:3;294:19;362:6;355:4;348:5;344:16;337:4;332:3;328:14;322:47;414:1;407:4;398:6;393:3;389:16;385:27;378:38;477:4;470:2;466:7;461:2;453:6;449:15;445:29;440:3;436:39;432:50;425:57;;;199:289;;;;:::o;493:664::-;762:3;751:9;744:22;725:4;789:46;830:3;819:9;815:19;807:6;789:46;:::i;:::-;883:9;875:6;871:22;866:2;855:9;851:18;844:50;917:33;943:6;935;917:33;:::i;:::-;903:47;;998:9;990:6;986:22;981:2;970:9;966:18;959:50;1026:33;1052:6;1044;1026:33;:::i;:::-;1018:41;;;-1:-1:-1;;;;;1099:6:187;1095:55;1090:2;1079:9;1075:18;1068:83;493:664;;;;;;;:::o;1162:131::-;-1:-1:-1;;;;;;1236:32:187;;1226:43;;1216:71;;1283:1;1280;1273:12;1216:71;1162:131;:::o;1298:245::-;1356:6;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;1464:9;1451:23;1483:30;1507:5;1483:30;:::i;:::-;1532:5;1298:245;-1:-1:-1;;;1298:245:187:o;1740:154::-;-1:-1:-1;;;;;1819:5:187;1815:54;1808:5;1805:65;1795:93;;1884:1;1881;1874:12;1899:159;1966:20;;2026:6;2015:18;;2005:29;;1995:57;;2048:1;2045;2038:12;1995:57;1899:159;;;:::o;2063:319::-;2130:6;2138;2191:2;2179:9;2170:7;2166:23;2162:32;2159:52;;;2207:1;2204;2197:12;2159:52;2246:9;2233:23;2265:31;2290:5;2265:31;:::i;:::-;2315:5;-1:-1:-1;2339:37:187;2372:2;2357:18;;2339:37;:::i;:::-;2329:47;;2063:319;;;;;:::o;2387:220::-;2536:2;2525:9;2518:21;2499:4;2556:45;2597:2;2586:9;2582:18;2574:6;2556:45;:::i;2612:347::-;2663:8;2673:6;2727:3;2720:4;2712:6;2708:17;2704:27;2694:55;;2745:1;2742;2735:12;2694:55;-1:-1:-1;2768:20:187;;2811:18;2800:30;;2797:50;;;2843:1;2840;2833:12;2797:50;2880:4;2872:6;2868:17;2856:29;;2932:3;2925:4;2916:6;2908;2904:19;2900:30;2897:39;2894:59;;;2949:1;2946;2939:12;2894:59;2612:347;;;;;:::o;2964:737::-;3060:6;3068;3076;3084;3092;3145:3;3133:9;3124:7;3120:23;3116:33;3113:53;;;3162:1;3159;3152:12;3113:53;3201:9;3188:23;3220:31;3245:5;3220:31;:::i;:::-;3270:5;-1:-1:-1;3294:37:187;3327:2;3312:18;;3294:37;:::i;:::-;3284:47;;3382:2;3371:9;3367:18;3354:32;3409:18;3401:6;3398:30;3395:50;;;3441:1;3438;3431:12;3395:50;3480:58;3530:7;3521:6;3510:9;3506:22;3480:58;:::i;:::-;2964:737;;;;-1:-1:-1;3557:8:187;3665:2;3650:18;3637:32;;2964:737;-1:-1:-1;;;;2964:737:187:o;4063:879::-;4168:6;4176;4184;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;4317:9;4304:23;4336:31;4361:5;4336:31;:::i;:::-;4386:5;-1:-1:-1;4443:2:187;4428:18;;4415:32;4456:33;4415:32;4456:33;:::i;:::-;4508:7;-1:-1:-1;4534:37:187;4567:2;4552:18;;4534:37;:::i;:::-;4524:47;;4622:2;4611:9;4607:18;4594:32;4649:18;4641:6;4638:30;4635:50;;;4681:1;4678;4671:12;4635:50;4720:58;4770:7;4761:6;4750:9;4746:22;4720:58;:::i;:::-;4063:879;;;;-1:-1:-1;4063:879:187;;;;;4905:3;4890:19;;;4877:33;;4063:879;-1:-1:-1;;;;4063:879:187:o;4947:469::-;5000:3;5038:5;5032:12;5065:6;5060:3;5053:19;5097:4;5092:3;5088:14;5081:21;;5136:4;5129:5;5125:16;5159:1;5169:222;5183:6;5180:1;5177:13;5169:222;;;5248:13;;-1:-1:-1;;;;;5244:62:187;5232:75;;5336:4;5327:14;;;;5364:17;;;;5205:1;5198:9;5169:222;;;-1:-1:-1;5407:3:187;;4947:469;-1:-1:-1;;;;4947:469:187:o;5421:420::-;5474:3;5512:5;5506:12;5539:6;5534:3;5527:19;5571:4;5566:3;5562:14;5555:21;;5610:4;5603:5;5599:16;5633:1;5643:173;5657:6;5654:1;5651:13;5643:173;;;5718:13;;5706:26;;5761:4;5752:14;;;;5789:17;;;;5679:1;5672:9;5643:173;;5846:578;5897:3;5928;5960:5;5954:12;5987:6;5982:3;5975:19;6019:4;6014:3;6010:14;6003:21;;6077:4;6067:6;6064:1;6060:14;6053:5;6049:26;6045:37;6116:4;6109:5;6105:16;6139:1;6149:249;6163:6;6160:1;6157:13;6149:249;;;6250:2;6246:7;6238:5;6232:4;6228:16;6224:30;6219:3;6212:43;6276:38;6309:4;6300:6;6294:13;6276:38;:::i;:::-;6349:4;6374:14;;;;6268:46;;-1:-1:-1;6337:17:187;;;;;6185:1;6178:9;6149:249;;;-1:-1:-1;6414:4:187;;5846:578;-1:-1:-1;;;;;;5846:578:187:o;6429:758::-;6810:6;6799:9;6792:25;6853:3;6848:2;6837:9;6833:18;6826:31;6773:4;6880:57;6932:3;6921:9;6917:19;6909:6;6880:57;:::i;:::-;6985:9;6977:6;6973:22;6968:2;6957:9;6953:18;6946:50;7019:44;7056:6;7048;7019:44;:::i;:::-;7005:58;;7111:9;7103:6;7099:22;7094:2;7083:9;7079:18;7072:50;7139:42;7174:6;7166;7139:42;:::i;:::-;7131:50;6429:758;-1:-1:-1;;;;;;;6429:758:187:o;7192:127::-;7253:10;7248:3;7244:20;7241:1;7234:31;7284:4;7281:1;7274:15;7308:4;7305:1;7298:15;7324:255;7396:2;7390:9;7438:6;7426:19;;7475:18;7460:34;;7496:22;;;7457:62;7454:88;;;7522:18;;:::i;:::-;7558:2;7551:22;7324:255;:::o;7584:275::-;7655:2;7649:9;7720:2;7701:13;;-1:-1:-1;;7697:27:187;7685:40;;7755:18;7740:34;;7776:22;;;7737:62;7734:88;;;7802:18;;:::i;:::-;7838:2;7831:22;7584:275;;-1:-1:-1;7584:275:187:o;7864:187::-;7913:4;7946:18;7938:6;7935:30;7932:56;;;7968:18;;:::i;:::-;-1:-1:-1;8034:2:187;8013:15;-1:-1:-1;;8009:29:187;8040:4;8005:40;;7864:187::o;8056:338::-;8121:5;8150:53;8166:36;8195:6;8166:36;:::i;:::-;8150:53;:::i;:::-;8141:62;;8226:6;8219:5;8212:21;8266:3;8257:6;8252:3;8248:16;8245:25;8242:45;;;8283:1;8280;8273:12;8242:45;8332:6;8327:3;8320:4;8313:5;8309:16;8296:43;8386:1;8379:4;8370:6;8363:5;8359:18;8355:29;8348:40;8056:338;;;;;:::o;8399:221::-;8441:5;8494:3;8487:4;8479:6;8475:17;8471:27;8461:55;;8512:1;8509;8502:12;8461:55;8534:80;8610:3;8601:6;8588:20;8581:4;8573:6;8569:17;8534:80;:::i;8625:952::-;8738:6;8746;8754;8762;8815:3;8803:9;8794:7;8790:23;8786:33;8783:53;;;8832:1;8829;8822:12;8783:53;8855:28;8873:9;8855:28;:::i;:::-;8845:38;;8934:2;8923:9;8919:18;8906:32;8961:18;8953:6;8950:30;8947:50;;;8993:1;8990;8983:12;8947:50;9016:22;;9069:4;9061:13;;9057:27;-1:-1:-1;9047:55:187;;9098:1;9095;9088:12;9047:55;9121:74;9187:7;9182:2;9169:16;9164:2;9160;9156:11;9121:74;:::i;:::-;9111:84;;;9248:2;9237:9;9233:18;9220:32;9277:18;9267:8;9264:32;9261:52;;;9309:1;9306;9299:12;9261:52;9332:51;9375:7;9364:8;9353:9;9349:24;9332:51;:::i;:::-;9322:61;;;9436:2;9425:9;9421:18;9408:32;9465:18;9455:8;9452:32;9449:52;;;9497:1;9494;9487:12;9449:52;9520:51;9563:7;9552:8;9541:9;9537:24;9520:51;:::i;:::-;9510:61;;;8625:952;;;;;;;:::o;9805:380::-;9884:1;9880:12;;;;9927;;;9948:61;;10002:4;9994:6;9990:17;9980:27;;9948:61;10055:2;10047:6;10044:14;10024:18;10021:38;10018:161;;10101:10;10096:3;10092:20;10089:1;10082:31;10136:4;10133:1;10126:15;10164:4;10161:1;10154:15;10018:161;;9805:380;;;:::o;10190:841::-;10609:6;10601;10597:19;10586:9;10579:38;10653:6;10648:2;10637:9;10633:18;10626:34;10696:3;10691:2;10680:9;10676:18;10669:31;10560:4;10723:57;10775:3;10764:9;10760:19;10752:6;10723:57;:::i;:::-;10828:9;10820:6;10816:22;10811:2;10800:9;10796:18;10789:50;10862:44;10899:6;10891;10862:44;:::i;:::-;10848:58;;10955:9;10947:6;10943:22;10937:3;10926:9;10922:19;10915:51;10983:42;11018:6;11010;10983:42;:::i;:::-;10975:50;10190:841;-1:-1:-1;;;;;;;;10190:841:187:o;11036:342::-;11112:5;11141:53;11157:36;11186:6;11157:36;:::i;11141:53::-;11132:62;;11217:6;11210:5;11203:21;11257:3;11248:6;11243:3;11239:16;11236:25;11233:45;;;11274:1;11271;11264:12;11233:45;11316:6;11311:3;11304:4;11297:5;11293:16;11287:36;11370:1;11363:4;11354:6;11347:5;11343:18;11339:29;11332:40;11036:342;;;;;:::o;11383:237::-;11437:5;11490:3;11483:4;11475:6;11471:17;11467:27;11457:55;;11508:1;11505;11498:12;11457:55;11530:84;11610:3;11601:6;11595:13;11588:4;11580:6;11576:17;11530:84;:::i;11625:887::-;11689:5;11742:3;11735:4;11727:6;11723:17;11719:27;11709:55;;11760:1;11757;11750:12;11709:55;11793:6;11787:13;11823:18;11815:6;11812:30;11809:56;;;11845:18;;:::i;:::-;11891:6;11888:1;11884:14;11918:30;11942:4;11938:2;11934:13;11918:30;:::i;:::-;11984:19;;;12028:4;12060:15;;;12056:26;;;12019:14;;;;12094:15;;;12091:35;;;12122:1;12119;12112:12;12091:35;12158:4;12150:6;12146:17;12135:28;;12172:309;12188:6;12183:3;12180:15;12172:309;;;12269:3;12263:10;12305:18;12292:11;12289:35;12286:55;;;12337:1;12334;12327:12;12286:55;12366:70;12432:3;12425:4;12411:11;12403:6;12399:24;12395:35;12366:70;:::i;:::-;12354:83;;-1:-1:-1;12466:4:187;12205:14;;;;12457;;;;12172:309;;12517:164;12593:13;;12642;;12635:21;12625:32;;12615:60;;12671:1;12668;12661:12;12686:1176;12849:6;12857;12865;12873;12881;12889;12942:3;12930:9;12921:7;12917:23;12913:33;12910:53;;;12959:1;12956;12949:12;12910:53;12992:9;12986:16;13025:18;13017:6;13014:30;13011:50;;;13057:1;13054;13047:12;13011:50;13080:71;13143:7;13134:6;13123:9;13119:22;13080:71;:::i;:::-;13070:81;;;13194:2;13183:9;13179:18;13173:25;13207:31;13232:5;13207:31;:::i;:::-;13328:2;13313:18;;13307:25;13257:5;;-1:-1:-1;13307:25:187;-1:-1:-1;13377:46:187;13419:2;13404:18;;13377:46;:::i;:::-;13367:56;;13468:3;13457:9;13453:19;13447:26;13482:32;13506:7;13482:32;:::i;:::-;13586:3;13571:19;;13565:26;13533:7;;-1:-1:-1;13616:18:187;13603:32;;13600:52;;;13648:1;13645;13638:12;13600:52;13671:24;;13726:4;13718:13;;13714:27;-1:-1:-1;13704:55:187;;13755:1;13752;13745:12;13704:55;13778:78;13848:7;13843:2;13837:9;13832:2;13828;13824:11;13778:78;:::i;:::-;13768:88;;;12686:1176;;;;;;;;:::o;13867:127::-;13928:10;13923:3;13919:20;13916:1;13909:31;13959:4;13956:1;13949:15;13983:4;13980:1;13973:15;13999:168;14072:9;;;14103;;14120:15;;;14114:22;;14100:37;14090:71;;14141:18;;:::i;14172:331::-;14277:9;14288;14330:8;14318:10;14315:24;14312:44;;;14352:1;14349;14342:12;14312:44;14381:6;14371:8;14368:20;14365:40;;;14401:1;14398;14391:12;14365:40;-1:-1:-1;;14427:23:187;;;14472:25;;;;;-1:-1:-1;14172:331:187:o;14508:255::-;14575:6;14628:2;14616:9;14607:7;14603:23;14599:32;14596:52;;;14644:1;14641;14634:12;14596:52;14683:9;14670:23;14702:31;14727:5;14702:31;:::i;16241:230::-;16311:6;16364:2;16352:9;16343:7;16339:23;16335:32;16332:52;;;16380:1;16377;16370:12;16332:52;-1:-1:-1;16425:16:187;;16241:230;-1:-1:-1;16241:230:187:o;16476:128::-;16543:9;;;16564:11;;;16561:37;;;16578:18;;:::i;16952:202::-;17019:6;17072:2;17060:9;17051:7;17047:23;17043:32;17040:52;;;17088:1;17085;17078:12;17040:52;17111:37;17138:9;17111:37;:::i;17517:1980::-;17619:6;17672:2;17660:9;17651:7;17647:23;17643:32;17640:52;;;17688:1;17685;17678:12;17640:52;17721:9;17715:16;17754:18;17746:6;17743:30;17740:50;;;17786:1;17783;17776:12;17740:50;17809:22;;17865:6;17847:16;;;17843:29;17840:49;;;17885:1;17882;17875:12;17840:49;17911:22;;:::i;:::-;17964:2;17958:9;17992:18;17982:8;17979:32;17976:52;;;18024:1;18021;18014:12;17976:52;18051:56;18099:7;18088:8;18084:2;18080:17;18051:56;:::i;:::-;18044:5;18037:71;;18147:2;18143;18139:11;18133:18;18176;18166:8;18163:32;18160:52;;;18208:1;18205;18198:12;18160:52;18244:56;18292:7;18281:8;18277:2;18273:17;18244:56;:::i;:::-;18239:2;18232:5;18228:14;18221:80;;18340:2;18336;18332:11;18326:18;18369;18359:8;18356:32;18353:52;;;18401:1;18398;18391:12;18353:52;18437:56;18485:7;18474:8;18470:2;18466:17;18437:56;:::i;:::-;18432:2;18425:5;18421:14;18414:80;;18533:2;18529;18525:11;18519:18;18562;18552:8;18549:32;18546:52;;;18594:1;18591;18584:12;18546:52;18630:56;18678:7;18667:8;18663:2;18659:17;18630:56;:::i;:::-;18625:2;18618:5;18614:14;18607:80;;18726:3;18722:2;18718:12;18712:19;18756:18;18746:8;18743:32;18740:52;;;18788:1;18785;18778:12;18740:52;18825:56;18873:7;18862:8;18858:2;18854:17;18825:56;:::i;:::-;18819:3;18812:5;18808:15;18801:81;;18921:3;18917:2;18913:12;18907:19;18951:18;18941:8;18938:32;18935:52;;;18983:1;18980;18973:12;18935:52;19020:56;19068:7;19057:8;19053:2;19049:17;19020:56;:::i;:::-;19014:3;19007:5;19003:15;18996:81;;19116:3;19112:2;19108:12;19102:19;19146:18;19136:8;19133:32;19130:52;;;19178:1;19175;19168:12;19130:52;19215:56;19263:7;19252:8;19248:2;19244:17;19215:56;:::i;:::-;19209:3;19202:5;19198:15;19191:81;;19311:3;19307:2;19303:12;19297:19;19341:18;19331:8;19328:32;19325:52;;;19373:1;19370;19363:12;19325:52;19410:56;19458:7;19447:8;19443:2;19439:17;19410:56;:::i;:::-;19404:3;19393:15;;19386:81;-1:-1:-1;19397:5:187;17517:1980;-1:-1:-1;;;;17517:1980:187:o;20266:127::-;20327:10;20322:3;20318:20;20315:1;20308:31;20358:4;20355:1;20348:15;20382:4;20379:1;20372:15;20398:125;20463:9;;;20484:10;;;20481:36;;;20497:18;;:::i;20528:782::-;20690:4;20738:2;20727:9;20723:18;20768:2;20757:9;20750:21;20791:6;20826;20820:13;20857:6;20849;20842:22;20895:2;20884:9;20880:18;20873:25;;20957:2;20947:6;20944:1;20940:14;20929:9;20925:30;20921:39;20907:53;;20995:2;20987:6;20983:15;21016:1;21026:255;21040:6;21037:1;21034:13;21026:255;;;21133:2;21129:7;21117:9;21109:6;21105:22;21101:36;21096:3;21089:49;21161:40;21194:6;21185;21179:13;21161:40;:::i;:::-;21151:50;-1:-1:-1;21236:2:187;21259:12;;;;21224:15;;;;;21062:1;21055:9;21026:255;;;-1:-1:-1;21298:6:187;;20528:782;-1:-1:-1;;;;;;20528:782:187:o;21628:371::-;21841:6;21833;21829:19;21818:9;21811:38;21885:2;21880;21869:9;21865:18;21858:30;21792:4;21905:45;21946:2;21935:9;21931:18;21923:6;21905:45;:::i;:::-;21897:53;;21986:6;21981:2;21970:9;21966:18;21959:34;21628:371;;;;;;:::o;22004:160::-;22081:13;;22134:4;22123:16;;22113:27;;22103:55;;22154:1;22151;22144:12;22169:204;22237:6;22290:2;22278:9;22269:7;22265:23;22261:32;22258:52;;;22306:1;22303;22296:12;22258:52;22329:38;22357:9;22329:38;:::i;22378:285::-;22453:6;22461;22514:2;22502:9;22493:7;22489:23;22485:32;22482:52;;;22530:1;22527;22520:12;22482:52;22553:38;22581:9;22553:38;:::i;:::-;22543:48;;22610:47;22653:2;22642:9;22638:18;22610:47;:::i;22668:343::-;22747:6;22755;22808:2;22796:9;22787:7;22783:23;22779:32;22776:52;;;22824:1;22821;22814:12;22776:52;-1:-1:-1;;22869:16:187;;22975:2;22960:18;;;22954:25;22869:16;;22954:25;;-1:-1:-1;22668:343:187:o;23016:372::-;23121:6;23174:2;23162:9;23153:7;23149:23;23145:32;23142:52;;;23190:1;23187;23180:12;23142:52;23223:9;23217:16;23256:18;23248:6;23245:30;23242:50;;;23288:1;23285;23278:12;23242:50;23311:71;23374:7;23365:6;23354:9;23350:22;23311:71;:::i;23519:518::-;23621:2;23616:3;23613:11;23610:421;;;23657:5;23654:1;23647:16;23701:4;23698:1;23688:18;23771:2;23759:10;23755:19;23752:1;23748:27;23742:4;23738:38;23807:4;23795:10;23792:20;23789:47;;;-1:-1:-1;23830:4:187;23789:47;23885:2;23880:3;23876:12;23873:1;23869:20;23863:4;23859:31;23849:41;;23940:81;23958:2;23951:5;23948:13;23940:81;;;24017:1;24003:16;;23984:1;23973:13;23940:81;;;23944:3;;23519:518;;;:::o;24213:1299::-;24339:3;24333:10;24366:18;24358:6;24355:30;24352:56;;;24388:18;;:::i;:::-;24417:97;24507:6;24467:38;24499:4;24493:11;24467:38;:::i;:::-;24461:4;24417:97;:::i;:::-;24563:4;24594:2;24583:14;;24611:1;24606:649;;;;25299:1;25316:6;25313:89;;;-1:-1:-1;25368:19:187;;;25362:26;25313:89;-1:-1:-1;;24170:1:187;24166:11;;;24162:24;24158:29;24148:40;24194:1;24190:11;;;24145:57;25415:81;;24576:930;;24606:649;23466:1;23459:14;;;23503:4;23490:18;;-1:-1:-1;;24642:20:187;;;24760:222;24774:7;24771:1;24768:14;24760:222;;;24856:19;;;24850:26;24835:42;;24963:4;24948:20;;;;24916:1;24904:14;;;;24790:12;24760:222;;;24764:3;25010:6;25001:7;24998:19;24995:201;;;25071:19;;;25065:26;-1:-1:-1;;25154:1:187;25150:14;;;25166:3;25146:24;25142:37;25138:42;25123:58;25108:74;;24995:201;-1:-1:-1;;;;25242:1:187;25226:14;;;25222:22;25209:36;;-1:-1:-1;24213:1299:187:o;26819:542::-;27060:2;27049:9;27042:21;27023:4;27086:45;27127:2;27116:9;27112:18;27104:6;27086:45;:::i;:::-;27179:9;27171:6;27167:22;27162:2;27151:9;27147:18;27140:50;27213:33;27239:6;27231;27213:33;:::i;:::-;27199:47;;27294:9;27286:6;27282:22;27277:2;27266:9;27262:18;27255:50;27322:33;27348:6;27340;27322:33;:::i;27366:127::-;27427:10;27422:3;27418:20;27415:1;27408:31;27458:4;27455:1;27448:15;27482:4;27479:1;27472:15;27498:120;27538:1;27564;27554:35;;27569:18;;:::i;:::-;-1:-1:-1;27603:9:187;;27498:120::o;28261:112::-;28293:1;28319;28309:35;;28324:18;;:::i;:::-;-1:-1:-1;28358:9:187;;28261:112::o;29067:151::-;29157:4;29150:12;;;29136;;;29132:31;;29175:14;;29172:40;;;29192:18;;:::i","linkReferences":{}},"methodIdentifiers":{"executeMandate(address,uint16,bytes,uint256)":"4d516f0e","getConfig(address,uint16)":"c0d27aad","getInputParams(address,uint16)":"d8a941f4","getNameDescription(address,uint16)":"0d157721","handleRequest(address,address,uint16,bytes,uint256)":"552cb372","initializeMandate(uint16,string,bytes,bytes)":"b1f50f89","mandates(bytes32)":"01e07972","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OnlyPowers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"AsyncMandate__Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"configParams\",\"type\":\"bytes\"}],\"name\":\"Mandate__Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"Mandate__Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"executeMandate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getInputParams\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"}],\"name\":\"getNameDescription\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"mandateId\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"mandateCalldata\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"handleRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actionId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"initializeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"mandates\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"nameDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inputParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"powers\",\"type\":\"address\"}],\"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\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"major\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"patch\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"oracle\":\"Address of the oracle for the async mandate\",\"powers\":\"Address of the Powers protocol\"}},\"Mandate__Deployed(bytes)\":{\"params\":{\"configParams\":\"Configurations parameters for the mandate\"}},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"params\":{\"config\":\"Configurations parameters for the mandate\",\"index\":\"Index of the mandate\",\"inputParams\":\"Input parameters for the mandate\",\"nameDescription\":\"Name of the mandate\",\"powers\":\"Address of the Powers protocol\"}}},\"kind\":\"dev\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"details\":\"Called by the Powers protocol during action execution\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"success\":\"True if execution succeeded\"}},\"getConfig(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"config\":\"The configuration data for the mandate\"}},\"getInputParams(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"inputParams\":\"The input parameters for the mandate\"}},\"getNameDescription(address,uint16)\":{\"params\":{\"mandateId\":\"The id of the mandate\",\"powers\":\"Address of the Powers protocol\"},\"returns\":{\"nameDescription\":\"The name and description of the mandate\"}},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"details\":\"Must be overridden by implementing contracts\",\"params\":{\"caller\":\"Address that initiated the action\",\"mandateCalldata\":\"Encoded function call data\",\"mandateId\":\"The id of the mandate\",\"nonce\":\"The nonce for the action\"},\"returns\":{\"actionId\":\"The action ID\",\"calldatas\":\"Encoded function calls\",\"targets\":\"Target contract addresses for calls\",\"values\":\"ETH values to send with calls\"}},\"version()\":{\"returns\":{\"major\":\"The major version number\",\"minor\":\"The minor version number\",\"patch\":\"The patch version number\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AsyncMandate__Initialized(address,uint16,string,bytes,bytes,address)\":{\"notice\":\"Emitted when an async mandate is initialized\"},\"Mandate__Deployed(bytes)\":{\"notice\":\"Emitted when a mandate is deployed\"},\"Mandate__Initialized(address,uint16,string,bytes,bytes)\":{\"notice\":\"Emitted when a mandate is initialized\"}},\"kind\":\"user\",\"methods\":{\"executeMandate(address,uint16,bytes,uint256)\":{\"notice\":\"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers\"},\"getConfig(address,uint16)\":{\"notice\":\"Retrieves the configuration for a specific mandate\"},\"getInputParams(address,uint16)\":{\"notice\":\"Retrieves the input parameters for a specific mandate\"},\"getNameDescription(address,uint16)\":{\"notice\":\"Retrieves the name and description for a specific mandate\"},\"handleRequest(address,address,uint16,bytes,uint256)\":{\"notice\":\"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use.\"},\"version()\":{\"notice\":\"Retrieves the version of the mandate contract\"}},\"notice\":\"NB: a list of available checks and their functionSelectors is appended below. NB 2: You can only run one check at a time on the registry. If you want to run multiple checks, you need to create multiple mandates with different configs in a single chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol\":\"ZKPassport_Check\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8\",\"dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e\",\"dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol\":{\"keccak256\":\"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6\",\"dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj\"]},\"src/Mandate.sol\":{\"keccak256\":\"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929\",\"dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P\"]},\"src/addons/helpers/ZKPassport_PowersRegistry.sol\":{\"keccak256\":\"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6\",\"dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K\"]},\"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol\":{\"keccak256\":\"0x5679d5320b1a577c61d48bf7165285fecf272421eb20b3480f00f15e2550f65f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad924e386b1095eace963df6b8ae8f6351f02cd92e4ac93e38d1ae109be86017\",\"dweb:/ipfs/QmXmEewVBgrQp2gJAioXHENF7Q7ewdrUxZVjGDibXog8ij\"]},\"src/interfaces/IMandate.sol\":{\"keccak256\":\"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931\",\"dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A\"]},\"src/interfaces/IPowers.sol\":{\"keccak256\":\"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec\",\"dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp\"]},\"src/interfaces/IZKPassport.sol\":{\"keccak256\":\"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588\",\"dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q\"]},\"src/interfaces/PowersErrors.sol\":{\"keccak256\":\"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882\",\"dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf\"]},\"src/interfaces/PowersEvents.sol\":{\"keccak256\":\"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d\",\"dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB\"]},\"src/interfaces/PowersTypes.sol\":{\"keccak256\":\"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740\",\"dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK\"]},\"src/libraries/MandateUtilities.sol\":{\"keccak256\":\"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad\",\"dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"OnlyPowers"},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false},{"internalType":"address","name":"oracle","type":"address","indexed":false}],"type":"event","name":"AsyncMandate__Initialized","anonymous":false},{"inputs":[{"internalType":"bytes","name":"configParams","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Deployed","anonymous":false},{"inputs":[{"internalType":"address","name":"powers","type":"address","indexed":true},{"internalType":"uint16","name":"index","type":"uint16","indexed":true},{"internalType":"string","name":"nameDescription","type":"string","indexed":false},{"internalType":"bytes","name":"inputParams","type":"bytes","indexed":false},{"internalType":"bytes","name":"config","type":"bytes","indexed":false}],"type":"event","name":"Mandate__Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"executeMandate","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getInputParams","outputs":[{"internalType":"bytes","name":"inputParams","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"}],"stateMutability":"view","type":"function","name":"getNameDescription","outputs":[{"internalType":"string","name":"nameDescription","type":"string"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"powers","type":"address"},{"internalType":"uint16","name":"mandateId","type":"uint16"},{"internalType":"bytes","name":"mandateCalldata","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"handleRequest","outputs":[{"internalType":"uint256","name":"actionId","type":"uint256"},{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}]},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"},{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initializeMandate"},{"inputs":[{"internalType":"bytes32","name":"mandateHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"mandates","outputs":[{"internalType":"string","name":"nameDescription","type":"string"},{"internalType":"bytes","name":"inputParams","type":"bytes"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address","name":"powers","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint16","name":"major","type":"uint16"},{"internalType":"uint16","name":"minor","type":"uint16"},{"internalType":"uint16","name":"patch","type":"uint16"}]}],"devdoc":{"kind":"dev","methods":{"executeMandate(address,uint16,bytes,uint256)":{"details":"Called by the Powers protocol during action execution","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","nonce":"The nonce for the action"},"returns":{"success":"True if execution succeeded"}},"getConfig(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"config":"The configuration data for the mandate"}},"getInputParams(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"inputParams":"The input parameters for the mandate"}},"getNameDescription(address,uint16)":{"params":{"mandateId":"The id of the mandate","powers":"Address of the Powers protocol"},"returns":{"nameDescription":"The name and description of the mandate"}},"handleRequest(address,address,uint16,bytes,uint256)":{"details":"Must be overridden by implementing contracts","params":{"caller":"Address that initiated the action","mandateCalldata":"Encoded function call data","mandateId":"The id of the mandate","nonce":"The nonce for the action"},"returns":{"actionId":"The action ID","calldatas":"Encoded function calls","targets":"Target contract addresses for calls","values":"ETH values to send with calls"}},"version()":{"returns":{"major":"The major version number","minor":"The minor version number","patch":"The patch version number"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeMandate(address,uint16,bytes,uint256)":{"notice":"Executes the mandate's logic: validation -> handling request -> call external -> replying to Powers"},"getConfig(address,uint16)":{"notice":"Retrieves the configuration for a specific mandate"},"getInputParams(address,uint16)":{"notice":"Retrieves the input parameters for a specific mandate"},"getNameDescription(address,uint16)":{"notice":"Retrieves the name and description for a specific mandate"},"handleRequest(address,address,uint16,bytes,uint256)":{"notice":"Handles requests from the Powers protocol and returns data _replyPowers and _changeState can use."},"version()":{"notice":"Retrieves the version of the mandate contract"}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol":"ZKPassport_Check"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x6ec6d7fce29668ede560c7d2e10f9d10de3473f5298e431e70a5767db42fa620","urls":["bzz-raw://ac0139e51874aeec0730d040e57993187541777eb01d5939c06d5d2b986a54e8","dweb:/ipfs/QmZbMbdPzusXuX9FGkyArV8hgzKLBZaL5RzMtCdCawtwPF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol":{"keccak256":"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c","urls":["bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6","dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj"],"license":"Apache-2.0"},"src/Mandate.sol":{"keccak256":"0x569920498911b75053b0d1f9c4020286f0956b18d28237cc268293eb8975744d","urls":["bzz-raw://c383bbfa50b5cc17d6e81523d22cea02a748b924b6684365b3efb01a2a89a929","dweb:/ipfs/QmbDAWVJV1Yhc4Zii4ag9dKtqhhdMwe9MxXoFR5UdjY63P"],"license":"MIT"},"src/addons/helpers/ZKPassport_PowersRegistry.sol":{"keccak256":"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2","urls":["bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6","dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K"],"license":"MIT"},"src/addons/mandates/integrations/ZKPassport/ZKPassport_Check.sol":{"keccak256":"0x5679d5320b1a577c61d48bf7165285fecf272421eb20b3480f00f15e2550f65f","urls":["bzz-raw://ad924e386b1095eace963df6b8ae8f6351f02cd92e4ac93e38d1ae109be86017","dweb:/ipfs/QmXmEewVBgrQp2gJAioXHENF7Q7ewdrUxZVjGDibXog8ij"],"license":"MIT"},"src/interfaces/IMandate.sol":{"keccak256":"0xb5f6fa1b7f3cae2114701628f5217d5fd248a89a3341c97f66d5373c7cf8bbaa","urls":["bzz-raw://e700be70ca4083d2b30b56f334a366de82bdd8c031db313bb52a98fe05a5d931","dweb:/ipfs/QmbijnfJkvJNv7Js7MK5QYEBhcAjb6bYx2FL8uzBzxJv5A"],"license":"MIT"},"src/interfaces/IPowers.sol":{"keccak256":"0xa382f543416369799ed44af711b8eeedfec28199d936dae12770658bffd03690","urls":["bzz-raw://366365848b04cb565124400418b45de051b16407d0e547b1807cb04b2b3943ec","dweb:/ipfs/QmbxrzsDvErfhuee8f7YeEB5xJimnn4nM7FRnKzCUKxcxp"],"license":"MIT"},"src/interfaces/IZKPassport.sol":{"keccak256":"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141","urls":["bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588","dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q"],"license":"MIT"},"src/interfaces/PowersErrors.sol":{"keccak256":"0xcd1de33b87e93e461d8ed8b7402d0aa37d7a0015f3201fb5f16f7aec1073c098","urls":["bzz-raw://0387a20ec368dde5f9604e957c28ff4380a1dd69745180c609f19a6eab46f882","dweb:/ipfs/QmZLrHQ189ThBF1RrUW84LiW4ZWWgw9y5VxXn7sLHGUxTf"],"license":"MIT"},"src/interfaces/PowersEvents.sol":{"keccak256":"0x1f2392ac0e956faada2ab8485e1a6bfc9890d30832e6a9132e9740e59f04d28e","urls":["bzz-raw://81a43f5e1857f4db442add2944c598dd4a2d35e146ba98bb7ac4d0ce6be7be1d","dweb:/ipfs/QmRrZqfZirm3rCcN4ayTpLwtUcLEjARckEK5pouX4JY7mB"],"license":"MIT"},"src/interfaces/PowersTypes.sol":{"keccak256":"0x883772b348a5581e05d91e7b7bd47890421cdc03cdcc9fb55c3f93d9576ed878","urls":["bzz-raw://82ed3e81946a631399174e62028b90debbd3804af2f017b007d2f6160d78a740","dweb:/ipfs/QmYJp6VLQNe6TTDEGfeKVvwjGpCvKXyb5xpHh8ztM7qebK"],"license":"MIT"},"src/libraries/MandateUtilities.sol":{"keccak256":"0xafa2338fd84e65d72c902db4d2abe7118823381a900d3b0b20f16a4d316041a5","urls":["bzz-raw://2932e01f67b1b040b886a437a5d22b8a38069e1d46a86b01cad4b2790a9a43ad","dweb:/ipfs/QmQWX41rZGA878mAnn8t1QiHqG9XrtXAk5fEmaeuSw74NC"],"license":"MIT"}},"version":1},"id":135} \ No newline at end of file diff --git a/frontend/context/builds/ZKPassport_PowersRegistry.json b/frontend/context/builds/ZKPassport_PowersRegistry.json index 369eb2f8..89a4a30e 100644 --- a/frontend/context/builds/ZKPassport_PowersRegistry.json +++ b/frontend/context/builds/ZKPassport_PowersRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_zkPassportVerifier","type":"address","internalType":"address"},{"name":"_zkPassportHelper","type":"address","internalType":"address"},{"name":"_domain","type":"string","internalType":"string"},{"name":"_scope","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteProof","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDisclosed","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct DisclosedData","components":[{"name":"name","type":"string","internalType":"string"},{"name":"issuingCountry","type":"string","internalType":"string"},{"name":"nationality","type":"string","internalType":"string"},{"name":"gender","type":"string","internalType":"string"},{"name":"birthDate","type":"string","internalType":"string"},{"name":"expiryDate","type":"string","internalType":"string"},{"name":"documentNumber","type":"string","internalType":"string"},{"name":"documentType","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getIsFacematched","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getProofTimestamp","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mockAddDisclosedData","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerProof","inputs":[{"name":"params","type":"tuple","internalType":"struct ProofVerificationParams","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"proofVerificationData","type":"tuple","internalType":"struct ProofVerificationData","components":[{"name":"vkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"},{"name":"publicInputs","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"committedInputs","type":"bytes","internalType":"bytes"},{"name":"serviceConfig","type":"tuple","internalType":"struct ServiceConfig","components":[{"name":"validityPeriodInSeconds","type":"uint256","internalType":"uint256"},{"name":"domain","type":"string","internalType":"string"},{"name":"scope","type":"string","internalType":"string"},{"name":"devMode","type":"bool","internalType":"bool"}]}]},{"name":"isIDCard","type":"bool","internalType":"bool"}],"outputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"validDomain","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"validScope","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"zkPassportHelper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IZKPassportHelper"}],"stateMutability":"view"},{"type":"function","name":"zkPassportVerifier","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IZKPassportVerifier"}],"stateMutability":"view"},{"type":"event","name":"IdentityDeleted","inputs":[{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"oldAccount","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"IdentityRegistered","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x60c060405234801561000f575f5ffd5b506040516123df3803806123df83398101604081905261002e91610176565b6001600160a01b0384166100885760405162461bcd60e51b815260206004820181905260248201527f5a4b50617373706f72743a20496e76616c6964207a65726f2061646472657373604482015260640160405180910390fd5b6001600160a01b03808516608052831660a05260036100a78382610280565b5060046100b48282610280565b505050505061033a565b80516001600160a01b03811681146100d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126100fc575f5ffd5b81516001600160401b03811115610115576101156100d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610143576101436100d9565b60405281815283820160200185101561015a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f60808587031215610189575f5ffd5b610192856100be565b93506101a0602086016100be565b60408601519093506001600160401b038111156101bb575f5ffd5b6101c7878288016100ed565b606087015190935090506001600160401b038111156101e4575f5ffd5b6101f0878288016100ed565b91505092959194509250565b600181811c9082168061021057607f821691505b60208210810361022e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561027b57805f5260205f20601f840160051c810160208510156102595750805b601f840160051c820191505b81811015610278575f8155600101610265565b50505b505050565b81516001600160401b03811115610299576102996100d9565b6102ad816102a784546101fc565b84610234565b6020601f8211600181146102df575f83156102c85750848201515b5f19600385901b1c1916600184901b178455610278565b5f84815260208120601f198516915b8281101561030e57878501518255602094850194600190920191016102ee565b508482101561032b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05161205a6103855f395f818161011d01528181610ced01528181610e8601528181610f8e015281816110d9015261117801525f81816101b30152610c17015261205a5ff3fe608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c80637d3788e111610072578063c1ad863c11610058578063c1ad863c1461018b578063c4797ec5146101ae578063c47ca04c146101d5575f5ffd5b80637d3788e114610157578063b282a29a14610178575f5ffd5b80631fb3ed3f116100a25780631fb3ed3f146100e55780633eca794d146100f857806369744c6214610118575f5ffd5b80631e084f25146100bd5780631f4a2f59146100c7575b5f5ffd5b6100c56101dd565b005b6100cf610386565b6040516100dc919061154e565b60405180910390f35b6100c56100f336600461157b565b610412565b61010b61010636600461157b565b6106b2565b6040516100dc9190611596565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100dc565b61016a61016536600461169b565b610bf7565b6040519081526020016100dc565b61016a61018636600461157b565b611379565b61019e61019936600461157b565b6113ed565b60405190151581526020016100dc565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6100cf611464565b335f90815260208190526040902054806102365760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b60448201526064015b60405180910390fd5b5f818152600160205260409020546001600160a01b031633146102a75760405162461bcd60e51b815260206004820152602360248201527f4964656e746966696572206e6f74207265676973746572656420746f2063616c6044820152623632b960e91b606482015260840161022d565b335f908152602081815260408083208390558383526001825280832080546001600160a01b0319169055600290915281209081816102e58282611471565b6102f2600183015f611471565b6102ff600283015f611471565b61030c600383015f611471565b610319600483015f611471565b610326600583015f611471565b610333600683015f611471565b610340600783015f611471565b50505060088101805460ff191690555f6009909101819055604051339183917ff7fef2e356b5886f568a2120b6c085fa74aa83fbc2b95ee716167c22e9dc32059190a350565b60048054610393906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906116ee565b801561040a5780601f106103e15761010080835404028352916020019161040a565b820191905f5260205f20905b8154815290600101906020018083116103ed57829003601f168201915b505050505081565b6040516bffffffffffffffffffffffff19606083901b1660208201524260348201525f9060540160408051601f1981840301815282825280516020918201206001600160a01b0386165f818152808452848120839055828152600180855285822080546001600160a01b03191690931790925561014086018552600a6101008701818152694d6f636b20456e74727960b01b61012089015287528551808701875260038082526223a12960e91b828801819052898801929092528751808901895290815280870191909152878701528551808701875260048152634d616c6560e01b818701526060808901919091528651808801885282815269313939302d30312d303160b01b8188015260808901528651808801885291825269323033302d30312d303160b01b8287015260a088019190915285518087018752600981526831323334353637383960b81b8187015260c088015285518087018752600881526714185cdcdc1bdc9d60c21b8187015260e088015285519081018652868152808501929092524282860152828152600290935292909120825180519295509091829081906105c09082611786565b50602082015160018201906105d59082611786565b50604082015160028201906105ea9082611786565b50606082015160038201906105ff9082611786565b50608082015160048201906106149082611786565b5060a082015160058201906106299082611786565b5060c0820151600682019061063e9082611786565b5060e082015160078201906106539082611786565b505050602082015160088201805460ff19169115159190911790556040918201516009909101555182906001600160a01b038516907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a3505050565b6106fa60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0382165f90815260208190526040902054806107575760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f81815260026020526040908190208151610100810190925280548290829061077f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab906116ee565b80156107f65780601f106107cd576101008083540402835291602001916107f6565b820191905f5260205f20905b8154815290600101906020018083116107d957829003601f168201915b5050505050815260200160018201805461080f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461083b906116ee565b80156108865780601f1061085d57610100808354040283529160200191610886565b820191905f5260205f20905b81548152906001019060200180831161086957829003601f168201915b5050505050815260200160028201805461089f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb906116ee565b80156109165780601f106108ed57610100808354040283529160200191610916565b820191905f5260205f20905b8154815290600101906020018083116108f957829003601f168201915b5050505050815260200160038201805461092f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461095b906116ee565b80156109a65780601f1061097d576101008083540402835291602001916109a6565b820191905f5260205f20905b81548152906001019060200180831161098957829003601f168201915b505050505081526020016004820180546109bf906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546109eb906116ee565b8015610a365780601f10610a0d57610100808354040283529160200191610a36565b820191905f5260205f20905b815481529060010190602001808311610a1957829003601f168201915b50505050508152602001600582018054610a4f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b906116ee565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b50505050508152602001600682018054610adf906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b906116ee565b8015610b565780601f10610b2d57610100808354040283529160200191610b56565b820191905f5260205f20905b815481529060010190602001808311610b3957829003601f168201915b50505050508152602001600782018054610b6f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b906116ee565b8015610be65780601f10610bbd57610100808354040283529160200191610be6565b820191905f5260205f20905b815481529060010190602001808311610bc957829003601f168201915b505050505081525050915050919050565b5f610c006114ab565b60405163578bd92160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063578bd92190610c4c908790600401611987565b6060604051808303815f875af1158015610c68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8c9190611a89565b5060208301521515808252610ce35760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320696e76616c696400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663847755e3610d1f6020870187611ac9565b610d2d906040810190611ae7565b600360046040518563ffffffff1660e01b8152600401610d509493929190611bac565b602060405180830381865afa158015610d6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611bf0565b610ddb5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642073636f706500000000000000000000000000000000000000604482015260640161022d565b6020808201515f908152600190915260409020546001600160a01b03161580610e1f57506020808201515f908152600190915260409020546001600160a01b031633145b610e7c5760405162461bcd60e51b815260206004820152602860248201527f494420616c7265616479207265676973746572656420746f20616e6f74686572604482015267081858d8dbdd5b9d60c21b606482015260840161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d14df298610eb86020870187611ac9565b610ec6906040810190611ae7565b6040518363ffffffff1660e01b8152600401610ee3929190611c0b565b602060405180830381865afa158015610efe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190611c26565b60408201819052610e1090610f379042611c3d565b10610f845760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320746f6f206f6c6400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630af18ba6610fc06040870187611c5c565b6040518363ffffffff1660e01b8152600401610fdd929190611c9f565b5f60405180830381865afa158015610ff7573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261101e9190810190611d67565b606082018190526020015146146110775760405162461bcd60e51b815260206004820152601060248201527f496e76616c696420636861696e20696400000000000000000000000000000000604482015260640161022d565b60608101516040015151156110ce5760405162461bcd60e51b815260206004820152601b60248201527f437573746f6d20646174612073686f756c6420626520656d7074790000000000604482015260640161022d565b5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166303d37eae61110b6040880188611c5c565b876040518463ffffffff1660e01b815260040161112a93929190611e0e565b5f60405180830381865afa158015611144573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261116b9190810190611e33565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016638e96bc896001836111ad60408b018b611c5c565b6040518563ffffffff1660e01b81526004016111cc9493929190611fe9565b602060405180830381865afa925050508015611205575060408051601f3d908101601f1916820190925261120291810190611bf0565b60015b61121057505f611213565b90505b60208084018051335f818152808552604080822093909355835181526001855282812080546001600160a01b031916909217909155815160608101835286815285151581860152828801518184015292518152600290935290912081518051829081906112809082611786565b50602082015160018201906112959082611786565b50604082015160028201906112aa9082611786565b50606082015160038201906112bf9082611786565b50608082015160048201906112d49082611786565b5060a082015160058201906112e99082611786565b5060c082015160068201906112fe9082611786565b5060e082015160078201906113139082611786565b50505060208281015160088301805460ff1916911515919091179055604092830151600990920191909155840151905133907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a350506020015190505b92915050565b6001600160a01b0381165f90815260208190526040812054806113d65760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206009015492915050565b6001600160a01b0381165f908152602081905260408120548061144a5760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206008015460ff1692915050565b60038054610393906116ee565b50805461147d906116ee565b5f825580601f1061148c575050565b601f0160209004905f5260205f20908101906114a89190611508565b50565b6040518060c001604052805f151581526020015f81526020015f81526020016114f560405180606001604052805f6001600160a01b031681526020015f8152602001606081525090565b81525f6020820181905260409091015290565b5b8082111561151c575f8155600101611509565b5090565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115606020830184611520565b9392505050565b6001600160a01b03811681146114a8575f5ffd5b5f6020828403121561158b575f5ffd5b813561156081611567565b602081525f825161010060208401526115b3610120840182611520565b90506020840151601f198483030160408501526115d08282611520565b9150506040840151601f198483030160608501526115ee8282611520565b9150506060840151601f1984830301608085015261160c8282611520565b9150506080840151601f198483030160a085015261162a8282611520565b91505060a0840151601f198483030160c08501526116488282611520565b91505060c0840151601f198483030160e08501526116668282611520565b91505060e0840151601f19848303016101008501526116858282611520565b95945050505050565b80151581146114a8575f5ffd5b5f5f604083850312156116ac575f5ffd5b823567ffffffffffffffff8111156116c2575f5ffd5b8301608081860312156116d3575f5ffd5b915060208301356116e38161168e565b809150509250929050565b600181811c9082168061170257607f821691505b60208210810361172057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561178157805f5260205f20601f840160051c8101602085101561175f5750805b601f840160051c820191505b8181101561177e575f815560010161176b565b50505b505050565b815167ffffffffffffffff8111156117a0576117a0611726565b6117b4816117ae84546116ee565b8461173a565b6020601f8211600181146117e6575f83156117cf5750848201515b5f19600385901b1c1916600184901b17845561177e565b5f84815260208120601f198516915b8281101561181557878501518255602094850194600190920191016117f5565b508482101561183257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8335601e19843603018112611856575f5ffd5b830160208101925035905067ffffffffffffffff811115611875575f5ffd5b803603821315611883575f5ffd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156118e2575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8235607e1983360301811261190f575f5ffd5b90910192915050565b803582525f61192a6020830183611841565b6080602086015261193f60808601828461188a565b91505061194f6040840184611841565b858303604087015261196283828461188a565b9250505060608301356119748161168e565b8015156060860152508091505092915050565b60208082528235828201525f9083013536849003605e190181126119a9575f5ffd5b608060408401528301803560a08401526119c66020820182611841565b606060c08601526119dc6101008601828461188a565b9150506040820135601e198336030181126119f5575f5ffd5b60209201918201913567ffffffffffffffff811115611a12575f5ffd5b8060051b3603831315611a23575f5ffd5b848203609f190160e0860152611a3a8282856118b2565b92505050611a4b6040850185611841565b848303601f19016060860152611a6283828461188a565b92505050611a7360608501856118fb565b838203601f190160808501526116858282611918565b5f5f5f60608486031215611a9b575f5ffd5b8351611aa68161168e565b602085015160408601519194509250611abe81611567565b809150509250925092565b5f8235605e19833603018112611add575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611afc575f5ffd5b83018035915067ffffffffffffffff821115611b16575f5ffd5b6020019150600581901b3603821315611883575f5ffd5b5f8154611b39816116ee565b808552600182168015611b535760018114611b6f57611ba3565b60ff1983166020870152602082151560051b8701019350611ba3565b845f5260205f205f5b83811015611b9a5781546020828a010152600182019150602081019050611b78565b87016020019450505b50505092915050565b606081525f611bbf6060830186886118b2565b8281036020840152611bd18186611b2d565b90508281036040840152611be58185611b2d565b979650505050505050565b5f60208284031215611c00575f5ffd5b81516115608161168e565b602081525f611c1e6020830184866118b2565b949350505050565b5f60208284031215611c36575f5ffd5b5051919050565b8181038181111561137357634e487b7160e01b5f52601160045260245ffd5b5f5f8335601e19843603018112611c71575f5ffd5b83018035915067ffffffffffffffff821115611c8b575f5ffd5b602001915036819003821315611883575f5ffd5b602081525f611c1e60208301848661188a565b604051610100810167ffffffffffffffff81118282101715611cd657611cd6611726565b60405290565b5f82601f830112611ceb575f5ffd5b815167ffffffffffffffff811115611d0557611d05611726565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611d3457611d34611726565b604052818152838201602001851015611d4b575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611d77575f5ffd5b815167ffffffffffffffff811115611d8d575f5ffd5b820160608185031215611d9e575f5ffd5b6040516060810167ffffffffffffffff81118282101715611dc157611dc1611726565b6040528151611dcf81611567565b815260208281015190820152604082015167ffffffffffffffff811115611df4575f5ffd5b611e0086828501611cdc565b604083015250949350505050565b604081525f611e2160408301858761188a565b90508215156020830152949350505050565b5f60208284031215611e43575f5ffd5b815167ffffffffffffffff811115611e59575f5ffd5b82016101008185031215611e6b575f5ffd5b611e73611cb2565b815167ffffffffffffffff811115611e89575f5ffd5b611e9586828501611cdc565b825250602082015167ffffffffffffffff811115611eb1575f5ffd5b611ebd86828501611cdc565b602083015250604082015167ffffffffffffffff811115611edc575f5ffd5b611ee886828501611cdc565b604083015250606082015167ffffffffffffffff811115611f07575f5ffd5b611f1386828501611cdc565b606083015250608082015167ffffffffffffffff811115611f32575f5ffd5b611f3e86828501611cdc565b60808301525060a082015167ffffffffffffffff811115611f5d575f5ffd5b611f6986828501611cdc565b60a08301525060c082015167ffffffffffffffff811115611f88575f5ffd5b611f9486828501611cdc565b60c08301525060e082015167ffffffffffffffff811115611fb3575f5ffd5b611fbf86828501611cdc565b60e083015250949350505050565b600381106114a857634e487b7160e01b5f52602160045260245ffd5b611ff285611fcd565b848152611ffe84611fcd565b836020820152606060408201525f61201a60608301848661188a565b969550505050505056fea2646970667358221220304f67b443131b11f7ba96c28c7afb82377bdb232f4ff53e23c99861b2d2ec2064736f6c634300081e0033","sourceMap":"1010:8331:110:-:0;;;2969:407;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3096:33:110;;3092:81;;3131:42;;-1:-1:-1;;;3131:42:110;;1991:2:180;3131:42:110;;;1973:21:180;;;2010:18;;;2003:30;2069:34;2049:18;;;2042:62;2121:18;;3131:42:110;;;;;;;3092:81;-1:-1:-1;;;;;3183:61:110;;;;;3254:55;;;;3319:11;:21;3333:7;3319:11;:21;:::i;:::-;-1:-1:-1;3350:10:110;:19;3363:6;3350:10;:19;:::i;:::-;;2969:407;;;;1010:8331;;14:177:180;93:13;;-1:-1:-1;;;;;135:31:180;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:723;382:5;435:3;428:4;420:6;416:17;412:27;402:55;;453:1;450;443:12;402:55;480:13;;-1:-1:-1;;;;;505:30:180;;502:56;;;538:18;;:::i;:::-;587:2;581:9;679:2;641:17;;-1:-1:-1;;637:31:180;;;670:2;633:40;629:54;617:67;;-1:-1:-1;;;;;699:34:180;;735:22;;;696:62;693:88;;;761:18;;:::i;:::-;797:2;790:22;821;;;862:19;;;883:4;858:30;855:39;-1:-1:-1;852:59:180;;;907:1;904;897:12;852:59;964:6;957:4;949:6;945:17;938:4;930:6;926:17;920:51;1019:1;991:19;;;1012:4;987:30;980:41;;;;995:6;328:723;-1:-1:-1;;;328:723:180:o;1056:728::-;1173:6;1181;1189;1197;1250:3;1238:9;1229:7;1225:23;1221:33;1218:53;;;1267:1;1264;1257:12;1218:53;1290:40;1320:9;1290:40;:::i;:::-;1280:50;;1349:49;1394:2;1383:9;1379:18;1349:49;:::i;:::-;1442:2;1427:18;;1421:25;1339:59;;-1:-1:-1;;;;;;1458:30:180;;1455:50;;;1501:1;1498;1491:12;1455:50;1524:61;1577:7;1568:6;1557:9;1553:22;1524:61;:::i;:::-;1631:2;1616:18;;1610:25;1514:71;;-1:-1:-1;1610:25:180;-1:-1:-1;;;;;;1647:32:180;;1644:52;;;1692:1;1689;1682:12;1644:52;1715:63;1770:7;1759:8;1748:9;1744:24;1715:63;:::i;:::-;1705:73;;;1056:728;;;;;;;:::o;2150:380::-;2229:1;2225:12;;;;2272;;;2293:61;;2347:4;2339:6;2335:17;2325:27;;2293:61;2400:2;2392:6;2389:14;2369:18;2366:38;2363:161;;2446:10;2441:3;2437:20;2434:1;2427:31;2481:4;2478:1;2471:15;2509:4;2506:1;2499:15;2363:161;;2150:380;;;:::o;2661:518::-;2763:2;2758:3;2755:11;2752:421;;;2799:5;2796:1;2789:16;2843:4;2840:1;2830:18;2913:2;2901:10;2897:19;2894:1;2890:27;2884:4;2880:38;2949:4;2937:10;2934:20;2931:47;;;-1:-1:-1;2972:4:180;2931:47;3027:2;3022:3;3018:12;3015:1;3011:20;3005:4;3001:31;2991:41;;3082:81;3100:2;3093:5;3090:13;3082:81;;;3159:1;3145:16;;3126:1;3115:13;3082:81;;;3086:3;;2752:421;2661:518;;;:::o;3355:1299::-;3475:10;;-1:-1:-1;;;;;3497:30:180;;3494:56;;;3530:18;;:::i;:::-;3559:97;3649:6;3609:38;3641:4;3635:11;3609:38;:::i;:::-;3603:4;3559:97;:::i;:::-;3705:4;3736:2;3725:14;;3753:1;3748:649;;;;4441:1;4458:6;4455:89;;;-1:-1:-1;4510:19:180;;;4504:26;4455:89;-1:-1:-1;;3312:1:180;3308:11;;;3304:24;3300:29;3290:40;3336:1;3332:11;;;3287:57;4557:81;;3718:930;;3748:649;2608:1;2601:14;;;2645:4;2632:18;;-1:-1:-1;;3784:20:180;;;3902:222;3916:7;3913:1;3910:14;3902:222;;;3998:19;;;3992:26;3977:42;;4105:4;4090:20;;;;4058:1;4046:14;;;;3932:12;3902:222;;;3906:3;4152:6;4143:7;4140:19;4137:201;;;4213:19;;;4207:26;-1:-1:-1;;4296:1:180;4292:14;;;4308:3;4288:24;4284:37;4280:42;4265:58;4250:74;;4137:201;-1:-1:-1;;;;4384:1:180;4368:14;;;4364:22;4351:36;;-1:-1:-1;3355:1299:180:o;:::-;1010:8331:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c80637d3788e111610072578063c1ad863c11610058578063c1ad863c1461018b578063c4797ec5146101ae578063c47ca04c146101d5575f5ffd5b80637d3788e114610157578063b282a29a14610178575f5ffd5b80631fb3ed3f116100a25780631fb3ed3f146100e55780633eca794d146100f857806369744c6214610118575f5ffd5b80631e084f25146100bd5780631f4a2f59146100c7575b5f5ffd5b6100c56101dd565b005b6100cf610386565b6040516100dc919061154e565b60405180910390f35b6100c56100f336600461157b565b610412565b61010b61010636600461157b565b6106b2565b6040516100dc9190611596565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100dc565b61016a61016536600461169b565b610bf7565b6040519081526020016100dc565b61016a61018636600461157b565b611379565b61019e61019936600461157b565b6113ed565b60405190151581526020016100dc565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6100cf611464565b335f90815260208190526040902054806102365760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b60448201526064015b60405180910390fd5b5f818152600160205260409020546001600160a01b031633146102a75760405162461bcd60e51b815260206004820152602360248201527f4964656e746966696572206e6f74207265676973746572656420746f2063616c6044820152623632b960e91b606482015260840161022d565b335f908152602081815260408083208390558383526001825280832080546001600160a01b0319169055600290915281209081816102e58282611471565b6102f2600183015f611471565b6102ff600283015f611471565b61030c600383015f611471565b610319600483015f611471565b610326600583015f611471565b610333600683015f611471565b610340600783015f611471565b50505060088101805460ff191690555f6009909101819055604051339183917ff7fef2e356b5886f568a2120b6c085fa74aa83fbc2b95ee716167c22e9dc32059190a350565b60048054610393906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906116ee565b801561040a5780601f106103e15761010080835404028352916020019161040a565b820191905f5260205f20905b8154815290600101906020018083116103ed57829003601f168201915b505050505081565b6040516bffffffffffffffffffffffff19606083901b1660208201524260348201525f9060540160408051601f1981840301815282825280516020918201206001600160a01b0386165f818152808452848120839055828152600180855285822080546001600160a01b03191690931790925561014086018552600a6101008701818152694d6f636b20456e74727960b01b61012089015287528551808701875260038082526223a12960e91b828801819052898801929092528751808901895290815280870191909152878701528551808701875260048152634d616c6560e01b818701526060808901919091528651808801885282815269313939302d30312d303160b01b8188015260808901528651808801885291825269323033302d30312d303160b01b8287015260a088019190915285518087018752600981526831323334353637383960b81b8187015260c088015285518087018752600881526714185cdcdc1bdc9d60c21b8187015260e088015285519081018652868152808501929092524282860152828152600290935292909120825180519295509091829081906105c09082611786565b50602082015160018201906105d59082611786565b50604082015160028201906105ea9082611786565b50606082015160038201906105ff9082611786565b50608082015160048201906106149082611786565b5060a082015160058201906106299082611786565b5060c0820151600682019061063e9082611786565b5060e082015160078201906106539082611786565b505050602082015160088201805460ff19169115159190911790556040918201516009909101555182906001600160a01b038516907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a3505050565b6106fa60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0382165f90815260208190526040902054806107575760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f81815260026020526040908190208151610100810190925280548290829061077f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab906116ee565b80156107f65780601f106107cd576101008083540402835291602001916107f6565b820191905f5260205f20905b8154815290600101906020018083116107d957829003601f168201915b5050505050815260200160018201805461080f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461083b906116ee565b80156108865780601f1061085d57610100808354040283529160200191610886565b820191905f5260205f20905b81548152906001019060200180831161086957829003601f168201915b5050505050815260200160028201805461089f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb906116ee565b80156109165780601f106108ed57610100808354040283529160200191610916565b820191905f5260205f20905b8154815290600101906020018083116108f957829003601f168201915b5050505050815260200160038201805461092f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461095b906116ee565b80156109a65780601f1061097d576101008083540402835291602001916109a6565b820191905f5260205f20905b81548152906001019060200180831161098957829003601f168201915b505050505081526020016004820180546109bf906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546109eb906116ee565b8015610a365780601f10610a0d57610100808354040283529160200191610a36565b820191905f5260205f20905b815481529060010190602001808311610a1957829003601f168201915b50505050508152602001600582018054610a4f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b906116ee565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b50505050508152602001600682018054610adf906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b906116ee565b8015610b565780601f10610b2d57610100808354040283529160200191610b56565b820191905f5260205f20905b815481529060010190602001808311610b3957829003601f168201915b50505050508152602001600782018054610b6f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b906116ee565b8015610be65780601f10610bbd57610100808354040283529160200191610be6565b820191905f5260205f20905b815481529060010190602001808311610bc957829003601f168201915b505050505081525050915050919050565b5f610c006114ab565b60405163578bd92160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063578bd92190610c4c908790600401611987565b6060604051808303815f875af1158015610c68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8c9190611a89565b5060208301521515808252610ce35760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320696e76616c696400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663847755e3610d1f6020870187611ac9565b610d2d906040810190611ae7565b600360046040518563ffffffff1660e01b8152600401610d509493929190611bac565b602060405180830381865afa158015610d6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611bf0565b610ddb5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642073636f706500000000000000000000000000000000000000604482015260640161022d565b6020808201515f908152600190915260409020546001600160a01b03161580610e1f57506020808201515f908152600190915260409020546001600160a01b031633145b610e7c5760405162461bcd60e51b815260206004820152602860248201527f494420616c7265616479207265676973746572656420746f20616e6f74686572604482015267081858d8dbdd5b9d60c21b606482015260840161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d14df298610eb86020870187611ac9565b610ec6906040810190611ae7565b6040518363ffffffff1660e01b8152600401610ee3929190611c0b565b602060405180830381865afa158015610efe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190611c26565b60408201819052610e1090610f379042611c3d565b10610f845760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320746f6f206f6c6400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630af18ba6610fc06040870187611c5c565b6040518363ffffffff1660e01b8152600401610fdd929190611c9f565b5f60405180830381865afa158015610ff7573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261101e9190810190611d67565b606082018190526020015146146110775760405162461bcd60e51b815260206004820152601060248201527f496e76616c696420636861696e20696400000000000000000000000000000000604482015260640161022d565b60608101516040015151156110ce5760405162461bcd60e51b815260206004820152601b60248201527f437573746f6d20646174612073686f756c6420626520656d7074790000000000604482015260640161022d565b5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166303d37eae61110b6040880188611c5c565b876040518463ffffffff1660e01b815260040161112a93929190611e0e565b5f60405180830381865afa158015611144573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261116b9190810190611e33565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016638e96bc896001836111ad60408b018b611c5c565b6040518563ffffffff1660e01b81526004016111cc9493929190611fe9565b602060405180830381865afa925050508015611205575060408051601f3d908101601f1916820190925261120291810190611bf0565b60015b61121057505f611213565b90505b60208084018051335f818152808552604080822093909355835181526001855282812080546001600160a01b031916909217909155815160608101835286815285151581860152828801518184015292518152600290935290912081518051829081906112809082611786565b50602082015160018201906112959082611786565b50604082015160028201906112aa9082611786565b50606082015160038201906112bf9082611786565b50608082015160048201906112d49082611786565b5060a082015160058201906112e99082611786565b5060c082015160068201906112fe9082611786565b5060e082015160078201906113139082611786565b50505060208281015160088301805460ff1916911515919091179055604092830151600990920191909155840151905133907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a350506020015190505b92915050565b6001600160a01b0381165f90815260208190526040812054806113d65760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206009015492915050565b6001600160a01b0381165f908152602081905260408120548061144a5760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206008015460ff1692915050565b60038054610393906116ee565b50805461147d906116ee565b5f825580601f1061148c575050565b601f0160209004905f5260205f20908101906114a89190611508565b50565b6040518060c001604052805f151581526020015f81526020015f81526020016114f560405180606001604052805f6001600160a01b031681526020015f8152602001606081525090565b81525f6020820181905260409091015290565b5b8082111561151c575f8155600101611509565b5090565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115606020830184611520565b9392505050565b6001600160a01b03811681146114a8575f5ffd5b5f6020828403121561158b575f5ffd5b813561156081611567565b602081525f825161010060208401526115b3610120840182611520565b90506020840151601f198483030160408501526115d08282611520565b9150506040840151601f198483030160608501526115ee8282611520565b9150506060840151601f1984830301608085015261160c8282611520565b9150506080840151601f198483030160a085015261162a8282611520565b91505060a0840151601f198483030160c08501526116488282611520565b91505060c0840151601f198483030160e08501526116668282611520565b91505060e0840151601f19848303016101008501526116858282611520565b95945050505050565b80151581146114a8575f5ffd5b5f5f604083850312156116ac575f5ffd5b823567ffffffffffffffff8111156116c2575f5ffd5b8301608081860312156116d3575f5ffd5b915060208301356116e38161168e565b809150509250929050565b600181811c9082168061170257607f821691505b60208210810361172057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561178157805f5260205f20601f840160051c8101602085101561175f5750805b601f840160051c820191505b8181101561177e575f815560010161176b565b50505b505050565b815167ffffffffffffffff8111156117a0576117a0611726565b6117b4816117ae84546116ee565b8461173a565b6020601f8211600181146117e6575f83156117cf5750848201515b5f19600385901b1c1916600184901b17845561177e565b5f84815260208120601f198516915b8281101561181557878501518255602094850194600190920191016117f5565b508482101561183257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8335601e19843603018112611856575f5ffd5b830160208101925035905067ffffffffffffffff811115611875575f5ffd5b803603821315611883575f5ffd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156118e2575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8235607e1983360301811261190f575f5ffd5b90910192915050565b803582525f61192a6020830183611841565b6080602086015261193f60808601828461188a565b91505061194f6040840184611841565b858303604087015261196283828461188a565b9250505060608301356119748161168e565b8015156060860152508091505092915050565b60208082528235828201525f9083013536849003605e190181126119a9575f5ffd5b608060408401528301803560a08401526119c66020820182611841565b606060c08601526119dc6101008601828461188a565b9150506040820135601e198336030181126119f5575f5ffd5b60209201918201913567ffffffffffffffff811115611a12575f5ffd5b8060051b3603831315611a23575f5ffd5b848203609f190160e0860152611a3a8282856118b2565b92505050611a4b6040850185611841565b848303601f19016060860152611a6283828461188a565b92505050611a7360608501856118fb565b838203601f190160808501526116858282611918565b5f5f5f60608486031215611a9b575f5ffd5b8351611aa68161168e565b602085015160408601519194509250611abe81611567565b809150509250925092565b5f8235605e19833603018112611add575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611afc575f5ffd5b83018035915067ffffffffffffffff821115611b16575f5ffd5b6020019150600581901b3603821315611883575f5ffd5b5f8154611b39816116ee565b808552600182168015611b535760018114611b6f57611ba3565b60ff1983166020870152602082151560051b8701019350611ba3565b845f5260205f205f5b83811015611b9a5781546020828a010152600182019150602081019050611b78565b87016020019450505b50505092915050565b606081525f611bbf6060830186886118b2565b8281036020840152611bd18186611b2d565b90508281036040840152611be58185611b2d565b979650505050505050565b5f60208284031215611c00575f5ffd5b81516115608161168e565b602081525f611c1e6020830184866118b2565b949350505050565b5f60208284031215611c36575f5ffd5b5051919050565b8181038181111561137357634e487b7160e01b5f52601160045260245ffd5b5f5f8335601e19843603018112611c71575f5ffd5b83018035915067ffffffffffffffff821115611c8b575f5ffd5b602001915036819003821315611883575f5ffd5b602081525f611c1e60208301848661188a565b604051610100810167ffffffffffffffff81118282101715611cd657611cd6611726565b60405290565b5f82601f830112611ceb575f5ffd5b815167ffffffffffffffff811115611d0557611d05611726565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611d3457611d34611726565b604052818152838201602001851015611d4b575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611d77575f5ffd5b815167ffffffffffffffff811115611d8d575f5ffd5b820160608185031215611d9e575f5ffd5b6040516060810167ffffffffffffffff81118282101715611dc157611dc1611726565b6040528151611dcf81611567565b815260208281015190820152604082015167ffffffffffffffff811115611df4575f5ffd5b611e0086828501611cdc565b604083015250949350505050565b604081525f611e2160408301858761188a565b90508215156020830152949350505050565b5f60208284031215611e43575f5ffd5b815167ffffffffffffffff811115611e59575f5ffd5b82016101008185031215611e6b575f5ffd5b611e73611cb2565b815167ffffffffffffffff811115611e89575f5ffd5b611e9586828501611cdc565b825250602082015167ffffffffffffffff811115611eb1575f5ffd5b611ebd86828501611cdc565b602083015250604082015167ffffffffffffffff811115611edc575f5ffd5b611ee886828501611cdc565b604083015250606082015167ffffffffffffffff811115611f07575f5ffd5b611f1386828501611cdc565b606083015250608082015167ffffffffffffffff811115611f32575f5ffd5b611f3e86828501611cdc565b60808301525060a082015167ffffffffffffffff811115611f5d575f5ffd5b611f6986828501611cdc565b60a08301525060c082015167ffffffffffffffff811115611f88575f5ffd5b611f9486828501611cdc565b60c08301525060e082015167ffffffffffffffff811115611fb3575f5ffd5b611fbf86828501611cdc565b60e083015250949350505050565b600381106114a857634e487b7160e01b5f52602160045260245ffd5b611ff285611fcd565b848152611ffe84611fcd565b836020820152606060408201525f61201a60608301848661188a565b969550505050505056fea2646970667358221220304f67b443131b11f7ba96c28c7afb82377bdb232f4ff53e23c99861b2d2ec2064736f6c634300081e0033","sourceMap":"1010:8331:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7815:474;;;:::i;:::-;;2369:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3650:619;;;;;;:::i;:::-;;:::i;8496:285::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1805:51::-;;;;;;;;-1:-1:-1;;;;;2838:55:180;;;2820:74;;2808:2;2793:18;1805:51:110;2647:253:180;4785:2822:110;;;;;;:::i;:::-;;:::i;:::-;;;3712:25:180;;;3700:2;3685:18;4785:2822:110;3566:177:180;8787:273:110;;;;;;:::i;:::-;;:::i;9066:::-;;;;;;:::i;:::-;;:::i;:::-;;;4095:14:180;;4088:22;4070:41;;4058:2;4043:18;9066:273:110;3930:187:180;1701:55:110;;;;;2338:25;;;:::i;7815:474::-;7897:10;7857:18;7878:30;;;;;;;;;;;;7918:58;;;;-1:-1:-1;;;7918:58:110;;4584:2:180;7918:58:110;;;4566:21:180;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:180;;;4635:51;4703:18;;7918:58:110;;;;;;;;;7995:30;;;;:18;:30;;;;;;-1:-1:-1;;;;;7995:30:110;8029:10;7995:44;7987:92;;;;-1:-1:-1;;;7987:92:110;;4934:2:180;7987:92:110;;;4916:21:180;4973:2;4953:18;;;4946:30;5012:34;4992:18;;;4985:62;-1:-1:-1;;;5063:18:180;;;5056:33;5106:19;;7987:92:110;4732:399:180;7987:92:110;8116:10;8097:18;:30;;;;;;;;;;;8090:37;;;8144:30;;;:18;:30;;;;;8137:37;;-1:-1:-1;;;;;;8137:37:110;;;8191:25;:37;;;;;;;8097:18;8184:44;8191:37;8097:18;8184:44;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;8184:44:110;;;;;-1:-1:-1;;8184:44:110;;;;;;;;;;;8243:39;;8271:10;;8259;;8243:39;;8184:44;8243:39;7847:442;7815:474::o;2369:24::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3650:619::-;3751:42;;-1:-1:-1;;5698:2:180;5694:15;;;5690:53;3751:42:110;;;5678:66:180;3777:15:110;5760:12:180;;;5753:28;3716:22:110;;5797:12:180;;3751:42:110;;;-1:-1:-1;;3751:42:110;;;;;;;;;3741:53;;3751:42;3741:53;;;;-1:-1:-1;;;;;3804:27:110;;:18;:27;;;;;;;;;:44;;;3858:34;;;:18;:34;;;;;;:44;;-1:-1:-1;;;;;;3858:44:110;;;;;;;3952:102;;;;;;3858:44;3952:102;;;;;-1:-1:-1;;;3952:102:110;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:110;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:110;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:110;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:110;;;;-1:-1:-1;;;3952:102:110;;;;;;;;;;;-1:-1:-1;;;3952:102:110;;;;-1:-1:-1;;;3952:102:110;4121:83;;;;;;;;;;;;;;;;;4186:15;4121:83;;;;4065:41;;;:25;:41;;;;;;;:139;;;;3741:53;;-1:-1:-1;4065:41:110;;;;;;:139;;:41;:139;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;4065:139:110;;;;;;;;;-1:-1:-1;;4065:139:110;;;;;;;;;;;;;;;;;;;;4219:43;4247:14;;-1:-1:-1;;;;;4219:43:110;;;;;-1:-1:-1;;4219:43:110;3706:563;;3650:619;:::o;8496:285::-;8558:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8558:20:110;-1:-1:-1;;;;;8611:27:110;;8590:18;8611:27;;;;;;;;;;;;8648:58;;;;-1:-1:-1;;;8648:58:110;;4584:2:180;8648:58:110;;;4566:21:180;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:180;;;4635:51;4703:18;;8648:58:110;4382:345:180;8648:58:110;8723:37;;;;:25;:37;;;;;;;8716:58;;;;;;;;;;;;8723:37;;8716:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8496:285;;;:::o;4785:2822::-;4898:18;4932:14;;:::i;:::-;5059:33;;-1:-1:-1;;;5059:33:110;;-1:-1:-1;;;;;5059:18:110;:25;;;;:33;;5085:6;;5059:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5034:20:110;;;5019:73;;;;;;5102:41;;;;-1:-1:-1;;;5102:41:110;;13022:2:180;5102:41:110;;;13004:21:180;13061:2;13041:18;;;13034:30;13100:18;13080;;;13073:46;13136:18;;5102:41:110;12820:340:180;5102:41:110;-1:-1:-1;;;;;5213:16:110;:29;;5243:28;;;;:6;:28;:::i;:::-;:41;;;;;;;:::i;:::-;5286:11;5299:10;5213:97;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5192:157;;;;-1:-1:-1;;;5192:157:110;;15884:2:180;5192:157:110;;;15866:21:180;15923:2;15903:18;;;15896:30;15962:15;15942:18;;;15935:43;15995:18;;5192:157:110;15682:337:180;5192:157:110;5432:20;;;;;5465:1;5413:40;;;:18;:40;;;;;;;-1:-1:-1;;;;;5413:40:110;:54;;:128;;-1:-1:-1;5506:20:110;;;;;5487:40;;;;:18;:40;;;;;;;-1:-1:-1;;;;;5487:40:110;5531:10;5487:54;5413:128;5392:215;;;;-1:-1:-1;;;5392:215:110;;16226:2:180;5392:215:110;;;16208:21:180;16265:2;16245:18;;;16238:30;16304:34;16284:18;;;16277:62;-1:-1:-1;;;16355:18:180;;;16348:38;16403:19;;5392:215:110;16024:404:180;5392:215:110;-1:-1:-1;;;;;5677:16:110;:34;;5712:28;;;;:6;:28;:::i;:::-;:41;;;;;;;:::i;:::-;5677:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5656:18;;;:98;;;5811:7;;5772:36;;:15;:36;:::i;:::-;:46;5764:75;;;;-1:-1:-1;;;5764:75:110;;17393:2:180;5764:75:110;;;17375:21:180;17432:2;17412:18;;;17405:30;17471:18;17451;;;17444:46;17507:18;;5764:75:110;17191:340:180;5764:75:110;-1:-1:-1;;;;;5965:16:110;:29;;5995:22;;;;:6;:22;:::i;:::-;5965:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5965:53:110;;;;;;;;;;;;:::i;:::-;5949:13;;;:69;;;6128:21;;;6153:13;6128:38;6120:67;;;;-1:-1:-1;;;6120:67:110;;20541:2:180;6120:67:110;;;20523:21:180;20580:2;20560:18;;;20553:30;20619:18;20599;;;20592:46;20655:18;;6120:67:110;20339:340:180;6120:67:110;6254:13;;;;:24;;;6248:38;:43;6240:83;;;;-1:-1:-1;;;6240:83:110;;20886:2:180;6240:83:110;;;20868:21:180;20925:2;20905:18;;;20898:30;20964:29;20944:18;;;20937:57;21011:18;;6240:83:110;20684:351:180;6240:83:110;6389:34;-1:-1:-1;;;;;6426:16:110;:33;;6460:22;;;;:6;:22;:::i;:::-;6484:8;6426:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6426:67:110;;;;;;;;;;;;:::i;:::-;6389:104;-1:-1:-1;6814:17:110;-1:-1:-1;;;;;6845:16:110;:36;;6882:21;6814:17;6913:22;;;;:6;:22;:::i;:::-;6845:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;6845:91:110;;;;;;;;-1:-1:-1;;6845:91:110;;;;;;;;;;;;:::i;:::-;;;6841:314;;-1:-1:-1;7081:5:110;6841:314;;;7019:15;-1:-1:-1;6841:314:110;7237:20;;;;;;7223:10;7204:18;:30;;;;;;;;;;:53;;;;7286:20;;7267:40;;:18;:40;;;;;:53;;-1:-1:-1;;;;;;7267:53:110;;;;;;;7392:103;;;;;;;;;;;;;;;;;7474:18;;;;7392:103;;;;7356:20;;7330:47;;:25;:47;;;;;;:165;;;;:47;;;;:165;;:47;:165;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:110;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;7330:165:110;;;;;;;;;;-1:-1:-1;;7330:165:110;;;;;;;;;;;;;;;;;;;;;;;7542:20;;;7511:52;;7530:10;;7511:52;;-1:-1:-1;;7511:52:110;-1:-1:-1;;7580:20:110;;;;-1:-1:-1;4785:2822:110;;;;;:::o;8787:273::-;-1:-1:-1;;;;;8894:27:110;;8854:7;8894:27;;;;;;;;;;;;8931:58;;;;-1:-1:-1;;;8931:58:110;;4584:2:180;8931:58:110;;;4566:21:180;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:180;;;4635:51;4703:18;;8931:58:110;4382:345:180;8931:58:110;9006:37;;;;:25;:37;;;;;:47;;;;8787:273;-1:-1:-1;;8787:273:110:o;9066:::-;-1:-1:-1;;;;;9169:27:110;;9132:4;9169:27;;;;;;;;;;;;9206:58;;;;-1:-1:-1;;;9206:58:110;;4584:2:180;9206:58:110;;;4566:21:180;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:180;;;4635:51;4703:18;;9206:58:110;4382:345:180;9206:58:110;9281:37;;;;:25;:37;;;;;:51;;;;;;9066:273;-1:-1:-1;;9066:273:110:o;2338:25::-;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:289:180:-;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;:::-;469:53;308:220;-1:-1:-1;;;308:220:180:o;533:154::-;-1:-1:-1;;;;;612:5:180;608:54;601:5;598:65;588:93;;677:1;674;667:12;692:247;751:6;804:2;792:9;783:7;779:23;775:32;772:52;;;820:1;817;810:12;772:52;859:9;846:23;878:31;903:5;878:31;:::i;944:1698::-;1137:2;1126:9;1119:21;1100:4;1175:6;1169:13;1218:6;1213:2;1202:9;1198:18;1191:34;1248:52;1295:3;1284:9;1280:19;1266:12;1248:52;:::i;:::-;1234:66;;1349:2;1341:6;1337:15;1331:22;1421:2;1417:7;1405:9;1397:6;1393:22;1389:36;1384:2;1373:9;1369:18;1362:64;1449:41;1483:6;1467:14;1449:41;:::i;:::-;1435:55;;;1539:2;1531:6;1527:15;1521:22;1611:2;1607:7;1595:9;1587:6;1583:22;1579:36;1574:2;1563:9;1559:18;1552:64;1639:41;1673:6;1657:14;1639:41;:::i;:::-;1625:55;;;1729:2;1721:6;1717:15;1711:22;1802:2;1798:7;1786:9;1778:6;1774:22;1770:36;1764:3;1753:9;1749:19;1742:65;1830:41;1864:6;1848:14;1830:41;:::i;:::-;1816:55;;;1920:3;1912:6;1908:16;1902:23;1994:2;1990:7;1978:9;1970:6;1966:22;1962:36;1956:3;1945:9;1941:19;1934:65;2022:41;2056:6;2040:14;2022:41;:::i;:::-;2008:55;;;2112:3;2104:6;2100:16;2094:23;2186:2;2182:7;2170:9;2162:6;2158:22;2154:36;2148:3;2137:9;2133:19;2126:65;2214:41;2248:6;2232:14;2214:41;:::i;:::-;2200:55;;;2304:3;2296:6;2292:16;2286:23;2378:2;2374:7;2362:9;2354:6;2350:22;2346:36;2340:3;2329:9;2325:19;2318:65;2406:41;2440:6;2424:14;2406:41;:::i;:::-;2392:55;;;2496:3;2488:6;2484:16;2478:23;2573:2;2569:7;2557:9;2549:6;2545:22;2541:36;2532:6;2521:9;2517:22;2510:68;2595:41;2629:6;2613:14;2595:41;:::i;:::-;2587:49;944:1698;-1:-1:-1;;;;;944:1698:180:o;2905:118::-;2991:5;2984:13;2977:21;2970:5;2967:32;2957:60;;3013:1;3010;3003:12;3028:533;3137:6;3145;3198:2;3186:9;3177:7;3173:23;3169:32;3166:52;;;3214:1;3211;3204:12;3166:52;3254:9;3241:23;3287:18;3279:6;3276:30;3273:50;;;3319:1;3316;3309:12;3273:50;3342:22;;3398:3;3380:16;;;3376:26;3373:46;;;3415:1;3412;3405:12;3373:46;3438:2;-1:-1:-1;3490:2:180;3475:18;;3462:32;3503:28;3462:32;3503:28;:::i;:::-;3550:5;3540:15;;;3028:533;;;;;:::o;5136:380::-;5215:1;5211:12;;;;5258;;;5279:61;;5333:4;5325:6;5321:17;5311:27;;5279:61;5386:2;5378:6;5375:14;5355:18;5352:38;5349:161;;5432:10;5427:3;5423:20;5420:1;5413:31;5467:4;5464:1;5457:15;5495:4;5492:1;5485:15;5349:161;;5136:380;;;:::o;5820:127::-;5881:10;5876:3;5872:20;5869:1;5862:31;5912:4;5909:1;5902:15;5936:4;5933:1;5926:15;6078:518;6180:2;6175:3;6172:11;6169:421;;;6216:5;6213:1;6206:16;6260:4;6257:1;6247:18;6330:2;6318:10;6314:19;6311:1;6307:27;6301:4;6297:38;6366:4;6354:10;6351:20;6348:47;;;-1:-1:-1;6389:4:180;6348:47;6444:2;6439:3;6435:12;6432:1;6428:20;6422:4;6418:31;6408:41;;6499:81;6517:2;6510:5;6507:13;6499:81;;;6576:1;6562:16;;6543:1;6532:13;6499:81;;;6503:3;;6169:421;6078:518;;;:::o;6772:1299::-;6898:3;6892:10;6925:18;6917:6;6914:30;6911:56;;;6947:18;;:::i;:::-;6976:97;7066:6;7026:38;7058:4;7052:11;7026:38;:::i;:::-;7020:4;6976:97;:::i;:::-;7122:4;7153:2;7142:14;;7170:1;7165:649;;;;7858:1;7875:6;7872:89;;;-1:-1:-1;7927:19:180;;;7921:26;7872:89;-1:-1:-1;;6729:1:180;6725:11;;;6721:24;6717:29;6707:40;6753:1;6749:11;;;6704:57;7974:81;;7135:930;;7165:649;6025:1;6018:14;;;6062:4;6049:18;;-1:-1:-1;;7201:20:180;;;7319:222;7333:7;7330:1;7327:14;7319:222;;;7415:19;;;7409:26;7394:42;;7522:4;7507:20;;;;7475:1;7463:14;;;;7349:12;7319:222;;;7323:3;7569:6;7560:7;7557:19;7554:201;;;7630:19;;;7624:26;-1:-1:-1;;7713:1:180;7709:14;;;7725:3;7705:24;7701:37;7697:42;7682:58;7667:74;;7554:201;-1:-1:-1;;;;7801:1:180;7785:14;;;7781:22;7768:36;;-1:-1:-1;6772:1299:180:o;8076:500::-;8134:5;8141:6;8201:3;8188:17;8287:2;8283:7;8272:8;8256:14;8252:29;8248:43;8228:18;8224:68;8214:96;;8306:1;8303;8296:12;8214:96;8334:33;;8438:4;8425:18;;;-1:-1:-1;8386:21:180;;-1:-1:-1;8466:18:180;8455:30;;8452:50;;;8498:1;8495;8488:12;8452:50;8545:6;8529:14;8525:27;8518:5;8514:39;8511:59;;;8566:1;8563;8556:12;8511:59;8076:500;;;;;:::o;8581:266::-;8669:6;8664:3;8657:19;8721:6;8714:5;8707:4;8702:3;8698:14;8685:43;-1:-1:-1;8773:1:180;8748:16;;;8766:4;8744:27;;;8737:38;;;;8829:2;8808:15;;;-1:-1:-1;;8804:29:180;8795:39;;;8791:50;;8581:266::o;8852:358::-;8952:6;8947:3;8940:19;8922:3;8982:66;8974:6;8971:78;8968:98;;;9062:1;9059;9052:12;8968:98;9098:6;9095:1;9091:14;9150:8;9143:5;9136:4;9131:3;9127:14;9114:45;9179:18;;;;9199:4;9175:29;;8852:358;-1:-1:-1;;;8852:358:180:o;9215:299::-;9288:5;9347:3;9334:17;9433:3;9429:8;9418;9402:14;9398:29;9394:44;9374:18;9370:69;9360:97;;9453:1;9450;9443:12;9360:97;9475:33;;;;9215:299;-1:-1:-1;;9215:299:180:o;9519:752::-;9627:5;9614:19;9609:3;9602:32;9584:3;9677:55;9726:4;9719:5;9715:16;9708:5;9677:55;:::i;:::-;9764:4;9757;9752:3;9748:14;9741:28;9790:69;9853:4;9848:3;9844:14;9830:12;9816;9790:69;:::i;:::-;9778:81;;;9906:55;9955:4;9948:5;9944:16;9937:5;9906:55;:::i;:::-;10003:3;9997:4;9993:14;9986:4;9981:3;9977:14;9970:38;10031:63;10089:4;10073:14;10057;10031:63;:::i;:::-;10017:77;;;;10142:4;10135:5;10131:16;10118:30;10157;10179:7;10157:30;:::i;:::-;10233:7;10226:15;10219:23;10212:4;10207:3;10203:14;10196:47;;10259:6;10252:13;;;9519:752;;;;:::o;10276:2067::-;10491:2;10473:21;;;10535:20;;10571:18;;;10564:33;10454:4;;10645:15;;10632:29;10712:14;10708:27;;;-1:-1:-1;;10704:41:180;10680:66;;10670:94;;10760:1;10757;10750:12;10670:94;10855:4;10850:2;10835:18;;10828:32;10788:31;;10905:21;;10957:3;10942:19;;10935:36;11014:57;11067:2;11054:16;;10788:31;11014:57;:::i;:::-;11108:4;11102:3;11091:9;11087:19;11080:33;11136:74;11205:3;11194:9;11190:19;11176:12;11162;11136:74;:::i;:::-;11122:88;;;11273:2;11264:7;11260:16;11247:30;11360:2;11356:7;11346;11330:14;11326:28;11322:42;11300:20;11296:69;11286:97;;11379:1;11376;11369:12;11286:97;11522:2;11407:34;;11509:16;;;;11464:21;11548:18;11537:30;;11534:50;;;11580:1;11577;11570:12;11534:50;11636:6;11633:1;11629:14;11613;11609:35;11600:7;11596:49;11593:69;;;11658:1;11655;11648:12;11593:69;11703:22;;;-1:-1:-1;;11699:37:180;11693:3;11678:19;;11671:66;11757:62;11707:6;11804;11795:7;11757:62;:::i;:::-;11746:73;;;;11866:55;11917:2;11909:6;11905:15;11897:6;11866:55;:::i;:::-;11963:19;;;-1:-1:-1;;11959:33:180;11952:4;11937:20;;11930:63;12016:62;11967:3;12058:14;12042;12016:62;:::i;:::-;12002:76;;;;12109:72;12175:4;12167:6;12163:17;12155:6;12109:72;:::i;:::-;12223:22;;;-1:-1:-1;;12219:36:180;12212:4;12197:20;;12190:66;12273:64;12227:6;12314:14;12273:64;:::i;12348:467::-;12460:6;12468;12476;12529:2;12517:9;12508:7;12504:23;12500:32;12497:52;;;12545:1;12542;12535:12;12497:52;12577:9;12571:16;12596:28;12618:5;12596:28;:::i;:::-;12688:2;12673:18;;12667:25;12737:2;12722:18;;12716:25;12643:5;;-1:-1:-1;12667:25:180;-1:-1:-1;12750:33:180;12716:25;12750:33;:::i;:::-;12802:7;12792:17;;;12348:467;;;;;:::o;13165:339::-;13273:4;13331:11;13318:25;13425:2;13421:7;13410:8;13394:14;13390:29;13386:43;13366:18;13362:68;13352:96;;13444:1;13441;13434:12;13352:96;13465:33;;;;;13165:339;-1:-1:-1;;13165:339:180:o;13509:545::-;13602:4;13608:6;13668:11;13655:25;13762:2;13758:7;13747:8;13731:14;13727:29;13723:43;13703:18;13699:68;13689:96;;13781:1;13778;13771:12;13689:96;13808:33;;13860:20;;;-1:-1:-1;13903:18:180;13892:30;;13889:50;;;13935:1;13932;13925:12;13889:50;13968:4;13956:17;;-1:-1:-1;14019:1:180;14015:14;;;13999;13995:35;13985:46;;13982:66;;;14044:1;14041;14034:12;14059:739;14109:3;14150:5;14144:12;14179:36;14205:9;14179:36;:::i;:::-;14224:19;;;14274:1;14259:17;;14285:150;;;;14449:1;14444:348;;;;14252:540;;14285:150;14348:3;14344:8;14333:9;14329:24;14322:4;14317:3;14313:14;14306:48;14420:4;14408:6;14401:14;14394:22;14391:1;14387:30;14382:3;14378:40;14374:51;14367:58;;14285:150;;14444:348;14475:5;14472:1;14465:16;14522:4;14519:1;14509:18;14549:1;14563:177;14577:6;14574:1;14571:13;14563:177;;;14674:7;14668:14;14661:4;14657:1;14652:3;14648:11;14644:22;14637:46;14724:1;14715:7;14711:15;14700:26;;14599:4;14596:1;14592:12;14587:17;;14563:177;;;14764:11;;14777:4;14760:22;;-1:-1:-1;;14252:540:180;;;;14059:739;;;;:::o;14803:624::-;15082:2;15071:9;15064:21;15045:4;15108:73;15177:2;15166:9;15162:18;15154:6;15146;15108:73;:::i;:::-;15229:9;15221:6;15217:22;15212:2;15201:9;15197:18;15190:50;15263:41;15297:6;15289;15263:41;:::i;:::-;15249:55;;15352:9;15344:6;15340:22;15335:2;15324:9;15320:18;15313:50;15380:41;15414:6;15406;15380:41;:::i;:::-;15372:49;14803:624;-1:-1:-1;;;;;;;14803:624:180:o;15432:245::-;15499:6;15552:2;15540:9;15531:7;15527:23;15523:32;15520:52;;;15568:1;15565;15558:12;15520:52;15600:9;15594:16;15619:28;15641:5;15619:28;:::i;16433:288::-;16622:2;16611:9;16604:21;16585:4;16642:73;16711:2;16700:9;16696:18;16688:6;16680;16642:73;:::i;:::-;16634:81;16433:288;-1:-1:-1;;;;16433:288:180:o;16726:230::-;16796:6;16849:2;16837:9;16828:7;16824:23;16820:32;16817:52;;;16865:1;16862;16855:12;16817:52;-1:-1:-1;16910:16:180;;16726:230;-1:-1:-1;16726:230:180:o;16961:225::-;17028:9;;;17049:11;;;17046:134;;;17102:10;17097:3;17093:20;17090:1;17083:31;17137:4;17134:1;17127:15;17165:4;17162:1;17155:15;17536:521;17613:4;17619:6;17679:11;17666:25;17773:2;17769:7;17758:8;17742:14;17738:29;17734:43;17714:18;17710:68;17700:96;;17792:1;17789;17782:12;17700:96;17819:33;;17871:20;;;-1:-1:-1;17914:18:180;17903:30;;17900:50;;;17946:1;17943;17936:12;17900:50;17979:4;17967:17;;-1:-1:-1;18010:14:180;18006:27;;;17996:38;;17993:58;;;18047:1;18044;18037:12;18062:244;18219:2;18208:9;18201:21;18182:4;18239:61;18296:2;18285:9;18281:18;18273:6;18265;18239:61;:::i;18311:250::-;18378:2;18372:9;18420:6;18408:19;;18457:18;18442:34;;18478:22;;;18439:62;18436:88;;;18504:18;;:::i;:::-;18540:2;18533:22;18311:250;:::o;18566:743::-;18620:5;18673:3;18666:4;18658:6;18654:17;18650:27;18640:55;;18691:1;18688;18681:12;18640:55;18724:6;18718:13;18754:18;18746:6;18743:30;18740:56;;;18776:18;;:::i;:::-;18845:2;18839:9;18937:2;18899:17;;-1:-1:-1;;18895:31:180;;;18928:2;18891:40;18887:54;18875:67;;18972:18;18957:34;;18993:22;;;18954:62;18951:88;;;19019:18;;:::i;:::-;19055:2;19048:22;19079;;;19120:19;;;19141:4;19116:30;19113:39;-1:-1:-1;19110:59:180;;;19165:1;19162;19155:12;19110:59;19222:6;19215:4;19207:6;19203:17;19196:4;19188:6;19184:17;19178:51;19277:1;19249:19;;;19270:4;19245:30;19238:41;;;;19253:6;18566:743;-1:-1:-1;;;18566:743:180:o;19314:1020::-;19412:6;19465:2;19453:9;19444:7;19440:23;19436:32;19433:52;;;19481:1;19478;19471:12;19433:52;19514:9;19508:16;19547:18;19539:6;19536:30;19533:50;;;19579:1;19576;19569:12;19533:50;19602:22;;19658:4;19640:16;;;19636:27;19633:47;;;19676:1;19673;19666:12;19633:47;19729:2;19723:9;19771:4;19759:17;;19806:18;19791:34;;19827:22;;;19788:62;19785:88;;;19853:18;;:::i;:::-;19889:2;19882:22;19926:9;;19944:31;19926:9;19944:31;:::i;:::-;19984:21;;20064:2;20056:11;;;20050:18;20084:15;;;20077:32;20148:2;20140:11;;20134:18;20177;20164:32;;20161:52;;;20209:1;20206;20199:12;20161:52;20246:56;20294:7;20283:8;20279:2;20275:17;20246:56;:::i;:::-;20241:2;20229:15;;20222:81;-1:-1:-1;20233:6:180;19314:1020;-1:-1:-1;;;;19314:1020:180:o;21040:325::-;21219:2;21208:9;21201:21;21182:4;21239:61;21296:2;21285:9;21281:18;21273:6;21265;21239:61;:::i;:::-;21231:69;;21350:6;21343:14;21336:22;21331:2;21320:9;21316:18;21309:50;21040:325;;;;;;:::o;21370:1975::-;21472:6;21525:2;21513:9;21504:7;21500:23;21496:32;21493:52;;;21541:1;21538;21531:12;21493:52;21574:9;21568:16;21607:18;21599:6;21596:30;21593:50;;;21639:1;21636;21629:12;21593:50;21662:22;;21718:6;21700:16;;;21696:29;21693:49;;;21738:1;21735;21728:12;21693:49;21764:17;;:::i;:::-;21812:2;21806:9;21840:18;21830:8;21827:32;21824:52;;;21872:1;21869;21862:12;21824:52;21899:56;21947:7;21936:8;21932:2;21928:17;21899:56;:::i;:::-;21892:5;21885:71;;21995:2;21991;21987:11;21981:18;22024;22014:8;22011:32;22008:52;;;22056:1;22053;22046:12;22008:52;22092:56;22140:7;22129:8;22125:2;22121:17;22092:56;:::i;:::-;22087:2;22080:5;22076:14;22069:80;;22188:2;22184;22180:11;22174:18;22217;22207:8;22204:32;22201:52;;;22249:1;22246;22239:12;22201:52;22285:56;22333:7;22322:8;22318:2;22314:17;22285:56;:::i;:::-;22280:2;22273:5;22269:14;22262:80;;22381:2;22377;22373:11;22367:18;22410;22400:8;22397:32;22394:52;;;22442:1;22439;22432:12;22394:52;22478:56;22526:7;22515:8;22511:2;22507:17;22478:56;:::i;:::-;22473:2;22466:5;22462:14;22455:80;;22574:3;22570:2;22566:12;22560:19;22604:18;22594:8;22591:32;22588:52;;;22636:1;22633;22626:12;22588:52;22673:56;22721:7;22710:8;22706:2;22702:17;22673:56;:::i;:::-;22667:3;22660:5;22656:15;22649:81;;22769:3;22765:2;22761:12;22755:19;22799:18;22789:8;22786:32;22783:52;;;22831:1;22828;22821:12;22783:52;22868:56;22916:7;22905:8;22901:2;22897:17;22868:56;:::i;:::-;22862:3;22855:5;22851:15;22844:81;;22964:3;22960:2;22956:12;22950:19;22994:18;22984:8;22981:32;22978:52;;;23026:1;23023;23016:12;22978:52;23063:56;23111:7;23100:8;23096:2;23092:17;23063:56;:::i;:::-;23057:3;23050:5;23046:15;23039:81;;23159:3;23155:2;23151:12;23145:19;23189:18;23179:8;23176:32;23173:52;;;23221:1;23218;23211:12;23173:52;23258:56;23306:7;23295:8;23291:2;23287:17;23258:56;:::i;:::-;23252:3;23241:15;;23234:81;-1:-1:-1;23245:5:180;21370:1975;-1:-1:-1;;;;21370:1975:180:o;23350:215::-;23436:1;23429:5;23426:12;23416:143;;23481:10;23476:3;23472:20;23469:1;23462:31;23516:4;23513:1;23506:15;23544:4;23541:1;23534:15;23570:513;23788:43;23824:6;23788:43;:::i;:::-;23858:6;23847:9;23840:25;23874:43;23910:6;23874:43;:::i;:::-;23953:6;23948:2;23937:9;23933:18;23926:34;23996:2;23991;23980:9;23976:18;23969:30;23769:4;24016:61;24073:2;24062:9;24058:18;24050:6;24042;24016:61;:::i;:::-;24008:69;23570:513;-1:-1:-1;;;;;;23570:513:180:o","linkReferences":{},"immutableReferences":{"68517":[{"start":435,"length":32},{"start":3095,"length":32}],"68520":[{"start":285,"length":32},{"start":3309,"length":32},{"start":3718,"length":32},{"start":3982,"length":32},{"start":4313,"length":32},{"start":4472,"length":32}]}},"methodIdentifiers":{"deleteProof()":"1e084f25","getDisclosed(address)":"3eca794d","getIsFacematched(address)":"c1ad863c","getProofTimestamp(address)":"b282a29a","mockAddDisclosedData(address)":"1fb3ed3f","registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)":"7d3788e1","validDomain()":"c47ca04c","validScope()":"1f4a2f59","zkPassportHelper()":"69744c62","zkPassportVerifier()":"c4797ec5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zkPassportVerifier\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zkPassportHelper\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_domain\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_scope\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAccount\",\"type\":\"address\"}],\"name\":\"IdentityDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"IdentityRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"deleteProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDisclosed\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"issuingCountry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nationality\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gender\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"birthDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"expiryDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"documentNumber\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"documentType\",\"type\":\"string\"}],\"internalType\":\"struct DisclosedData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getIsFacematched\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getProofTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"mockAddDisclosedData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"publicInputs\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct ProofVerificationData\",\"name\":\"proofVerificationData\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"validityPeriodInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"domain\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"devMode\",\"type\":\"bool\"}],\"internalType\":\"struct ServiceConfig\",\"name\":\"serviceConfig\",\"type\":\"tuple\"}],\"internalType\":\"struct ProofVerificationParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isIDCard\",\"type\":\"bool\"}],\"name\":\"registerProof\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validDomain\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validScope\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zkPassportHelper\",\"outputs\":[{\"internalType\":\"contract IZKPassportHelper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zkPassportVerifier\",\"outputs\":[{\"internalType\":\"contract IZKPassportVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)\":{\"params\":{\"isIDCard\":\"A boolean indicating if the proof is for an ID card.\",\"params\":\"The proof verification parameters from ZKPassport SDK.\"},\"returns\":{\"identifier\":\"The unique identifier of the passport.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)\":{\"notice\":\"Verify a ZKPassport proof and register the identity and disclosed data.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/addons/helpers/ZKPassport_PowersRegistry.sol\":\"ZKPassport_PowersRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@solady/=lib/solady/src/\",\":@solbase/=lib/solbase/src/\",\":@src/=src/\",\":@zkpassport/circuits/=lib/circuits/src/solidity/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol\":{\"keccak256\":\"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6\",\"dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj\"]},\"src/addons/helpers/ZKPassport_PowersRegistry.sol\":{\"keccak256\":\"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6\",\"dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K\"]},\"src/interfaces/IZKPassport.sol\":{\"keccak256\":\"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588\",\"dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_zkPassportVerifier","type":"address"},{"internalType":"address","name":"_zkPassportHelper","type":"address"},{"internalType":"string","name":"_domain","type":"string"},{"internalType":"string","name":"_scope","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32","indexed":true},{"internalType":"address","name":"oldAccount","type":"address","indexed":true}],"type":"event","name":"IdentityDeleted","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bytes32","name":"identifier","type":"bytes32","indexed":true}],"type":"event","name":"IdentityRegistered","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteProof"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getDisclosed","outputs":[{"internalType":"struct DisclosedData","name":"","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getIsFacematched","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getProofTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mockAddDisclosedData"},{"inputs":[{"internalType":"struct ProofVerificationParams","name":"params","type":"tuple","components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple","components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}]},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple","components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}]}]},{"internalType":"bool","name":"isIDCard","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"registerProof","outputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validDomain","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validScope","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zkPassportHelper","outputs":[{"internalType":"contract IZKPassportHelper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zkPassportVerifier","outputs":[{"internalType":"contract IZKPassportVerifier","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)":{"params":{"isIDCard":"A boolean indicating if the proof is for an ID card.","params":"The proof verification parameters from ZKPassport SDK."},"returns":{"identifier":"The unique identifier of the passport."}}},"version":1},"userdoc":{"kind":"user","methods":{"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)":{"notice":"Verify a ZKPassport proof and register the identity and disclosed data."}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@solady/=lib/solady/src/","@solbase/=lib/solbase/src/","@src/=src/","@zkpassport/circuits/=lib/circuits/src/solidity/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/addons/helpers/ZKPassport_PowersRegistry.sol":"ZKPassport_PowersRegistry"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol":{"keccak256":"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c","urls":["bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6","dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj"],"license":"Apache-2.0"},"src/addons/helpers/ZKPassport_PowersRegistry.sol":{"keccak256":"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2","urls":["bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6","dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K"],"license":"MIT"},"src/interfaces/IZKPassport.sol":{"keccak256":"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141","urls":["bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588","dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q"],"license":"MIT"}},"version":1},"id":110} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_zkPassportVerifier","type":"address","internalType":"address"},{"name":"_zkPassportHelper","type":"address","internalType":"address"},{"name":"_domain","type":"string","internalType":"string"},{"name":"_scope","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteProof","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDisclosed","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct DisclosedData","components":[{"name":"name","type":"string","internalType":"string"},{"name":"issuingCountry","type":"string","internalType":"string"},{"name":"nationality","type":"string","internalType":"string"},{"name":"gender","type":"string","internalType":"string"},{"name":"birthDate","type":"string","internalType":"string"},{"name":"expiryDate","type":"string","internalType":"string"},{"name":"documentNumber","type":"string","internalType":"string"},{"name":"documentType","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getIsFacematched","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getProofTimestamp","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mockAddDisclosedData","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerProof","inputs":[{"name":"params","type":"tuple","internalType":"struct ProofVerificationParams","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"proofVerificationData","type":"tuple","internalType":"struct ProofVerificationData","components":[{"name":"vkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"},{"name":"publicInputs","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"committedInputs","type":"bytes","internalType":"bytes"},{"name":"serviceConfig","type":"tuple","internalType":"struct ServiceConfig","components":[{"name":"validityPeriodInSeconds","type":"uint256","internalType":"uint256"},{"name":"domain","type":"string","internalType":"string"},{"name":"scope","type":"string","internalType":"string"},{"name":"devMode","type":"bool","internalType":"bool"}]}]},{"name":"isIDCard","type":"bool","internalType":"bool"}],"outputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"validDomain","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"validScope","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"zkPassportHelper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IZKPassportHelper"}],"stateMutability":"view"},{"type":"function","name":"zkPassportVerifier","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IZKPassportVerifier"}],"stateMutability":"view"},{"type":"event","name":"IdentityDeleted","inputs":[{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"oldAccount","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"IdentityRegistered","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x60c060405234801561000f575f5ffd5b506040516123df3803806123df83398101604081905261002e91610176565b6001600160a01b0384166100885760405162461bcd60e51b815260206004820181905260248201527f5a4b50617373706f72743a20496e76616c6964207a65726f2061646472657373604482015260640160405180910390fd5b6001600160a01b03808516608052831660a05260036100a78382610280565b5060046100b48282610280565b505050505061033a565b80516001600160a01b03811681146100d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126100fc575f5ffd5b81516001600160401b03811115610115576101156100d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610143576101436100d9565b60405281815283820160200185101561015a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f60808587031215610189575f5ffd5b610192856100be565b93506101a0602086016100be565b60408601519093506001600160401b038111156101bb575f5ffd5b6101c7878288016100ed565b606087015190935090506001600160401b038111156101e4575f5ffd5b6101f0878288016100ed565b91505092959194509250565b600181811c9082168061021057607f821691505b60208210810361022e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561027b57805f5260205f20601f840160051c810160208510156102595750805b601f840160051c820191505b81811015610278575f8155600101610265565b50505b505050565b81516001600160401b03811115610299576102996100d9565b6102ad816102a784546101fc565b84610234565b6020601f8211600181146102df575f83156102c85750848201515b5f19600385901b1c1916600184901b178455610278565b5f84815260208120601f198516915b8281101561030e57878501518255602094850194600190920191016102ee565b508482101561032b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05161205a6103855f395f818161011d01528181610ced01528181610e8601528181610f8e015281816110d9015261117801525f81816101b30152610c17015261205a5ff3fe608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c80637d3788e111610072578063c1ad863c11610058578063c1ad863c1461018b578063c4797ec5146101ae578063c47ca04c146101d5575f5ffd5b80637d3788e114610157578063b282a29a14610178575f5ffd5b80631fb3ed3f116100a25780631fb3ed3f146100e55780633eca794d146100f857806369744c6214610118575f5ffd5b80631e084f25146100bd5780631f4a2f59146100c7575b5f5ffd5b6100c56101dd565b005b6100cf610386565b6040516100dc919061154e565b60405180910390f35b6100c56100f336600461157b565b610412565b61010b61010636600461157b565b6106b2565b6040516100dc9190611596565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100dc565b61016a61016536600461169b565b610bf7565b6040519081526020016100dc565b61016a61018636600461157b565b611379565b61019e61019936600461157b565b6113ed565b60405190151581526020016100dc565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6100cf611464565b335f90815260208190526040902054806102365760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b60448201526064015b60405180910390fd5b5f818152600160205260409020546001600160a01b031633146102a75760405162461bcd60e51b815260206004820152602360248201527f4964656e746966696572206e6f74207265676973746572656420746f2063616c6044820152623632b960e91b606482015260840161022d565b335f908152602081815260408083208390558383526001825280832080546001600160a01b0319169055600290915281209081816102e58282611471565b6102f2600183015f611471565b6102ff600283015f611471565b61030c600383015f611471565b610319600483015f611471565b610326600583015f611471565b610333600683015f611471565b610340600783015f611471565b50505060088101805460ff191690555f6009909101819055604051339183917ff7fef2e356b5886f568a2120b6c085fa74aa83fbc2b95ee716167c22e9dc32059190a350565b60048054610393906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906116ee565b801561040a5780601f106103e15761010080835404028352916020019161040a565b820191905f5260205f20905b8154815290600101906020018083116103ed57829003601f168201915b505050505081565b6040516bffffffffffffffffffffffff19606083901b1660208201524260348201525f9060540160408051601f1981840301815282825280516020918201206001600160a01b0386165f818152808452848120839055828152600180855285822080546001600160a01b03191690931790925561014086018552600a6101008701818152694d6f636b20456e74727960b01b61012089015287528551808701875260038082526223a12960e91b828801819052898801929092528751808901895290815280870191909152878701528551808701875260048152634d616c6560e01b818701526060808901919091528651808801885282815269313939302d30312d303160b01b8188015260808901528651808801885291825269323033302d30312d303160b01b8287015260a088019190915285518087018752600981526831323334353637383960b81b8187015260c088015285518087018752600881526714185cdcdc1bdc9d60c21b8187015260e088015285519081018652868152808501929092524282860152828152600290935292909120825180519295509091829081906105c09082611786565b50602082015160018201906105d59082611786565b50604082015160028201906105ea9082611786565b50606082015160038201906105ff9082611786565b50608082015160048201906106149082611786565b5060a082015160058201906106299082611786565b5060c0820151600682019061063e9082611786565b5060e082015160078201906106539082611786565b505050602082015160088201805460ff19169115159190911790556040918201516009909101555182906001600160a01b038516907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a3505050565b6106fa60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0382165f90815260208190526040902054806107575760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f81815260026020526040908190208151610100810190925280548290829061077f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab906116ee565b80156107f65780601f106107cd576101008083540402835291602001916107f6565b820191905f5260205f20905b8154815290600101906020018083116107d957829003601f168201915b5050505050815260200160018201805461080f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461083b906116ee565b80156108865780601f1061085d57610100808354040283529160200191610886565b820191905f5260205f20905b81548152906001019060200180831161086957829003601f168201915b5050505050815260200160028201805461089f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb906116ee565b80156109165780601f106108ed57610100808354040283529160200191610916565b820191905f5260205f20905b8154815290600101906020018083116108f957829003601f168201915b5050505050815260200160038201805461092f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461095b906116ee565b80156109a65780601f1061097d576101008083540402835291602001916109a6565b820191905f5260205f20905b81548152906001019060200180831161098957829003601f168201915b505050505081526020016004820180546109bf906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546109eb906116ee565b8015610a365780601f10610a0d57610100808354040283529160200191610a36565b820191905f5260205f20905b815481529060010190602001808311610a1957829003601f168201915b50505050508152602001600582018054610a4f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b906116ee565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b50505050508152602001600682018054610adf906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b906116ee565b8015610b565780601f10610b2d57610100808354040283529160200191610b56565b820191905f5260205f20905b815481529060010190602001808311610b3957829003601f168201915b50505050508152602001600782018054610b6f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b906116ee565b8015610be65780601f10610bbd57610100808354040283529160200191610be6565b820191905f5260205f20905b815481529060010190602001808311610bc957829003601f168201915b505050505081525050915050919050565b5f610c006114ab565b60405163578bd92160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063578bd92190610c4c908790600401611987565b6060604051808303815f875af1158015610c68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8c9190611a89565b5060208301521515808252610ce35760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320696e76616c696400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663847755e3610d1f6020870187611ac9565b610d2d906040810190611ae7565b600360046040518563ffffffff1660e01b8152600401610d509493929190611bac565b602060405180830381865afa158015610d6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611bf0565b610ddb5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642073636f706500000000000000000000000000000000000000604482015260640161022d565b6020808201515f908152600190915260409020546001600160a01b03161580610e1f57506020808201515f908152600190915260409020546001600160a01b031633145b610e7c5760405162461bcd60e51b815260206004820152602860248201527f494420616c7265616479207265676973746572656420746f20616e6f74686572604482015267081858d8dbdd5b9d60c21b606482015260840161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d14df298610eb86020870187611ac9565b610ec6906040810190611ae7565b6040518363ffffffff1660e01b8152600401610ee3929190611c0b565b602060405180830381865afa158015610efe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190611c26565b60408201819052610e1090610f379042611c3d565b10610f845760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320746f6f206f6c6400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630af18ba6610fc06040870187611c5c565b6040518363ffffffff1660e01b8152600401610fdd929190611c9f565b5f60405180830381865afa158015610ff7573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261101e9190810190611d67565b606082018190526020015146146110775760405162461bcd60e51b815260206004820152601060248201527f496e76616c696420636861696e20696400000000000000000000000000000000604482015260640161022d565b60608101516040015151156110ce5760405162461bcd60e51b815260206004820152601b60248201527f437573746f6d20646174612073686f756c6420626520656d7074790000000000604482015260640161022d565b5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166303d37eae61110b6040880188611c5c565b876040518463ffffffff1660e01b815260040161112a93929190611e0e565b5f60405180830381865afa158015611144573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261116b9190810190611e33565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016638e96bc896001836111ad60408b018b611c5c565b6040518563ffffffff1660e01b81526004016111cc9493929190611fe9565b602060405180830381865afa925050508015611205575060408051601f3d908101601f1916820190925261120291810190611bf0565b60015b61121057505f611213565b90505b60208084018051335f818152808552604080822093909355835181526001855282812080546001600160a01b031916909217909155815160608101835286815285151581860152828801518184015292518152600290935290912081518051829081906112809082611786565b50602082015160018201906112959082611786565b50604082015160028201906112aa9082611786565b50606082015160038201906112bf9082611786565b50608082015160048201906112d49082611786565b5060a082015160058201906112e99082611786565b5060c082015160068201906112fe9082611786565b5060e082015160078201906113139082611786565b50505060208281015160088301805460ff1916911515919091179055604092830151600990920191909155840151905133907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a350506020015190505b92915050565b6001600160a01b0381165f90815260208190526040812054806113d65760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206009015492915050565b6001600160a01b0381165f908152602081905260408120548061144a5760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206008015460ff1692915050565b60038054610393906116ee565b50805461147d906116ee565b5f825580601f1061148c575050565b601f0160209004905f5260205f20908101906114a89190611508565b50565b6040518060c001604052805f151581526020015f81526020015f81526020016114f560405180606001604052805f6001600160a01b031681526020015f8152602001606081525090565b81525f6020820181905260409091015290565b5b8082111561151c575f8155600101611509565b5090565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115606020830184611520565b9392505050565b6001600160a01b03811681146114a8575f5ffd5b5f6020828403121561158b575f5ffd5b813561156081611567565b602081525f825161010060208401526115b3610120840182611520565b90506020840151601f198483030160408501526115d08282611520565b9150506040840151601f198483030160608501526115ee8282611520565b9150506060840151601f1984830301608085015261160c8282611520565b9150506080840151601f198483030160a085015261162a8282611520565b91505060a0840151601f198483030160c08501526116488282611520565b91505060c0840151601f198483030160e08501526116668282611520565b91505060e0840151601f19848303016101008501526116858282611520565b95945050505050565b80151581146114a8575f5ffd5b5f5f604083850312156116ac575f5ffd5b823567ffffffffffffffff8111156116c2575f5ffd5b8301608081860312156116d3575f5ffd5b915060208301356116e38161168e565b809150509250929050565b600181811c9082168061170257607f821691505b60208210810361172057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561178157805f5260205f20601f840160051c8101602085101561175f5750805b601f840160051c820191505b8181101561177e575f815560010161176b565b50505b505050565b815167ffffffffffffffff8111156117a0576117a0611726565b6117b4816117ae84546116ee565b8461173a565b6020601f8211600181146117e6575f83156117cf5750848201515b5f19600385901b1c1916600184901b17845561177e565b5f84815260208120601f198516915b8281101561181557878501518255602094850194600190920191016117f5565b508482101561183257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8335601e19843603018112611856575f5ffd5b830160208101925035905067ffffffffffffffff811115611875575f5ffd5b803603821315611883575f5ffd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156118e2575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8235607e1983360301811261190f575f5ffd5b90910192915050565b803582525f61192a6020830183611841565b6080602086015261193f60808601828461188a565b91505061194f6040840184611841565b858303604087015261196283828461188a565b9250505060608301356119748161168e565b8015156060860152508091505092915050565b60208082528235828201525f9083013536849003605e190181126119a9575f5ffd5b608060408401528301803560a08401526119c66020820182611841565b606060c08601526119dc6101008601828461188a565b9150506040820135601e198336030181126119f5575f5ffd5b60209201918201913567ffffffffffffffff811115611a12575f5ffd5b8060051b3603831315611a23575f5ffd5b848203609f190160e0860152611a3a8282856118b2565b92505050611a4b6040850185611841565b848303601f19016060860152611a6283828461188a565b92505050611a7360608501856118fb565b838203601f190160808501526116858282611918565b5f5f5f60608486031215611a9b575f5ffd5b8351611aa68161168e565b602085015160408601519194509250611abe81611567565b809150509250925092565b5f8235605e19833603018112611add575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611afc575f5ffd5b83018035915067ffffffffffffffff821115611b16575f5ffd5b6020019150600581901b3603821315611883575f5ffd5b5f8154611b39816116ee565b808552600182168015611b535760018114611b6f57611ba3565b60ff1983166020870152602082151560051b8701019350611ba3565b845f5260205f205f5b83811015611b9a5781546020828a010152600182019150602081019050611b78565b87016020019450505b50505092915050565b606081525f611bbf6060830186886118b2565b8281036020840152611bd18186611b2d565b90508281036040840152611be58185611b2d565b979650505050505050565b5f60208284031215611c00575f5ffd5b81516115608161168e565b602081525f611c1e6020830184866118b2565b949350505050565b5f60208284031215611c36575f5ffd5b5051919050565b8181038181111561137357634e487b7160e01b5f52601160045260245ffd5b5f5f8335601e19843603018112611c71575f5ffd5b83018035915067ffffffffffffffff821115611c8b575f5ffd5b602001915036819003821315611883575f5ffd5b602081525f611c1e60208301848661188a565b604051610100810167ffffffffffffffff81118282101715611cd657611cd6611726565b60405290565b5f82601f830112611ceb575f5ffd5b815167ffffffffffffffff811115611d0557611d05611726565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611d3457611d34611726565b604052818152838201602001851015611d4b575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611d77575f5ffd5b815167ffffffffffffffff811115611d8d575f5ffd5b820160608185031215611d9e575f5ffd5b6040516060810167ffffffffffffffff81118282101715611dc157611dc1611726565b6040528151611dcf81611567565b815260208281015190820152604082015167ffffffffffffffff811115611df4575f5ffd5b611e0086828501611cdc565b604083015250949350505050565b604081525f611e2160408301858761188a565b90508215156020830152949350505050565b5f60208284031215611e43575f5ffd5b815167ffffffffffffffff811115611e59575f5ffd5b82016101008185031215611e6b575f5ffd5b611e73611cb2565b815167ffffffffffffffff811115611e89575f5ffd5b611e9586828501611cdc565b825250602082015167ffffffffffffffff811115611eb1575f5ffd5b611ebd86828501611cdc565b602083015250604082015167ffffffffffffffff811115611edc575f5ffd5b611ee886828501611cdc565b604083015250606082015167ffffffffffffffff811115611f07575f5ffd5b611f1386828501611cdc565b606083015250608082015167ffffffffffffffff811115611f32575f5ffd5b611f3e86828501611cdc565b60808301525060a082015167ffffffffffffffff811115611f5d575f5ffd5b611f6986828501611cdc565b60a08301525060c082015167ffffffffffffffff811115611f88575f5ffd5b611f9486828501611cdc565b60c08301525060e082015167ffffffffffffffff811115611fb3575f5ffd5b611fbf86828501611cdc565b60e083015250949350505050565b600381106114a857634e487b7160e01b5f52602160045260245ffd5b611ff285611fcd565b848152611ffe84611fcd565b836020820152606060408201525f61201a60608301848661188a565b969550505050505056fea264697066735822122015c9fd7546339c4d0df5b37c9bd12bcfad28129d192ed11d156b17c73f0b260c64736f6c634300081e0033","sourceMap":"1010:8331:115:-:0;;;2969:407;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3096:33:115;;3092:81;;3131:42;;-1:-1:-1;;;3131:42:115;;1991:2:187;3131:42:115;;;1973:21:187;;;2010:18;;;2003:30;2069:34;2049:18;;;2042:62;2121:18;;3131:42:115;;;;;;;3092:81;-1:-1:-1;;;;;3183:61:115;;;;;3254:55;;;;3319:11;:21;3333:7;3319:11;:21;:::i;:::-;-1:-1:-1;3350:10:115;:19;3363:6;3350:10;:19;:::i;:::-;;2969:407;;;;1010:8331;;14:177:187;93:13;;-1:-1:-1;;;;;135:31:187;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:723;382:5;435:3;428:4;420:6;416:17;412:27;402:55;;453:1;450;443:12;402:55;480:13;;-1:-1:-1;;;;;505:30:187;;502:56;;;538:18;;:::i;:::-;587:2;581:9;679:2;641:17;;-1:-1:-1;;637:31:187;;;670:2;633:40;629:54;617:67;;-1:-1:-1;;;;;699:34:187;;735:22;;;696:62;693:88;;;761:18;;:::i;:::-;797:2;790:22;821;;;862:19;;;883:4;858:30;855:39;-1:-1:-1;852:59:187;;;907:1;904;897:12;852:59;964:6;957:4;949:6;945:17;938:4;930:6;926:17;920:51;1019:1;991:19;;;1012:4;987:30;980:41;;;;995:6;328:723;-1:-1:-1;;;328:723:187:o;1056:728::-;1173:6;1181;1189;1197;1250:3;1238:9;1229:7;1225:23;1221:33;1218:53;;;1267:1;1264;1257:12;1218:53;1290:40;1320:9;1290:40;:::i;:::-;1280:50;;1349:49;1394:2;1383:9;1379:18;1349:49;:::i;:::-;1442:2;1427:18;;1421:25;1339:59;;-1:-1:-1;;;;;;1458:30:187;;1455:50;;;1501:1;1498;1491:12;1455:50;1524:61;1577:7;1568:6;1557:9;1553:22;1524:61;:::i;:::-;1631:2;1616:18;;1610:25;1514:71;;-1:-1:-1;1610:25:187;-1:-1:-1;;;;;;1647:32:187;;1644:52;;;1692:1;1689;1682:12;1644:52;1715:63;1770:7;1759:8;1748:9;1744:24;1715:63;:::i;:::-;1705:73;;;1056:728;;;;;;;:::o;2150:380::-;2229:1;2225:12;;;;2272;;;2293:61;;2347:4;2339:6;2335:17;2325:27;;2293:61;2400:2;2392:6;2389:14;2369:18;2366:38;2363:161;;2446:10;2441:3;2437:20;2434:1;2427:31;2481:4;2478:1;2471:15;2509:4;2506:1;2499:15;2363:161;;2150:380;;;:::o;2661:518::-;2763:2;2758:3;2755:11;2752:421;;;2799:5;2796:1;2789:16;2843:4;2840:1;2830:18;2913:2;2901:10;2897:19;2894:1;2890:27;2884:4;2880:38;2949:4;2937:10;2934:20;2931:47;;;-1:-1:-1;2972:4:187;2931:47;3027:2;3022:3;3018:12;3015:1;3011:20;3005:4;3001:31;2991:41;;3082:81;3100:2;3093:5;3090:13;3082:81;;;3159:1;3145:16;;3126:1;3115:13;3082:81;;;3086:3;;2752:421;2661:518;;;:::o;3355:1299::-;3475:10;;-1:-1:-1;;;;;3497:30:187;;3494:56;;;3530:18;;:::i;:::-;3559:97;3649:6;3609:38;3641:4;3635:11;3609:38;:::i;:::-;3603:4;3559:97;:::i;:::-;3705:4;3736:2;3725:14;;3753:1;3748:649;;;;4441:1;4458:6;4455:89;;;-1:-1:-1;4510:19:187;;;4504:26;4455:89;-1:-1:-1;;3312:1:187;3308:11;;;3304:24;3300:29;3290:40;3336:1;3332:11;;;3287:57;4557:81;;3718:930;;3748:649;2608:1;2601:14;;;2645:4;2632:18;;-1:-1:-1;;3784:20:187;;;3902:222;3916:7;3913:1;3910:14;3902:222;;;3998:19;;;3992:26;3977:42;;4105:4;4090:20;;;;4058:1;4046:14;;;;3932:12;3902:222;;;3906:3;4152:6;4143:7;4140:19;4137:201;;;4213:19;;;4207:26;-1:-1:-1;;4296:1:187;4292:14;;;4308:3;4288:24;4284:37;4280:42;4265:58;4250:74;;4137:201;-1:-1:-1;;;;4384:1:187;4368:14;;;4364:22;4351:36;;-1:-1:-1;3355:1299:187:o;:::-;1010:8331:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c80637d3788e111610072578063c1ad863c11610058578063c1ad863c1461018b578063c4797ec5146101ae578063c47ca04c146101d5575f5ffd5b80637d3788e114610157578063b282a29a14610178575f5ffd5b80631fb3ed3f116100a25780631fb3ed3f146100e55780633eca794d146100f857806369744c6214610118575f5ffd5b80631e084f25146100bd5780631f4a2f59146100c7575b5f5ffd5b6100c56101dd565b005b6100cf610386565b6040516100dc919061154e565b60405180910390f35b6100c56100f336600461157b565b610412565b61010b61010636600461157b565b6106b2565b6040516100dc9190611596565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100dc565b61016a61016536600461169b565b610bf7565b6040519081526020016100dc565b61016a61018636600461157b565b611379565b61019e61019936600461157b565b6113ed565b60405190151581526020016100dc565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6100cf611464565b335f90815260208190526040902054806102365760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b60448201526064015b60405180910390fd5b5f818152600160205260409020546001600160a01b031633146102a75760405162461bcd60e51b815260206004820152602360248201527f4964656e746966696572206e6f74207265676973746572656420746f2063616c6044820152623632b960e91b606482015260840161022d565b335f908152602081815260408083208390558383526001825280832080546001600160a01b0319169055600290915281209081816102e58282611471565b6102f2600183015f611471565b6102ff600283015f611471565b61030c600383015f611471565b610319600483015f611471565b610326600583015f611471565b610333600683015f611471565b610340600783015f611471565b50505060088101805460ff191690555f6009909101819055604051339183917ff7fef2e356b5886f568a2120b6c085fa74aa83fbc2b95ee716167c22e9dc32059190a350565b60048054610393906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906116ee565b801561040a5780601f106103e15761010080835404028352916020019161040a565b820191905f5260205f20905b8154815290600101906020018083116103ed57829003601f168201915b505050505081565b6040516bffffffffffffffffffffffff19606083901b1660208201524260348201525f9060540160408051601f1981840301815282825280516020918201206001600160a01b0386165f818152808452848120839055828152600180855285822080546001600160a01b03191690931790925561014086018552600a6101008701818152694d6f636b20456e74727960b01b61012089015287528551808701875260038082526223a12960e91b828801819052898801929092528751808901895290815280870191909152878701528551808701875260048152634d616c6560e01b818701526060808901919091528651808801885282815269313939302d30312d303160b01b8188015260808901528651808801885291825269323033302d30312d303160b01b8287015260a088019190915285518087018752600981526831323334353637383960b81b8187015260c088015285518087018752600881526714185cdcdc1bdc9d60c21b8187015260e088015285519081018652868152808501929092524282860152828152600290935292909120825180519295509091829081906105c09082611786565b50602082015160018201906105d59082611786565b50604082015160028201906105ea9082611786565b50606082015160038201906105ff9082611786565b50608082015160048201906106149082611786565b5060a082015160058201906106299082611786565b5060c0820151600682019061063e9082611786565b5060e082015160078201906106539082611786565b505050602082015160088201805460ff19169115159190911790556040918201516009909101555182906001600160a01b038516907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a3505050565b6106fa60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b0382165f90815260208190526040902054806107575760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f81815260026020526040908190208151610100810190925280548290829061077f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab906116ee565b80156107f65780601f106107cd576101008083540402835291602001916107f6565b820191905f5260205f20905b8154815290600101906020018083116107d957829003601f168201915b5050505050815260200160018201805461080f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461083b906116ee565b80156108865780601f1061085d57610100808354040283529160200191610886565b820191905f5260205f20905b81548152906001019060200180831161086957829003601f168201915b5050505050815260200160028201805461089f906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb906116ee565b80156109165780601f106108ed57610100808354040283529160200191610916565b820191905f5260205f20905b8154815290600101906020018083116108f957829003601f168201915b5050505050815260200160038201805461092f906116ee565b80601f016020809104026020016040519081016040528092919081815260200182805461095b906116ee565b80156109a65780601f1061097d576101008083540402835291602001916109a6565b820191905f5260205f20905b81548152906001019060200180831161098957829003601f168201915b505050505081526020016004820180546109bf906116ee565b80601f01602080910402602001604051908101604052809291908181526020018280546109eb906116ee565b8015610a365780601f10610a0d57610100808354040283529160200191610a36565b820191905f5260205f20905b815481529060010190602001808311610a1957829003601f168201915b50505050508152602001600582018054610a4f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b906116ee565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b50505050508152602001600682018054610adf906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b906116ee565b8015610b565780601f10610b2d57610100808354040283529160200191610b56565b820191905f5260205f20905b815481529060010190602001808311610b3957829003601f168201915b50505050508152602001600782018054610b6f906116ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b906116ee565b8015610be65780601f10610bbd57610100808354040283529160200191610be6565b820191905f5260205f20905b815481529060010190602001808311610bc957829003601f168201915b505050505081525050915050919050565b5f610c006114ab565b60405163578bd92160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063578bd92190610c4c908790600401611987565b6060604051808303815f875af1158015610c68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8c9190611a89565b5060208301521515808252610ce35760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320696e76616c696400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663847755e3610d1f6020870187611ac9565b610d2d906040810190611ae7565b600360046040518563ffffffff1660e01b8152600401610d509493929190611bac565b602060405180830381865afa158015610d6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611bf0565b610ddb5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642073636f706500000000000000000000000000000000000000604482015260640161022d565b6020808201515f908152600190915260409020546001600160a01b03161580610e1f57506020808201515f908152600190915260409020546001600160a01b031633145b610e7c5760405162461bcd60e51b815260206004820152602860248201527f494420616c7265616479207265676973746572656420746f20616e6f74686572604482015267081858d8dbdd5b9d60c21b606482015260840161022d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d14df298610eb86020870187611ac9565b610ec6906040810190611ae7565b6040518363ffffffff1660e01b8152600401610ee3929190611c0b565b602060405180830381865afa158015610efe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190611c26565b60408201819052610e1090610f379042611c3d565b10610f845760405162461bcd60e51b815260206004820152601060248201527f50726f6f6620697320746f6f206f6c6400000000000000000000000000000000604482015260640161022d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630af18ba6610fc06040870187611c5c565b6040518363ffffffff1660e01b8152600401610fdd929190611c9f565b5f60405180830381865afa158015610ff7573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261101e9190810190611d67565b606082018190526020015146146110775760405162461bcd60e51b815260206004820152601060248201527f496e76616c696420636861696e20696400000000000000000000000000000000604482015260640161022d565b60608101516040015151156110ce5760405162461bcd60e51b815260206004820152601b60248201527f437573746f6d20646174612073686f756c6420626520656d7074790000000000604482015260640161022d565b5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166303d37eae61110b6040880188611c5c565b876040518463ffffffff1660e01b815260040161112a93929190611e0e565b5f60405180830381865afa158015611144573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261116b9190810190611e33565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016638e96bc896001836111ad60408b018b611c5c565b6040518563ffffffff1660e01b81526004016111cc9493929190611fe9565b602060405180830381865afa925050508015611205575060408051601f3d908101601f1916820190925261120291810190611bf0565b60015b61121057505f611213565b90505b60208084018051335f818152808552604080822093909355835181526001855282812080546001600160a01b031916909217909155815160608101835286815285151581860152828801518184015292518152600290935290912081518051829081906112809082611786565b50602082015160018201906112959082611786565b50604082015160028201906112aa9082611786565b50606082015160038201906112bf9082611786565b50608082015160048201906112d49082611786565b5060a082015160058201906112e99082611786565b5060c082015160068201906112fe9082611786565b5060e082015160078201906113139082611786565b50505060208281015160088301805460ff1916911515919091179055604092830151600990920191909155840151905133907f209ae2eb4ff1890ce972a80ec3e167b52d41ab089135cc6430447b1430e824be905f90a350506020015190505b92915050565b6001600160a01b0381165f90815260208190526040812054806113d65760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206009015492915050565b6001600160a01b0381165f908152602081905260408120548061144a5760405162461bcd60e51b8152602060048201526015602482015274139bc81c9959da5cdd1c985d1a5bdb88199bdd5b99605a1b604482015260640161022d565b5f9081526002602052604090206008015460ff1692915050565b60038054610393906116ee565b50805461147d906116ee565b5f825580601f1061148c575050565b601f0160209004905f5260205f20908101906114a89190611508565b50565b6040518060c001604052805f151581526020015f81526020015f81526020016114f560405180606001604052805f6001600160a01b031681526020015f8152602001606081525090565b81525f6020820181905260409091015290565b5b8082111561151c575f8155600101611509565b5090565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6115606020830184611520565b9392505050565b6001600160a01b03811681146114a8575f5ffd5b5f6020828403121561158b575f5ffd5b813561156081611567565b602081525f825161010060208401526115b3610120840182611520565b90506020840151601f198483030160408501526115d08282611520565b9150506040840151601f198483030160608501526115ee8282611520565b9150506060840151601f1984830301608085015261160c8282611520565b9150506080840151601f198483030160a085015261162a8282611520565b91505060a0840151601f198483030160c08501526116488282611520565b91505060c0840151601f198483030160e08501526116668282611520565b91505060e0840151601f19848303016101008501526116858282611520565b95945050505050565b80151581146114a8575f5ffd5b5f5f604083850312156116ac575f5ffd5b823567ffffffffffffffff8111156116c2575f5ffd5b8301608081860312156116d3575f5ffd5b915060208301356116e38161168e565b809150509250929050565b600181811c9082168061170257607f821691505b60208210810361172057634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f82111561178157805f5260205f20601f840160051c8101602085101561175f5750805b601f840160051c820191505b8181101561177e575f815560010161176b565b50505b505050565b815167ffffffffffffffff8111156117a0576117a0611726565b6117b4816117ae84546116ee565b8461173a565b6020601f8211600181146117e6575f83156117cf5750848201515b5f19600385901b1c1916600184901b17845561177e565b5f84815260208120601f198516915b8281101561181557878501518255602094850194600190920191016117f5565b508482101561183257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8335601e19843603018112611856575f5ffd5b830160208101925035905067ffffffffffffffff811115611875575f5ffd5b803603821315611883575f5ffd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156118e2575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8235607e1983360301811261190f575f5ffd5b90910192915050565b803582525f61192a6020830183611841565b6080602086015261193f60808601828461188a565b91505061194f6040840184611841565b858303604087015261196283828461188a565b9250505060608301356119748161168e565b8015156060860152508091505092915050565b60208082528235828201525f9083013536849003605e190181126119a9575f5ffd5b608060408401528301803560a08401526119c66020820182611841565b606060c08601526119dc6101008601828461188a565b9150506040820135601e198336030181126119f5575f5ffd5b60209201918201913567ffffffffffffffff811115611a12575f5ffd5b8060051b3603831315611a23575f5ffd5b848203609f190160e0860152611a3a8282856118b2565b92505050611a4b6040850185611841565b848303601f19016060860152611a6283828461188a565b92505050611a7360608501856118fb565b838203601f190160808501526116858282611918565b5f5f5f60608486031215611a9b575f5ffd5b8351611aa68161168e565b602085015160408601519194509250611abe81611567565b809150509250925092565b5f8235605e19833603018112611add575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611afc575f5ffd5b83018035915067ffffffffffffffff821115611b16575f5ffd5b6020019150600581901b3603821315611883575f5ffd5b5f8154611b39816116ee565b808552600182168015611b535760018114611b6f57611ba3565b60ff1983166020870152602082151560051b8701019350611ba3565b845f5260205f205f5b83811015611b9a5781546020828a010152600182019150602081019050611b78565b87016020019450505b50505092915050565b606081525f611bbf6060830186886118b2565b8281036020840152611bd18186611b2d565b90508281036040840152611be58185611b2d565b979650505050505050565b5f60208284031215611c00575f5ffd5b81516115608161168e565b602081525f611c1e6020830184866118b2565b949350505050565b5f60208284031215611c36575f5ffd5b5051919050565b8181038181111561137357634e487b7160e01b5f52601160045260245ffd5b5f5f8335601e19843603018112611c71575f5ffd5b83018035915067ffffffffffffffff821115611c8b575f5ffd5b602001915036819003821315611883575f5ffd5b602081525f611c1e60208301848661188a565b604051610100810167ffffffffffffffff81118282101715611cd657611cd6611726565b60405290565b5f82601f830112611ceb575f5ffd5b815167ffffffffffffffff811115611d0557611d05611726565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611d3457611d34611726565b604052818152838201602001851015611d4b575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611d77575f5ffd5b815167ffffffffffffffff811115611d8d575f5ffd5b820160608185031215611d9e575f5ffd5b6040516060810167ffffffffffffffff81118282101715611dc157611dc1611726565b6040528151611dcf81611567565b815260208281015190820152604082015167ffffffffffffffff811115611df4575f5ffd5b611e0086828501611cdc565b604083015250949350505050565b604081525f611e2160408301858761188a565b90508215156020830152949350505050565b5f60208284031215611e43575f5ffd5b815167ffffffffffffffff811115611e59575f5ffd5b82016101008185031215611e6b575f5ffd5b611e73611cb2565b815167ffffffffffffffff811115611e89575f5ffd5b611e9586828501611cdc565b825250602082015167ffffffffffffffff811115611eb1575f5ffd5b611ebd86828501611cdc565b602083015250604082015167ffffffffffffffff811115611edc575f5ffd5b611ee886828501611cdc565b604083015250606082015167ffffffffffffffff811115611f07575f5ffd5b611f1386828501611cdc565b606083015250608082015167ffffffffffffffff811115611f32575f5ffd5b611f3e86828501611cdc565b60808301525060a082015167ffffffffffffffff811115611f5d575f5ffd5b611f6986828501611cdc565b60a08301525060c082015167ffffffffffffffff811115611f88575f5ffd5b611f9486828501611cdc565b60c08301525060e082015167ffffffffffffffff811115611fb3575f5ffd5b611fbf86828501611cdc565b60e083015250949350505050565b600381106114a857634e487b7160e01b5f52602160045260245ffd5b611ff285611fcd565b848152611ffe84611fcd565b836020820152606060408201525f61201a60608301848661188a565b969550505050505056fea264697066735822122015c9fd7546339c4d0df5b37c9bd12bcfad28129d192ed11d156b17c73f0b260c64736f6c634300081e0033","sourceMap":"1010:8331:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7815:474;;;:::i;:::-;;2369:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3650:619;;;;;;:::i;:::-;;:::i;8496:285::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1805:51::-;;;;;;;;-1:-1:-1;;;;;2838:55:187;;;2820:74;;2808:2;2793:18;1805:51:115;2647:253:187;4785:2822:115;;;;;;:::i;:::-;;:::i;:::-;;;3712:25:187;;;3700:2;3685:18;4785:2822:115;3566:177:187;8787:273:115;;;;;;:::i;:::-;;:::i;9066:::-;;;;;;:::i;:::-;;:::i;:::-;;;4095:14:187;;4088:22;4070:41;;4058:2;4043:18;9066:273:115;3930:187:187;1701:55:115;;;;;2338:25;;;:::i;7815:474::-;7897:10;7857:18;7878:30;;;;;;;;;;;;7918:58;;;;-1:-1:-1;;;7918:58:115;;4584:2:187;7918:58:115;;;4566:21:187;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:187;;;4635:51;4703:18;;7918:58:115;;;;;;;;;7995:30;;;;:18;:30;;;;;;-1:-1:-1;;;;;7995:30:115;8029:10;7995:44;7987:92;;;;-1:-1:-1;;;7987:92:115;;4934:2:187;7987:92:115;;;4916:21:187;4973:2;4953:18;;;4946:30;5012:34;4992:18;;;4985:62;-1:-1:-1;;;5063:18:187;;;5056:33;5106:19;;7987:92:115;4732:399:187;7987:92:115;8116:10;8097:18;:30;;;;;;;;;;;8090:37;;;8144:30;;;:18;:30;;;;;8137:37;;-1:-1:-1;;;;;;8137:37:115;;;8191:25;:37;;;;;;;8097:18;8184:44;8191:37;8097:18;8184:44;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;8184:44:115;;;;;-1:-1:-1;;8184:44:115;;;;;;;;;;;8243:39;;8271:10;;8259;;8243:39;;8184:44;8243:39;7847:442;7815:474::o;2369:24::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3650:619::-;3751:42;;-1:-1:-1;;5698:2:187;5694:15;;;5690:53;3751:42:115;;;5678:66:187;3777:15:115;5760:12:187;;;5753:28;3716:22:115;;5797:12:187;;3751:42:115;;;-1:-1:-1;;3751:42:115;;;;;;;;;3741:53;;3751:42;3741:53;;;;-1:-1:-1;;;;;3804:27:115;;:18;:27;;;;;;;;;:44;;;3858:34;;;:18;:34;;;;;;:44;;-1:-1:-1;;;;;;3858:44:115;;;;;;;3952:102;;;;;;3858:44;3952:102;;;;;-1:-1:-1;;;3952:102:115;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:115;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:115;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3952:102:115;;;;-1:-1:-1;;;3952:102:115;;;;;;;;;;;-1:-1:-1;;;3952:102:115;;;;-1:-1:-1;;;3952:102:115;4121:83;;;;;;;;;;;;;;;;;4186:15;4121:83;;;;4065:41;;;:25;:41;;;;;;;:139;;;;3741:53;;-1:-1:-1;4065:41:115;;;;;;:139;;:41;:139;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4065:139:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;4065:139:115;;;;;;;;;-1:-1:-1;;4065:139:115;;;;;;;;;;;;;;;;;;;;4219:43;4247:14;;-1:-1:-1;;;;;4219:43:115;;;;;-1:-1:-1;;4219:43:115;3706:563;;3650:619;:::o;8496:285::-;8558:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8558:20:115;-1:-1:-1;;;;;8611:27:115;;8590:18;8611:27;;;;;;;;;;;;8648:58;;;;-1:-1:-1;;;8648:58:115;;4584:2:187;8648:58:115;;;4566:21:187;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:187;;;4635:51;4703:18;;8648:58:115;4382:345:187;8648:58:115;8723:37;;;;:25;:37;;;;;;;8716:58;;;;;;;;;;;;8723:37;;8716:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8496:285;;;:::o;4785:2822::-;4898:18;4932:14;;:::i;:::-;5059:33;;-1:-1:-1;;;5059:33:115;;-1:-1:-1;;;;;5059:18:115;:25;;;;:33;;5085:6;;5059:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5034:20:115;;;5019:73;;;;;;5102:41;;;;-1:-1:-1;;;5102:41:115;;13022:2:187;5102:41:115;;;13004:21:187;13061:2;13041:18;;;13034:30;13100:18;13080;;;13073:46;13136:18;;5102:41:115;12820:340:187;5102:41:115;-1:-1:-1;;;;;5213:16:115;:29;;5243:28;;;;:6;:28;:::i;:::-;:41;;;;;;;:::i;:::-;5286:11;5299:10;5213:97;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5192:157;;;;-1:-1:-1;;;5192:157:115;;15884:2:187;5192:157:115;;;15866:21:187;15923:2;15903:18;;;15896:30;15962:15;15942:18;;;15935:43;15995:18;;5192:157:115;15682:337:187;5192:157:115;5432:20;;;;;5465:1;5413:40;;;:18;:40;;;;;;;-1:-1:-1;;;;;5413:40:115;:54;;:128;;-1:-1:-1;5506:20:115;;;;;5487:40;;;;:18;:40;;;;;;;-1:-1:-1;;;;;5487:40:115;5531:10;5487:54;5413:128;5392:215;;;;-1:-1:-1;;;5392:215:115;;16226:2:187;5392:215:115;;;16208:21:187;16265:2;16245:18;;;16238:30;16304:34;16284:18;;;16277:62;-1:-1:-1;;;16355:18:187;;;16348:38;16403:19;;5392:215:115;16024:404:187;5392:215:115;-1:-1:-1;;;;;5677:16:115;:34;;5712:28;;;;:6;:28;:::i;:::-;:41;;;;;;;:::i;:::-;5677:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5656:18;;;:98;;;5811:7;;5772:36;;:15;:36;:::i;:::-;:46;5764:75;;;;-1:-1:-1;;;5764:75:115;;17393:2:187;5764:75:115;;;17375:21:187;17432:2;17412:18;;;17405:30;17471:18;17451;;;17444:46;17507:18;;5764:75:115;17191:340:187;5764:75:115;-1:-1:-1;;;;;5965:16:115;:29;;5995:22;;;;:6;:22;:::i;:::-;5965:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5965:53:115;;;;;;;;;;;;:::i;:::-;5949:13;;;:69;;;6128:21;;;6153:13;6128:38;6120:67;;;;-1:-1:-1;;;6120:67:115;;20541:2:187;6120:67:115;;;20523:21:187;20580:2;20560:18;;;20553:30;20619:18;20599;;;20592:46;20655:18;;6120:67:115;20339:340:187;6120:67:115;6254:13;;;;:24;;;6248:38;:43;6240:83;;;;-1:-1:-1;;;6240:83:115;;20886:2:187;6240:83:115;;;20868:21:187;20925:2;20905:18;;;20898:30;20964:29;20944:18;;;20937:57;21011:18;;6240:83:115;20684:351:187;6240:83:115;6389:34;-1:-1:-1;;;;;6426:16:115;:33;;6460:22;;;;:6;:22;:::i;:::-;6484:8;6426:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6426:67:115;;;;;;;;;;;;:::i;:::-;6389:104;-1:-1:-1;6814:17:115;-1:-1:-1;;;;;6845:16:115;:36;;6882:21;6814:17;6913:22;;;;:6;:22;:::i;:::-;6845:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;6845:91:115;;;;;;;;-1:-1:-1;;6845:91:115;;;;;;;;;;;;:::i;:::-;;;6841:314;;-1:-1:-1;7081:5:115;6841:314;;;7019:15;-1:-1:-1;6841:314:115;7237:20;;;;;;7223:10;7204:18;:30;;;;;;;;;;:53;;;;7286:20;;7267:40;;:18;:40;;;;;:53;;-1:-1:-1;;;;;;7267:53:115;;;;;;;7392:103;;;;;;;;;;;;;;;;;7474:18;;;;7392:103;;;;7356:20;;7330:47;;:25;:47;;;;;;:165;;;;:47;;;;:165;;:47;:165;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7330:165:115;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;7330:165:115;;;;;;;;;;-1:-1:-1;;7330:165:115;;;;;;;;;;;;;;;;;;;;;;;7542:20;;;7511:52;;7530:10;;7511:52;;-1:-1:-1;;7511:52:115;-1:-1:-1;;7580:20:115;;;;-1:-1:-1;4785:2822:115;;;;;:::o;8787:273::-;-1:-1:-1;;;;;8894:27:115;;8854:7;8894:27;;;;;;;;;;;;8931:58;;;;-1:-1:-1;;;8931:58:115;;4584:2:187;8931:58:115;;;4566:21:187;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:187;;;4635:51;4703:18;;8931:58:115;4382:345:187;8931:58:115;9006:37;;;;:25;:37;;;;;:47;;;;8787:273;-1:-1:-1;;8787:273:115:o;9066:::-;-1:-1:-1;;;;;9169:27:115;;9132:4;9169:27;;;;;;;;;;;;9206:58;;;;-1:-1:-1;;;9206:58:115;;4584:2:187;9206:58:115;;;4566:21:187;4623:2;4603:18;;;4596:30;-1:-1:-1;;;4642:18:187;;;4635:51;4703:18;;9206:58:115;4382:345:187;9206:58:115;9281:37;;;;:25;:37;;;;;:51;;;;;;9066:273;-1:-1:-1;;9066:273:115:o;2338:25::-;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:289:187:-;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;:::-;469:53;308:220;-1:-1:-1;;;308:220:187:o;533:154::-;-1:-1:-1;;;;;612:5:187;608:54;601:5;598:65;588:93;;677:1;674;667:12;692:247;751:6;804:2;792:9;783:7;779:23;775:32;772:52;;;820:1;817;810:12;772:52;859:9;846:23;878:31;903:5;878:31;:::i;944:1698::-;1137:2;1126:9;1119:21;1100:4;1175:6;1169:13;1218:6;1213:2;1202:9;1198:18;1191:34;1248:52;1295:3;1284:9;1280:19;1266:12;1248:52;:::i;:::-;1234:66;;1349:2;1341:6;1337:15;1331:22;1421:2;1417:7;1405:9;1397:6;1393:22;1389:36;1384:2;1373:9;1369:18;1362:64;1449:41;1483:6;1467:14;1449:41;:::i;:::-;1435:55;;;1539:2;1531:6;1527:15;1521:22;1611:2;1607:7;1595:9;1587:6;1583:22;1579:36;1574:2;1563:9;1559:18;1552:64;1639:41;1673:6;1657:14;1639:41;:::i;:::-;1625:55;;;1729:2;1721:6;1717:15;1711:22;1802:2;1798:7;1786:9;1778:6;1774:22;1770:36;1764:3;1753:9;1749:19;1742:65;1830:41;1864:6;1848:14;1830:41;:::i;:::-;1816:55;;;1920:3;1912:6;1908:16;1902:23;1994:2;1990:7;1978:9;1970:6;1966:22;1962:36;1956:3;1945:9;1941:19;1934:65;2022:41;2056:6;2040:14;2022:41;:::i;:::-;2008:55;;;2112:3;2104:6;2100:16;2094:23;2186:2;2182:7;2170:9;2162:6;2158:22;2154:36;2148:3;2137:9;2133:19;2126:65;2214:41;2248:6;2232:14;2214:41;:::i;:::-;2200:55;;;2304:3;2296:6;2292:16;2286:23;2378:2;2374:7;2362:9;2354:6;2350:22;2346:36;2340:3;2329:9;2325:19;2318:65;2406:41;2440:6;2424:14;2406:41;:::i;:::-;2392:55;;;2496:3;2488:6;2484:16;2478:23;2573:2;2569:7;2557:9;2549:6;2545:22;2541:36;2532:6;2521:9;2517:22;2510:68;2595:41;2629:6;2613:14;2595:41;:::i;:::-;2587:49;944:1698;-1:-1:-1;;;;;944:1698:187:o;2905:118::-;2991:5;2984:13;2977:21;2970:5;2967:32;2957:60;;3013:1;3010;3003:12;3028:533;3137:6;3145;3198:2;3186:9;3177:7;3173:23;3169:32;3166:52;;;3214:1;3211;3204:12;3166:52;3254:9;3241:23;3287:18;3279:6;3276:30;3273:50;;;3319:1;3316;3309:12;3273:50;3342:22;;3398:3;3380:16;;;3376:26;3373:46;;;3415:1;3412;3405:12;3373:46;3438:2;-1:-1:-1;3490:2:187;3475:18;;3462:32;3503:28;3462:32;3503:28;:::i;:::-;3550:5;3540:15;;;3028:533;;;;;:::o;5136:380::-;5215:1;5211:12;;;;5258;;;5279:61;;5333:4;5325:6;5321:17;5311:27;;5279:61;5386:2;5378:6;5375:14;5355:18;5352:38;5349:161;;5432:10;5427:3;5423:20;5420:1;5413:31;5467:4;5464:1;5457:15;5495:4;5492:1;5485:15;5349:161;;5136:380;;;:::o;5820:127::-;5881:10;5876:3;5872:20;5869:1;5862:31;5912:4;5909:1;5902:15;5936:4;5933:1;5926:15;6078:518;6180:2;6175:3;6172:11;6169:421;;;6216:5;6213:1;6206:16;6260:4;6257:1;6247:18;6330:2;6318:10;6314:19;6311:1;6307:27;6301:4;6297:38;6366:4;6354:10;6351:20;6348:47;;;-1:-1:-1;6389:4:187;6348:47;6444:2;6439:3;6435:12;6432:1;6428:20;6422:4;6418:31;6408:41;;6499:81;6517:2;6510:5;6507:13;6499:81;;;6576:1;6562:16;;6543:1;6532:13;6499:81;;;6503:3;;6169:421;6078:518;;;:::o;6772:1299::-;6898:3;6892:10;6925:18;6917:6;6914:30;6911:56;;;6947:18;;:::i;:::-;6976:97;7066:6;7026:38;7058:4;7052:11;7026:38;:::i;:::-;7020:4;6976:97;:::i;:::-;7122:4;7153:2;7142:14;;7170:1;7165:649;;;;7858:1;7875:6;7872:89;;;-1:-1:-1;7927:19:187;;;7921:26;7872:89;-1:-1:-1;;6729:1:187;6725:11;;;6721:24;6717:29;6707:40;6753:1;6749:11;;;6704:57;7974:81;;7135:930;;7165:649;6025:1;6018:14;;;6062:4;6049:18;;-1:-1:-1;;7201:20:187;;;7319:222;7333:7;7330:1;7327:14;7319:222;;;7415:19;;;7409:26;7394:42;;7522:4;7507:20;;;;7475:1;7463:14;;;;7349:12;7319:222;;;7323:3;7569:6;7560:7;7557:19;7554:201;;;7630:19;;;7624:26;-1:-1:-1;;7713:1:187;7709:14;;;7725:3;7705:24;7701:37;7697:42;7682:58;7667:74;;7554:201;-1:-1:-1;;;;7801:1:187;7785:14;;;7781:22;7768:36;;-1:-1:-1;6772:1299:187:o;8076:500::-;8134:5;8141:6;8201:3;8188:17;8287:2;8283:7;8272:8;8256:14;8252:29;8248:43;8228:18;8224:68;8214:96;;8306:1;8303;8296:12;8214:96;8334:33;;8438:4;8425:18;;;-1:-1:-1;8386:21:187;;-1:-1:-1;8466:18:187;8455:30;;8452:50;;;8498:1;8495;8488:12;8452:50;8545:6;8529:14;8525:27;8518:5;8514:39;8511:59;;;8566:1;8563;8556:12;8511:59;8076:500;;;;;:::o;8581:266::-;8669:6;8664:3;8657:19;8721:6;8714:5;8707:4;8702:3;8698:14;8685:43;-1:-1:-1;8773:1:187;8748:16;;;8766:4;8744:27;;;8737:38;;;;8829:2;8808:15;;;-1:-1:-1;;8804:29:187;8795:39;;;8791:50;;8581:266::o;8852:358::-;8952:6;8947:3;8940:19;8922:3;8982:66;8974:6;8971:78;8968:98;;;9062:1;9059;9052:12;8968:98;9098:6;9095:1;9091:14;9150:8;9143:5;9136:4;9131:3;9127:14;9114:45;9179:18;;;;9199:4;9175:29;;8852:358;-1:-1:-1;;;8852:358:187:o;9215:299::-;9288:5;9347:3;9334:17;9433:3;9429:8;9418;9402:14;9398:29;9394:44;9374:18;9370:69;9360:97;;9453:1;9450;9443:12;9360:97;9475:33;;;;9215:299;-1:-1:-1;;9215:299:187:o;9519:752::-;9627:5;9614:19;9609:3;9602:32;9584:3;9677:55;9726:4;9719:5;9715:16;9708:5;9677:55;:::i;:::-;9764:4;9757;9752:3;9748:14;9741:28;9790:69;9853:4;9848:3;9844:14;9830:12;9816;9790:69;:::i;:::-;9778:81;;;9906:55;9955:4;9948:5;9944:16;9937:5;9906:55;:::i;:::-;10003:3;9997:4;9993:14;9986:4;9981:3;9977:14;9970:38;10031:63;10089:4;10073:14;10057;10031:63;:::i;:::-;10017:77;;;;10142:4;10135:5;10131:16;10118:30;10157;10179:7;10157:30;:::i;:::-;10233:7;10226:15;10219:23;10212:4;10207:3;10203:14;10196:47;;10259:6;10252:13;;;9519:752;;;;:::o;10276:2067::-;10491:2;10473:21;;;10535:20;;10571:18;;;10564:33;10454:4;;10645:15;;10632:29;10712:14;10708:27;;;-1:-1:-1;;10704:41:187;10680:66;;10670:94;;10760:1;10757;10750:12;10670:94;10855:4;10850:2;10835:18;;10828:32;10788:31;;10905:21;;10957:3;10942:19;;10935:36;11014:57;11067:2;11054:16;;10788:31;11014:57;:::i;:::-;11108:4;11102:3;11091:9;11087:19;11080:33;11136:74;11205:3;11194:9;11190:19;11176:12;11162;11136:74;:::i;:::-;11122:88;;;11273:2;11264:7;11260:16;11247:30;11360:2;11356:7;11346;11330:14;11326:28;11322:42;11300:20;11296:69;11286:97;;11379:1;11376;11369:12;11286:97;11522:2;11407:34;;11509:16;;;;11464:21;11548:18;11537:30;;11534:50;;;11580:1;11577;11570:12;11534:50;11636:6;11633:1;11629:14;11613;11609:35;11600:7;11596:49;11593:69;;;11658:1;11655;11648:12;11593:69;11703:22;;;-1:-1:-1;;11699:37:187;11693:3;11678:19;;11671:66;11757:62;11707:6;11804;11795:7;11757:62;:::i;:::-;11746:73;;;;11866:55;11917:2;11909:6;11905:15;11897:6;11866:55;:::i;:::-;11963:19;;;-1:-1:-1;;11959:33:187;11952:4;11937:20;;11930:63;12016:62;11967:3;12058:14;12042;12016:62;:::i;:::-;12002:76;;;;12109:72;12175:4;12167:6;12163:17;12155:6;12109:72;:::i;:::-;12223:22;;;-1:-1:-1;;12219:36:187;12212:4;12197:20;;12190:66;12273:64;12227:6;12314:14;12273:64;:::i;12348:467::-;12460:6;12468;12476;12529:2;12517:9;12508:7;12504:23;12500:32;12497:52;;;12545:1;12542;12535:12;12497:52;12577:9;12571:16;12596:28;12618:5;12596:28;:::i;:::-;12688:2;12673:18;;12667:25;12737:2;12722:18;;12716:25;12643:5;;-1:-1:-1;12667:25:187;-1:-1:-1;12750:33:187;12716:25;12750:33;:::i;:::-;12802:7;12792:17;;;12348:467;;;;;:::o;13165:339::-;13273:4;13331:11;13318:25;13425:2;13421:7;13410:8;13394:14;13390:29;13386:43;13366:18;13362:68;13352:96;;13444:1;13441;13434:12;13352:96;13465:33;;;;;13165:339;-1:-1:-1;;13165:339:187:o;13509:545::-;13602:4;13608:6;13668:11;13655:25;13762:2;13758:7;13747:8;13731:14;13727:29;13723:43;13703:18;13699:68;13689:96;;13781:1;13778;13771:12;13689:96;13808:33;;13860:20;;;-1:-1:-1;13903:18:187;13892:30;;13889:50;;;13935:1;13932;13925:12;13889:50;13968:4;13956:17;;-1:-1:-1;14019:1:187;14015:14;;;13999;13995:35;13985:46;;13982:66;;;14044:1;14041;14034:12;14059:739;14109:3;14150:5;14144:12;14179:36;14205:9;14179:36;:::i;:::-;14224:19;;;14274:1;14259:17;;14285:150;;;;14449:1;14444:348;;;;14252:540;;14285:150;14348:3;14344:8;14333:9;14329:24;14322:4;14317:3;14313:14;14306:48;14420:4;14408:6;14401:14;14394:22;14391:1;14387:30;14382:3;14378:40;14374:51;14367:58;;14285:150;;14444:348;14475:5;14472:1;14465:16;14522:4;14519:1;14509:18;14549:1;14563:177;14577:6;14574:1;14571:13;14563:177;;;14674:7;14668:14;14661:4;14657:1;14652:3;14648:11;14644:22;14637:46;14724:1;14715:7;14711:15;14700:26;;14599:4;14596:1;14592:12;14587:17;;14563:177;;;14764:11;;14777:4;14760:22;;-1:-1:-1;;14252:540:187;;;;14059:739;;;;:::o;14803:624::-;15082:2;15071:9;15064:21;15045:4;15108:73;15177:2;15166:9;15162:18;15154:6;15146;15108:73;:::i;:::-;15229:9;15221:6;15217:22;15212:2;15201:9;15197:18;15190:50;15263:41;15297:6;15289;15263:41;:::i;:::-;15249:55;;15352:9;15344:6;15340:22;15335:2;15324:9;15320:18;15313:50;15380:41;15414:6;15406;15380:41;:::i;:::-;15372:49;14803:624;-1:-1:-1;;;;;;;14803:624:187:o;15432:245::-;15499:6;15552:2;15540:9;15531:7;15527:23;15523:32;15520:52;;;15568:1;15565;15558:12;15520:52;15600:9;15594:16;15619:28;15641:5;15619:28;:::i;16433:288::-;16622:2;16611:9;16604:21;16585:4;16642:73;16711:2;16700:9;16696:18;16688:6;16680;16642:73;:::i;:::-;16634:81;16433:288;-1:-1:-1;;;;16433:288:187:o;16726:230::-;16796:6;16849:2;16837:9;16828:7;16824:23;16820:32;16817:52;;;16865:1;16862;16855:12;16817:52;-1:-1:-1;16910:16:187;;16726:230;-1:-1:-1;16726:230:187:o;16961:225::-;17028:9;;;17049:11;;;17046:134;;;17102:10;17097:3;17093:20;17090:1;17083:31;17137:4;17134:1;17127:15;17165:4;17162:1;17155:15;17536:521;17613:4;17619:6;17679:11;17666:25;17773:2;17769:7;17758:8;17742:14;17738:29;17734:43;17714:18;17710:68;17700:96;;17792:1;17789;17782:12;17700:96;17819:33;;17871:20;;;-1:-1:-1;17914:18:187;17903:30;;17900:50;;;17946:1;17943;17936:12;17900:50;17979:4;17967:17;;-1:-1:-1;18010:14:187;18006:27;;;17996:38;;17993:58;;;18047:1;18044;18037:12;18062:244;18219:2;18208:9;18201:21;18182:4;18239:61;18296:2;18285:9;18281:18;18273:6;18265;18239:61;:::i;18311:250::-;18378:2;18372:9;18420:6;18408:19;;18457:18;18442:34;;18478:22;;;18439:62;18436:88;;;18504:18;;:::i;:::-;18540:2;18533:22;18311:250;:::o;18566:743::-;18620:5;18673:3;18666:4;18658:6;18654:17;18650:27;18640:55;;18691:1;18688;18681:12;18640:55;18724:6;18718:13;18754:18;18746:6;18743:30;18740:56;;;18776:18;;:::i;:::-;18845:2;18839:9;18937:2;18899:17;;-1:-1:-1;;18895:31:187;;;18928:2;18891:40;18887:54;18875:67;;18972:18;18957:34;;18993:22;;;18954:62;18951:88;;;19019:18;;:::i;:::-;19055:2;19048:22;19079;;;19120:19;;;19141:4;19116:30;19113:39;-1:-1:-1;19110:59:187;;;19165:1;19162;19155:12;19110:59;19222:6;19215:4;19207:6;19203:17;19196:4;19188:6;19184:17;19178:51;19277:1;19249:19;;;19270:4;19245:30;19238:41;;;;19253:6;18566:743;-1:-1:-1;;;18566:743:187:o;19314:1020::-;19412:6;19465:2;19453:9;19444:7;19440:23;19436:32;19433:52;;;19481:1;19478;19471:12;19433:52;19514:9;19508:16;19547:18;19539:6;19536:30;19533:50;;;19579:1;19576;19569:12;19533:50;19602:22;;19658:4;19640:16;;;19636:27;19633:47;;;19676:1;19673;19666:12;19633:47;19729:2;19723:9;19771:4;19759:17;;19806:18;19791:34;;19827:22;;;19788:62;19785:88;;;19853:18;;:::i;:::-;19889:2;19882:22;19926:9;;19944:31;19926:9;19944:31;:::i;:::-;19984:21;;20064:2;20056:11;;;20050:18;20084:15;;;20077:32;20148:2;20140:11;;20134:18;20177;20164:32;;20161:52;;;20209:1;20206;20199:12;20161:52;20246:56;20294:7;20283:8;20279:2;20275:17;20246:56;:::i;:::-;20241:2;20229:15;;20222:81;-1:-1:-1;20233:6:187;19314:1020;-1:-1:-1;;;;19314:1020:187:o;21040:325::-;21219:2;21208:9;21201:21;21182:4;21239:61;21296:2;21285:9;21281:18;21273:6;21265;21239:61;:::i;:::-;21231:69;;21350:6;21343:14;21336:22;21331:2;21320:9;21316:18;21309:50;21040:325;;;;;;:::o;21370:1975::-;21472:6;21525:2;21513:9;21504:7;21500:23;21496:32;21493:52;;;21541:1;21538;21531:12;21493:52;21574:9;21568:16;21607:18;21599:6;21596:30;21593:50;;;21639:1;21636;21629:12;21593:50;21662:22;;21718:6;21700:16;;;21696:29;21693:49;;;21738:1;21735;21728:12;21693:49;21764:17;;:::i;:::-;21812:2;21806:9;21840:18;21830:8;21827:32;21824:52;;;21872:1;21869;21862:12;21824:52;21899:56;21947:7;21936:8;21932:2;21928:17;21899:56;:::i;:::-;21892:5;21885:71;;21995:2;21991;21987:11;21981:18;22024;22014:8;22011:32;22008:52;;;22056:1;22053;22046:12;22008:52;22092:56;22140:7;22129:8;22125:2;22121:17;22092:56;:::i;:::-;22087:2;22080:5;22076:14;22069:80;;22188:2;22184;22180:11;22174:18;22217;22207:8;22204:32;22201:52;;;22249:1;22246;22239:12;22201:52;22285:56;22333:7;22322:8;22318:2;22314:17;22285:56;:::i;:::-;22280:2;22273:5;22269:14;22262:80;;22381:2;22377;22373:11;22367:18;22410;22400:8;22397:32;22394:52;;;22442:1;22439;22432:12;22394:52;22478:56;22526:7;22515:8;22511:2;22507:17;22478:56;:::i;:::-;22473:2;22466:5;22462:14;22455:80;;22574:3;22570:2;22566:12;22560:19;22604:18;22594:8;22591:32;22588:52;;;22636:1;22633;22626:12;22588:52;22673:56;22721:7;22710:8;22706:2;22702:17;22673:56;:::i;:::-;22667:3;22660:5;22656:15;22649:81;;22769:3;22765:2;22761:12;22755:19;22799:18;22789:8;22786:32;22783:52;;;22831:1;22828;22821:12;22783:52;22868:56;22916:7;22905:8;22901:2;22897:17;22868:56;:::i;:::-;22862:3;22855:5;22851:15;22844:81;;22964:3;22960:2;22956:12;22950:19;22994:18;22984:8;22981:32;22978:52;;;23026:1;23023;23016:12;22978:52;23063:56;23111:7;23100:8;23096:2;23092:17;23063:56;:::i;:::-;23057:3;23050:5;23046:15;23039:81;;23159:3;23155:2;23151:12;23145:19;23189:18;23179:8;23176:32;23173:52;;;23221:1;23218;23211:12;23173:52;23258:56;23306:7;23295:8;23291:2;23287:17;23258:56;:::i;:::-;23252:3;23241:15;;23234:81;-1:-1:-1;23245:5:187;21370:1975;-1:-1:-1;;;;21370:1975:187:o;23350:215::-;23436:1;23429:5;23426:12;23416:143;;23481:10;23476:3;23472:20;23469:1;23462:31;23516:4;23513:1;23506:15;23544:4;23541:1;23534:15;23570:513;23788:43;23824:6;23788:43;:::i;:::-;23858:6;23847:9;23840:25;23874:43;23910:6;23874:43;:::i;:::-;23953:6;23948:2;23937:9;23933:18;23926:34;23996:2;23991;23980:9;23976:18;23969:30;23769:4;24016:61;24073:2;24062:9;24058:18;24050:6;24042;24016:61;:::i;:::-;24008:69;23570:513;-1:-1:-1;;;;;;23570:513:187:o","linkReferences":{},"immutableReferences":{"70455":[{"start":435,"length":32},{"start":3095,"length":32}],"70458":[{"start":285,"length":32},{"start":3309,"length":32},{"start":3718,"length":32},{"start":3982,"length":32},{"start":4313,"length":32},{"start":4472,"length":32}]}},"methodIdentifiers":{"deleteProof()":"1e084f25","getDisclosed(address)":"3eca794d","getIsFacematched(address)":"c1ad863c","getProofTimestamp(address)":"b282a29a","mockAddDisclosedData(address)":"1fb3ed3f","registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)":"7d3788e1","validDomain()":"c47ca04c","validScope()":"1f4a2f59","zkPassportHelper()":"69744c62","zkPassportVerifier()":"c4797ec5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zkPassportVerifier\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zkPassportHelper\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_domain\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_scope\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAccount\",\"type\":\"address\"}],\"name\":\"IdentityDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"IdentityRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"deleteProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDisclosed\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"issuingCountry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nationality\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gender\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"birthDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"expiryDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"documentNumber\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"documentType\",\"type\":\"string\"}],\"internalType\":\"struct DisclosedData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getIsFacematched\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getProofTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"mockAddDisclosedData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"vkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"publicInputs\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct ProofVerificationData\",\"name\":\"proofVerificationData\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"committedInputs\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"validityPeriodInSeconds\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"domain\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"scope\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"devMode\",\"type\":\"bool\"}],\"internalType\":\"struct ServiceConfig\",\"name\":\"serviceConfig\",\"type\":\"tuple\"}],\"internalType\":\"struct ProofVerificationParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isIDCard\",\"type\":\"bool\"}],\"name\":\"registerProof\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validDomain\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validScope\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zkPassportHelper\",\"outputs\":[{\"internalType\":\"contract IZKPassportHelper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zkPassportVerifier\",\"outputs\":[{\"internalType\":\"contract IZKPassportVerifier\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)\":{\"params\":{\"isIDCard\":\"A boolean indicating if the proof is for an ID card.\",\"params\":\"The proof verification parameters from ZKPassport SDK.\"},\"returns\":{\"identifier\":\"The unique identifier of the passport.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)\":{\"notice\":\"Verify a ZKPassport proof and register the identity and disclosed data.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/addons/helpers/ZKPassport_PowersRegistry.sol\":\"ZKPassport_PowersRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":600},\"remappings\":[\":@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/\",\":@chainlink/contracts/=lib/chainlink-evm/contracts/\",\":@forge-std/=lib/forge-std/src/\",\":@governance/=governance/\",\":@lib/=lib/\",\":@mocks/=test/mocks/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe/=lib/safe-smart-account/contracts/\",\":@script/=script/\",\":@src/=src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":chainlink-ccip/=lib/chainlink-ccip/\",\":chainlink-evm/=lib/chainlink-evm/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/\",\":zkpassport-packages/=lib/zkpassport-packages/\"]},\"sources\":{\"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol\":{\"keccak256\":\"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6\",\"dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj\"]},\"src/addons/helpers/ZKPassport_PowersRegistry.sol\":{\"keccak256\":\"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6\",\"dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K\"]},\"src/interfaces/IZKPassport.sol\":{\"keccak256\":\"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588\",\"dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_zkPassportVerifier","type":"address"},{"internalType":"address","name":"_zkPassportHelper","type":"address"},{"internalType":"string","name":"_domain","type":"string"},{"internalType":"string","name":"_scope","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32","indexed":true},{"internalType":"address","name":"oldAccount","type":"address","indexed":true}],"type":"event","name":"IdentityDeleted","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bytes32","name":"identifier","type":"bytes32","indexed":true}],"type":"event","name":"IdentityRegistered","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteProof"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getDisclosed","outputs":[{"internalType":"struct DisclosedData","name":"","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getIsFacematched","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getProofTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mockAddDisclosedData"},{"inputs":[{"internalType":"struct ProofVerificationParams","name":"params","type":"tuple","components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple","components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}]},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple","components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}]}]},{"internalType":"bool","name":"isIDCard","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"registerProof","outputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validDomain","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validScope","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zkPassportHelper","outputs":[{"internalType":"contract IZKPassportHelper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zkPassportVerifier","outputs":[{"internalType":"contract IZKPassportVerifier","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)":{"params":{"isIDCard":"A boolean indicating if the proof is for an ID card.","params":"The proof verification parameters from ZKPassport SDK."},"returns":{"identifier":"The unique identifier of the passport."}}},"version":1},"userdoc":{"kind":"user","methods":{"registerProof((bytes32,(bytes32,bytes,bytes32[]),bytes,(uint256,string,string,bool)),bool)":{"notice":"Verify a ZKPassport proof and register the identity and disclosed data."}},"version":1}},"settings":{"remappings":["@chainlink/contracts-ccip/=lib/chainlink-ccip/chains/evm/contracts/","@chainlink/contracts/=lib/chainlink-evm/contracts/","@forge-std/=lib/forge-std/src/","@governance/=governance/","@lib/=lib/","@mocks/=test/mocks/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe/=lib/safe-smart-account/contracts/","@script/=script/","@src/=src/","account-abstraction/=lib/account-abstraction/contracts/","chainlink-ccip/=lib/chainlink-ccip/","chainlink-evm/=lib/chainlink-evm/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/","zkpassport-packages/=lib/zkpassport-packages/"],"optimizer":{"enabled":true,"runs":600},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/addons/helpers/ZKPassport_PowersRegistry.sol":"ZKPassport_PowersRegistry"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/zkpassport-packages/packages/registry-contracts/src/lib/Types.sol":{"keccak256":"0x0bc0e55292c1ad6e5bbdb0b9d9828c814d2064576e3744208fb99008c8bb2e7c","urls":["bzz-raw://6f480fd06a0f099624e0a01613fbde3cc3ca99755ff1fbe0355ce52e9532adb6","dweb:/ipfs/QmawpUuJY7UArGPi5rebLfMc4iDc9Gz6Qu7PFFBtTQcpKj"],"license":"Apache-2.0"},"src/addons/helpers/ZKPassport_PowersRegistry.sol":{"keccak256":"0xe0d7d682c6d18e54a299fe4596a1251216a59bda385e2471965fc18fc0dffaa2","urls":["bzz-raw://4c9f06e795d746139f0929776397d934a4b8a62d40cd7b6f15c805e5c008f8a6","dweb:/ipfs/Qma1WGyPh8kiwnBCv7Fg6qswbmyhsg1UnevadqYh6Nev3K"],"license":"MIT"},"src/interfaces/IZKPassport.sol":{"keccak256":"0x73bfeb41a0da93ed2f0ef8fe6097aa644802b05e5cbb53da2d47bfb6af7e6141","urls":["bzz-raw://fb97744818ce240314dbff30f3300bb5d8ae208aee9cfa393dc24eb1170f4588","dweb:/ipfs/Qmf2rWSUCZEXtYvJpTPRrFrpadENvgebZWLEo4E3nm3r7q"],"license":"MIT"}},"version":1},"id":115} \ No newline at end of file diff --git a/frontend/e2e/landing.spec.ts b/frontend/e2e/landing.spec.ts index 22b00260..0a9b9338 100644 --- a/frontend/e2e/landing.spec.ts +++ b/frontend/e2e/landing.spec.ts @@ -6,14 +6,14 @@ import { VIEWPORTS } from './viewports'; // loaded through Playwright's test loader (works fine inside Next.js's // bundler, but not standalone) - see arbitrumSepolia.id=421614, sepolia.id=11155111. const DeployedExamples = [ - { id: 'governed-721', chainId: 421614, address: '0xaa3146fBa89b6e93303c397f76B2cC36545372D0' }, - { id: 'bicameralism', chainId: 421614, address: '0xA23d34135d285FA4efb51168fb5719405BC36a24' }, - { id: 'optimistic-execution', chainId: 421614, address: '0x0133081239254Ca966B3570bd775cAEE93Cfd4E2' }, - { id: 'nested-governance-parent', chainId: 421614, address: '0x69752fE5a307e324cd508d5F6BAD0276b5716Cf3' }, - { id: 'open-elections', chainId: 421614, address: '0x44341f8dadB0f1C311D09145bD2fDA688Aea058c' }, - { id: 'token-delegates', chainId: 11155111, address: '0xEFaD9408876295A3B0Dd7fD8f6606dd551b82695' }, - { id: 'account-abstraction', chainId: 11155111, address: '0xf93D1775d1A734220AE6Fb751313961c0f869363' }, - { id: 'powers101', chainId: 11155111, address: '0x7EF3396E64BcdF5b58dE2A097BC5b72712059098' }, + { id: 'staking-pool-governance', chainId: 421614, address: '0x1625eB24df6571Ae13ebD9Cc3bd82b5F1E38405a' }, + { id: 'bicameralism', chainId: 421614, address: '0x9b16B31FF15535F871d8017b1Cca682E65E49ee1' }, + { id: 'optimistic-execution', chainId: 421614, address: '0x455810765b497519869187eCf57424611a83709E' }, + { id: 'nested-governance-parent', chainId: 421614, address: '0x0CE0eB29E56cead1499061991de07Cf86658740a' }, + { id: 'open-elections', chainId: 421614, address: '0x5F44F12114d352eF191557Fb7a7202D96035d883' }, + { id: 'token-delegates', chainId: 421614, address: '0xc80A4747AA3562E23497e7E3570B10dA3A0F706D' }, + { id: 'account-abstraction', chainId: 421614, address: '0x2D95D1b1562a12C4220F29414837b238Dcf3430c' }, + { id: 'powers101', chainId: 421614, address: '0x6D5A3A936bb1e5434ad60E58E58848Bd67Afb79B' }, ]; // The same sentence list rendered by CyclingTypewriter (app/CyclingTypewriter.tsx). diff --git a/frontend/e2e/mocks/powers-rpc.ts b/frontend/e2e/mocks/powers-rpc.ts index 676d34b2..a6fb690a 100644 Binary files a/frontend/e2e/mocks/powers-rpc.ts and b/frontend/e2e/mocks/powers-rpc.ts differ diff --git a/frontend/e2e/mocks/privy-react-auth-mock.tsx b/frontend/e2e/mocks/privy-react-auth-mock.tsx index 04a50493..a9a539b7 100644 --- a/frontend/e2e/mocks/privy-react-auth-mock.tsx +++ b/frontend/e2e/mocks/privy-react-auth-mock.tsx @@ -9,12 +9,27 @@ import React from 'react'; * before navigation (see e2e/mocks/auth-fixture.ts). */ -export type ConnectedWallet = { address: string; walletClientType?: string }; +// The serializable wallet shape seeded into window.__E2E_PRIVY_STATE__ via +// page.addInitScript (see auth-fixture.ts). addInitScript can only carry plain +// JSON, so no methods live here — useWallets() enriches these into full +// ConnectedWallet objects client-side below. +type SerializedWallet = { address: string; walletClientType?: string }; + +// The enriched wallet useWallets() returns. @privy-io/wagmi's +// useSyncPrivyWallets reads getEthereumProvider(), meta.*, and walletClientType +// off every connected wallet — a bare { address } makes it throw +// "getEthereumProvider is not a function" and crashes the WagmiProvider subtree. +export type ConnectedWallet = SerializedWallet & { + connectorType: string; + chainId: string; + meta: { id: string; name: string; icon: string }; + getEthereumProvider: () => Promise; +}; type E2EPrivyState = { ready: boolean; authenticated: boolean; - wallets: ConnectedWallet[]; + wallets: SerializedWallet[]; }; declare global { @@ -30,6 +45,55 @@ function getState(): E2EPrivyState { return window.__E2E_PRIVY_STATE__ ?? DEFAULT_STATE; } +type StubEip1193Provider = { + request: (args: { method: string }) => Promise; + on: () => void; + removeListener: () => void; +}; + +// Minimal EIP-1193 provider so wagmi's injected() connector can be set up +// without throwing. The tests only do public reads (via the wagmi config's HTTP +// transports, not this connector), so it just needs a valid shape. +function makeStubProvider(address: string): StubEip1193Provider { + return { + request: async ({ method }) => { + if (method === 'eth_chainId') return '0xaa36a7'; // sepolia + if (method === 'eth_accounts' || method === 'eth_requestAccounts') return [address]; + return null; + }, + on: () => {}, + removeListener: () => {}, + }; +} + +function enrichWallet(w: SerializedWallet): ConnectedWallet { + return { + ...w, + walletClientType: w.walletClientType ?? 'injected', + connectorType: 'injected', + chainId: 'eip155:11155111', + meta: { id: 'io.e2e.mockwallet', name: 'Mock Wallet', icon: '' }, + getEthereumProvider: async () => makeStubProvider(w.address), + }; +} + +// useWallets() must return a referentially STABLE array: @privy-io/wagmi's +// useSyncPrivyWallets keys an effect on the wallets array and calls reconnect() +// in it, so a fresh array each render loops forever and hangs the page. The +// source array is stable (DEFAULT_STATE.wallets is a constant; +// window.__E2E_PRIVY_STATE__ is set once by addInitScript), so cache the +// enriched result keyed on it. +const enrichedCache = new WeakMap(); + +function enrichWallets(source: SerializedWallet[]): ConnectedWallet[] { + let cached = enrichedCache.get(source); + if (!cached) { + cached = source.map(enrichWallet); + enrichedCache.set(source, cached); + } + return cached; +} + export type PrivyClientConfig = Record; export function PrivyProvider({ children }: { children: React.ReactNode }) { @@ -52,7 +116,7 @@ export function usePrivy() { export function useWallets() { const state = getState(); - return { ready: state.ready, wallets: state.wallets }; + return { ready: state.ready, wallets: enrichWallets(state.wallets) }; } export function useCreateWallet() { diff --git a/frontend/package.json b/frontend/package.json index 4f8f133a..ce5f3290 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,9 +10,8 @@ "build": "next build --webpack", "start": "next start", "preview": "next start", - "test": "echo \"No tests specified\"", - "test:e2e": "playwright test --trace=on", - "test:e2e:report": "playwright test --trace=on --reporter=html && playwright show-report", + "test": "playwright test --trace=on", + "test:report": "playwright test --trace=on --reporter=html && playwright show-report", "lint": "eslint . --ext .ts,.tsx,.js,.jsx", "lint:fix": "eslint . --ext .ts,.tsx,.js,.jsx --fix" }, diff --git a/frontend/public/organisations/DeployedExamples.ts b/frontend/public/organisations/DeployedExamples.ts index 51e64436..6b1938d4 100644 --- a/frontend/public/organisations/DeployedExamples.ts +++ b/frontend/public/organisations/DeployedExamples.ts @@ -17,7 +17,7 @@ export const DeployedExamples = [ banner: "https://aqua-famous-sailfish-288.mypinata.cloud/ipfs/bafybeiazll4pqkkhhpzrxv7vljfkhx4ez4i5ors7u4np7l26zjxg3sxybu", description: "Staking Pool Governance is a demonstration organisation in which the Powers protocol owns and governs a SimpleStakingPool — an on-chain pool where users stake one token and earn another. Powers drives the pool's privileged knobs (reward rate, emergency pause, token sweep, reward funding) through mandates, distributing power across five roles with deliberate checks and balances: the Rate Committee proposes rate changes and sweeps, Stakers hold a veto and a timelock, and a Guardian and Compliance Monitor can pause staking instantly while un-pausing requires a Staker vote. An ERC-4337 paymaster sponsors gas so members can participate without holding ETH. NOTE: this is a reference/demonstration design, not a compliant production system.", chainId: arbitrumSepolia.id, - address: '0x7F7A41CC2176c7b5e014d5cfC0dbE8c0b1f3dE97' + address: '0x1625eB24df6571Ae13ebD9Cc3bd82b5F1E38405a' }, { id: "bicameralism", diff --git a/solidity/governance/PAID_TIER_MANDATES.md b/solidity/governance/PAID_TIER_MANDATES.md index 4a7bfb91..09af3b9a 100644 --- a/solidity/governance/PAID_TIER_MANDATES.md +++ b/solidity/governance/PAID_TIER_MANDATES.md @@ -1,153 +1,298 @@ -# Paid Tier for Advanced Mandates — Design Proposal +# Paid Tier for Mandates — Design Proposal > Status: proposal / plan only. No protocol code has been changed by this document. +> +> This supersedes an earlier draft that used a *separate* `PremiumMandateManager` +> subscription contract. The current design **unifies the paywall with the +> `MandateRegistry`** — one primitive — and charges a **one-time fee on adoption** rather +> than a recurring subscription. -## Context +## Goals -Powers wants to monetize its "advanced" mandates (the Tier 4 contracts under -`src/addons/mandates/`). The question was whether a paid tier is possible given the -current whitelisting architecture, and if so how. +Powers wants to monetize advanced mandates **and** let third-party developers earn from +mandates they author, under four constraints: -**Feasibility answer: yes, it is possible** — but *where* the paywall lives determines -whether it's actually enforceable. +1. **Not predefined / organically updatable** — nothing hardcodes *which* mandates are paid; + pricing is per-mandate state that can change over time. +2. **Third-party devs get paid** — a mandate can have one or more developer payees. +3. **No ecosystem fragmentation** — a user (an org paying to use paid mandates) pays **one + address, once**, and never has to pay each individual developer. +4. **Elegant** — few primitives that can be broken; the `MandateRegistry` and the paid tier + are **one and the same system**. -Key architectural findings: +## Key architectural findings -- **The whitelist is opt-in, not a security boundary.** The `MandateRegistry` is +- **The whitelist is currently opt-in, not a security boundary.** The `MandateRegistry` is consulted exactly once — at adoption time, inside `PowersUtilities.storeMandate` (`src/libraries/PowersUtilities.sol:56-62`) via `isMandateAddressActive(targetMandate)`. But a Powers instance stores its registry as an **immutable** value set at construction (`src/Powers.sol:84`), and `address(0)` disables enforcement entirely. Anyone can deploy - their own `Powers` pointing at `address(0)` and adopt any mandate. So a registry-level - gate only paywalls the sanctioned deployment path (factory/frontend), not the protocol. + their own `Powers` pointing at `address(0)` and adopt any mandate. So a registry-level gate + only paywalls the sanctioned deployment path (factory/frontend), not the protocol. - **Mandates are singletons** shared across all DAOs; per-DAO state is keyed by - `(powers, mandateId)` (`src/Mandate.sol:56-60`). There is no per-DAO mandate deployment - to attach payment to. + `(powers, mandateId)` (`src/Mandate.sol:56-60`). There is no per-DAO mandate deployment to + attach payment to. - **The mandate contract is the only component that always runs**, regardless of which - registry/Powers is used. Therefore the paywall must live *inside* the premium mandate to - be tamper-proof. -- There is **no on-chain tier/price/subscription primitive today** — "advanced/Tier 4" - exists only in folder layout and `governance/CORE_MANDATES.md`. The reusable payment - building block is the `Governed721` / `GovernedToken_CollectSplitPayment` ERC20 - `transferFrom` pattern. + registry/Powers is used. Therefore the paywall must live *inside* the mandate to be + tamper-proof. +- **Mandates are currently registry-blind.** `Mandate`/`AsyncMandate` never learn which + registry (if any) whitelisted them; `initializeMandate` only records the calling org + (`msg.sender`). Adding a paywall requires giving the mandate base a canonical registry + reference. +- The reusable payment building blocks already in the repo are the ETH-transfer + percentage + split patterns in `src/addons/helpers/Governed721.sol` and + `src/addons/mandates/integrations/GovernedToken/GovernedToken_CollectSplitPayment.sol` + (`amount = quantity * percentage / DENOMINATOR`, pull-based per-recipient collection). -**Chosen requirements:** hard, mandate-enforced paywall · recurring subscription -(time-bounded access) · payment in an ERC20 stablecoin to a protocol-owned recipient. +## The core move: invert the check to **mandate → registry** + +Today the check flows **Powers → registry** and is bypassable. We invert it so each mandate, +inside its own `initializeMandate`, calls back to the canonical registry to: + +1. Confirm it is registered/active (the whitelist gate), and +2. If it is priced, charge the adopting org's prepaid credit balance and book the proceeds to + its developers (minus a protocol fee). + +Because `initializeMandate` always runs on adoption regardless of which Powers or registry is +used, this paywall is **tamper-proof** — there is no `address(0)` escape at the mandate level. + +## Design decisions + +| Decision | Choice | Consequence | +|---|---|---| +| **Charge cadence** | **One-time on adoption.** Check lives only in `initializeMandate` (the adoption/reform path). | Execution (`executeMandate` → `handleRequest`) never touches the registry. A broken/paused/deactivated registry blocks **new adoptions & new-org creation only**; already-adopted mandates keep executing and can still be revoked/paused. | +| **Enforcement** | **Mandatory.** Every mandate inheriting the base checks the registry on adoption; no sovereign bypass at the mandate level. | Acceptable *because* ongoing execution is unaffected — orgs keep running even if the registry is down. | +| **Credit representation** | **Internal, non-transferable balance denominated in wei.** No ERC20, no rate oracle. Internal plumbing, not a mandatory separate user step — it can be **transient at deploy time** (bought and spent to ~zero in one tx, see "Payment at deployment") yet **persistent** for later governance-driven adoptions. | Buying credits = prepaying ETH into a ledger; ETH stays in the registry to pay devs. Fewest primitives, no secondary market, no token to break. | +| **Registry owner** | **A Powers org.** Only that owning org can register/price mandates and set dev splits. | Governance *is* the trust vector — "registered" keeps meaning "vetted". Devs propose off-chain / via governance; the org ratifies by calling `registerMandate` with the dev list + price. Devs withdraw earnings permissionlessly. | ## Design -Two new contracts + a one-word change to the two mandate base classes. No change to -`Powers.sol` or `MandateRegistry.sol`. - -### 1. `PremiumMandateManager` (new subscription/access manager) -Path: `src/addons/helpers/PremiumMandateManager.sol`. `Ownable`, protocol-owned. - -State: -- `IERC20 public paymentToken;` and `address public revenueRecipient;` (both owner-settable). -- `struct Plan { uint256 pricePerPeriod; uint256 period; bool isPremium; }` and - `mapping(address mandate => Plan) public plans;` -- `mapping(address dao => mapping(address mandate => uint256 expiry)) public subscriptions;` - -Functions: -- `setPlan(address mandate, uint256 pricePerPeriod, uint256 period)` — `onlyOwner`; marks a - mandate premium and prices it. -- `setPaymentToken` / `setRevenueRecipient` — `onlyOwner`. -- `subscribe(address dao, address mandate, uint256 periods)` — anyone can pay (e.g. a DAO - member funds their org). Uses **`SafeERC20.safeTransferFrom`** - (`lib/openzeppelin-contracts/.../SafeERC20.sol`, already vendored) to pull - `pricePerPeriod * periods` from `msg.sender` to `revenueRecipient`; extends - `subscriptions[dao][mandate]` from `max(now, currentExpiry)` by `period * periods`. Emits - `Subscribed`. -- `hasAccess(address dao, address mandate) view returns (bool)` — returns `true` when the - mandate is **not** premium (so the base class is safe for all mandates), else - `subscriptions[dao][mandate] > block.timestamp`. - -Design consequence: a mandate can inherit the premium base and stay **free** until the -owner calls `setPlan`. This makes it safe to convert every addon mandate to the premium -base without forcing any of them to be paid. - -### 2. Premium mandate base classes -`Mandate` and `AsyncMandate` are independent bases (`src/Mandate.sol`, -`src/AsyncMandate.sol`), so two thin abstracts: -- `src/addons/PremiumMandate.sol` (`abstract PremiumMandate is Mandate`) -- `src/addons/PremiumAsyncMandate.sol` (`abstract PremiumAsyncMandate is AsyncMandate`) - -Each: -```solidity -address public immutable ACCESS_MANAGER; -constructor(address accessManager) { ACCESS_MANAGER = accessManager; } - -function initializeMandate(uint16 i, string memory nd, bytes memory ip, bytes memory cfg) - public virtual override -{ - require(IPremiumMandateManager(ACCESS_MANAGER).hasAccess(msg.sender, address(this)), "no active subscription"); - super.initializeMandate(i, nd, ip, cfg); // msg.sender == adopting DAO -} - -function executeMandate(address caller, uint16 id, bytes calldata data, uint256 nonce) - public virtual override returns (bool) -{ - require(IPremiumMandateManager(ACCESS_MANAGER).hasAccess(msg.sender, address(this)), "subscription expired"); - return super.executeMandate(caller, id, data, nonce); // msg.sender == DAO (Powers.sol:340) -} -``` -- The `initializeMandate` override gates **adoption** (fail early). -- The `executeMandate` override gates **every execution** — this is what makes the - subscription *recurring* (an expired sub blocks runs even after adoption). Powers calls - `executeMandate` at `src/Powers.sol:340`; `msg.sender` there is the DAO's Powers contract, - keying `hasAccess` correctly. - -### 3. Required base change — make `executeMandate` overridable -`executeMandate` is currently **not `virtual`** in either base (`src/Mandate.sol:72`, -`src/AsyncMandate.sol:72`), so it cannot be overridden. Add the `virtual` keyword to both -signatures. This is the only change to core/base files; `initializeMandate` and -`handleRequest` are already `virtual`. - -_Fallback if base edits are undesirable:_ instead put a `_requirePremiumAccess(powers)` -internal helper on the base abstracts and call it at the top of each premium mandate's -already-`virtual` `handleRequest` — one line per mandate, no base edit, but forgettable. - -### 4. Convert the advanced mandates -Change each of the ~20 files under `src/addons/mandates/` from `is Mandate` → -`is PremiumMandate` (and the one async case, `ChainlinkFunctions_Open.sol`, → -`is PremiumAsyncMandate`), threading `accessManager` into their constructors (forwarded via -`PremiumMandate(accessManager)`). They remain free until priced. Optionally scope the first -cut to a chosen subset rather than all 20. - -## Critical files -- **New:** `src/addons/helpers/PremiumMandateManager.sol`, `src/addons/PremiumMandate.sol`, - `src/addons/PremiumAsyncMandate.sol`, interface `src/interfaces/IPremiumMandateManager.sol`. -- **Edit (add `virtual`):** `src/Mandate.sol:72`, `src/AsyncMandate.sol:72`. -- **Edit (change base + constructor):** the ~20 mandates under `src/addons/mandates/**`. -- **Deploy:** extend `script/DeployMandates.s.sol` to deploy the manager and pass its - address into premium-mandate constructors; the deployer becomes manager owner (mirrors the - current registry-owner pattern at `script/DeployMandates.s.sol:133`). -- **After deploy:** `make update-builds` (per CLAUDE.md) to sync ABIs to - `frontend/context/builds/`; add manager address to `frontend/context/constants.ts`. +### 1. Extend `MandateRegistry` into the unified registry + credits contract +Path: `src/core/helpers/MandateRegistry.sol` — **the same contract** (that is the +unification). Stays `Ownable`; the owner is a Powers org. + +**New per-mandate state** (keyed by mandate **address**, matching the existing `addressKey` +lookup that `isMandateAddressActive` already uses): +- `mapping(address mandate => uint256 price) public mandatePrice;` — `0` = free. +- `mapping(address mandate => address[] devs) public mandateDevs;` — 1+ payees; the paid + portion is split equally, with any remainder wei going to the first dev. + +**New credit / earnings ledger** (all native ETH, internal): +- `mapping(address org => uint256) public credits;` — prepaid balance per org. +- `mapping(address dev => uint256) public earnings;` — withdrawable balance; the owning org + is itself a payee for the protocol fee. +- `uint16 public feeBps;` — adjustable protocol fee in basis points (e.g. `1000` = 10%), + owner-settable, capped (e.g. ≤ `3000`). + +**New / extended functions:** +- Extend `registerMandate` (and `batchRegisterMandates`) to also take `address[] devs` and + `uint256 price` — `onlyOwner`, reusing the existing validation + `addressKey` write path + (`MandateRegistry.sol:142-179`). Add owner-only `setMandatePricing(address mandate, + address[] devs, uint256 price)` and `setFeeBps(uint16)`. +- `buyCredits(address org) external payable` — anyone can top up any org's balance (a member + funds their own org); `credits[org] += msg.value`. Emits `CreditsPurchased`. This is the + single "pay one address, once" entry point. +- `onAdopt(address org) external` — **called by the mandate itself** during + `initializeMandate`. Here `msg.sender` **is the mandate** being charged (trustless + identity), and `org` is passed by the mandate (its own caller). Logic: + - `require(isMandateAddressActive(msg.sender), NotRegistered)` — the mandatory whitelist + gate. + - if `mandatePrice[msg.sender] == 0` → return (free; no charge). + - else: `credits[org] -= price` (reverts if insufficient); `fee = price * feeBps / 10000`; + `earnings[owner()] += fee`; split `price - fee` equally across `mandateDevs[msg.sender]` + into `earnings`. Emits `MandateCharged`. +- `withdrawEarnings() external` — pull pattern; sends `earnings[msg.sender]` in ETH after + zeroing it (checks-effects-interactions), via `.call` with a success check (mirrors the ETH + branch in `Governed721.sol`). Guard with `nonReentrant`. + +`onAdopt` mutates only registry ledger state and never calls back into the mandate or Powers, +so the reentrancy surface is minimal; still apply checks-effects-interactions. + +**Deactivation semantics fall out for free:** `deactivateMandate` makes `onAdopt` revert for +*new* adoptions, while orgs that already adopted are untouched (execution never calls the +registry). Paid orgs are grandfathered automatically. + +### 2. Add the mandate-side check in the two base classes +Files: `src/Mandate.sol`, `src/AsyncMandate.sol` (independent bases). +- Add `address public immutable MANDATE_REGISTRY;` and + `constructor(address registry_) { MANDATE_REGISTRY = registry_; }` to each base. +- At the **top of `initializeMandate`** (`src/Mandate.sol:50-64`, + `src/AsyncMandate.sol:50-64`), before storing state: + ```solidity + IMandateRegistry(MANDATE_REGISTRY).onAdopt(msg.sender); // msg.sender == adopting Powers org + ``` + This reverts (unregistered) or charges (priced) atomically with adoption. +- **`executeMandate` is deliberately NOT touched** and stays non-virtual. One-time cadence + means there is no per-execution gate — and this is exactly what preserves "orgs keep running + even if the registry is down." + +**Registry-address strategy — immutable via constructor** (recommended): test-friendly and +chain-flexible. Every concrete mandate forwards the canonical registry address into the base +constructor. This is a mechanical constructor change across all mandates (bounded; it applies +to every mandate because enforcement is universal). + +_Alternative considered:_ a hardcoded `address constant` pointing at a deterministic CREATE2 +address (create2 is always enabled in `foundry.toml`) — a one-line base change with zero +constructor churn, but awkward for unit tests (needs `vm.etch` at the constant) and requires a +strict deploy order. We default to the immutable-constructor approach for testability. + +### 3. `Powers.sol` / `PowersUtilities` — left unchanged +No edits to `Powers.sol` (not meant to be modified) or `PowersUtilities.storeMandate`. The +existing Powers-side `isMandateAddressActive` check (`PowersUtilities.sol:56-62`) becomes a +harmless belt-and-suspenders for the sanctioned path; the authoritative, non-bypassable check +now lives in the mandate base. (Removing the Powers-side check for strict single-source-of- +truth is possible later but is out of scope, to keep Powers untouched.) + +### 4. Deployment & ownership +File: `script/DeployMandates.s.sol`. +- Deploy the registry, then assign ownership to the protocol's Powers org (the script today + owns it as an EOA — switch to the Powers-org owner, matching the commented + `IPowers(registry.owner())` intent already present near line 130). +- Thread the registry address into every mandate constructor. +- Register mandates via the extended `batchRegisterMandates` with dev lists + prices + (free by default, so nothing becomes paid until the owning org prices it). + +### 5. Frontend / ABIs +- `make update-builds` from `solidity/` to sync ABIs to `frontend/context/builds/`. +- Ensure the registry address and any credits UI needs are reflected in + `frontend/context/constants.ts`. + +## Payment at deployment (one transaction) + +The credits ledger is what makes "pay one address, once" work across a multi-mandate +adoption — but it does **not** have to be a separate user-facing step. The entire adoption +call stack is non-payable (`PowersFactory.createPowers` → `PowersDeployer.deploy` → +`new Powers` + `constitute` → `PowersUtilities.storeMandate` → `initializeMandate`, which is +invoked with **no value**), so money can never reach a mandate through the path that adopts +it. That non-payable stack is precisely *why* the ledger exists: it decouples "money in" +(`buyCredits`) from "charge" (`onAdopt` debits the ledger). + +We deliver a **single-transaction deploy UX by making the ledger invisible**, not by removing +it. Add a public **payable** deploy entry point that auto-buys exactly the needed credits in +the same transaction: + +1. `createPowers{value: total}(...)` — the factory reads each constitution mandate's price + from the registry (`mandatePrice[mandate]`), sums them, and requires `msg.value >= total`. +2. It calls `registry.buyCredits{value: total}(newPowers)` for the org being deployed. +3. It runs `constitute`; each mandate's `initializeMandate` → `onAdopt` debits the freshly + bought credits down toward zero. +4. Any excess `msg.value` is refunded to the deployer, reusing the ETH `.call{value:}` + + refund pattern in `Governed721.sol:196,200-203`. + +The user sees **one transaction, one payment**. Credits remain as internal plumbing they +never touch. + +**Why the ledger stays (do not remove it):** mandates adopted *later* through governance also +go through the non-payable `adoptMandate` path (`Powers.sol:500`). A prepaid registry balance +is the only bridge that serves **both** deploy-time and later governance-driven paid +adoptions. Removing the ledger would either forbid post-deploy paid adoptions or force a +second payable path anyway. + +**Rejected alternative — charge at the factory, drop the ledger:** loses the tamper-proof +mandate-side `onAdopt` (anyone deploying `Powers` directly would bypass payment, defeating the +"invert the check to mandate → registry" premise above) and still cannot handle later +adoptions. + +**Access-control note:** `createPowers` is `onlyOwner` today (`PowersFactory.sol:121,142`), so +end users cannot self-deploy at all in the current model. A paid *public* deploy flow requires +reconsidering that gate — presumably intended, since monetizing deployment implies letting the +public deploy. (The `Powers` constructor is already `payable` at `Powers.sol:148`, with a +`receive()` at `:168`, but the deployer currently does `new Powers(...)` with no value, so that +ingress is unused today.) + +## Worked example + +1. A dev writes `FancyMandate`, deploys the singleton, and proposes it to the protocol's + governance org (the registry owner). +2. Governance calls `registerMandate("FancyMandate", addr, codeHash, [devA, devB], 0.01 ETH)`. + The mandate is now whitelisted and priced at 0.01 ETH per adoption, split between `devA` + and `devB`. +3. A DAO wants it. Any member calls `buyCredits{value: 0.05 ETH}(dao)` — the DAO now has a + 0.05 ETH credit balance. (One address, one payment — the member never touches `devA`/`devB`.) +4. The DAO adopts `FancyMandate`. During `initializeMandate`, the mandate calls + `onAdopt(dao)`: it is registered ✓, price 0.01 ETH is deducted from `credits[dao]` + (→ 0.04 left), a 10% fee (0.001 ETH) is booked to the owning org, and 0.0045 ETH each is + booked to `devA` and `devB`. +5. `devA` and `devB` later call `withdrawEarnings()` and receive their ETH. The owning org + withdraws its accumulated fees the same way. +6. If governance later `deactivateMandate`s `FancyMandate`, the DAO keeps using its already- + adopted copy indefinitely; only *new* adoptions are blocked. + +## Critical files (for the future implementation) +- **New / edit (core):** `src/core/helpers/MandateRegistry.sol` (credits + pricing + split + + withdraw + `onAdopt`), plus its `IMandateRegistry` interface (`onAdopt`, `buyCredits`, + `withdrawEarnings`, pricing getters/setters). +- **Edit (bases):** `src/Mandate.sol`, `src/AsyncMandate.sol` — add the registry immutable + + the `onAdopt` call at the top of `initializeMandate`. +- **Edit (mechanical, all mandates):** thread `registry` into constructors under + `src/core/mandates/**` and `src/addons/mandates/**` (e.g. `.../electoral/*.sol`, + `.../executive/*.sol`, and the async + `.../integrations/ChainlinkFunctions/ChainlinkFunctions_Open.sol`). +- **Edit (deploy):** `script/DeployMandates.s.sol`. +- **Edit (payable deploy path):** `src/core/helpers/PowersFactory.sol` (add public payable + deploy entry point that sums mandate prices, buys credits, refunds excess; reconsider the + `onlyOwner` gate) and `src/core/helpers/PowersDeployer.sol` (thread the payable path + through). Reference the already-payable `Powers` constructor / `receive()` + (`src/Powers.sol:148,168`) as the ETH ingress — `Powers.sol` itself stays unmodified. +- **Reuse:** ETH-transfer + percentage-split patterns in `src/addons/helpers/Governed721.sol` + and `src/addons/mandates/integrations/GovernedToken/GovernedToken_CollectSplitPayment.sol`; + vendored `SafeERC20` / `IERC20` under `lib/openzeppelin-contracts/...` (available but not yet + used by first-party code — adopt it for the new money-handling paths). ## What is deliberately NOT changed -- `MandateRegistry.sol` — the whitelist is orthogonal; premium mandates still register - normally. No paid logic added there. - `Powers.sol` — untouched (it is not meant to be modified). +- **No ERC20 credit token** — internal wei ledger only. +- **No per-execution / subscription logic** — a single one-time charge on adoption. + +## Verification (for the future implementation) +1. `cd solidity && forge build` — confirm the base changes + registry compile, and Powers + stays under the 24KB EIP-170 limit (Powers is untouched, so this should hold trivially). +2. New Foundry test `test/unit/MandateRegistryCredits.t.sol` (inherit `test/TestSetup.t.sol`): + - **Free mandate** → owner registers with `price = 0`; adoption succeeds, no credits move. + - **Priced, no credits** → adoption reverts (insufficient credits). + - **Buy then adopt** → `buyCredits{value:X}(org)` raises `credits[org]`; adoption succeeds; + assert the split: `feeBps` share to `earnings[ownerOrg]`, remainder split equally across + multiple devs (assert exact wei, including remainder-to-first-dev rounding). + - **Withdraw** → `withdrawEarnings()` pays each dev the correct ETH; balance zeroes; a + second call pays 0. + - **Unregistered / deactivated** → adoption reverts `NotRegistered`, proving the mandatory + whitelist gate. + - **Registry-down invariant** → after adopting a priced mandate, `deactivateMandate` it, + then confirm the org can **still `executeMandate`** the already-adopted mandate (execution + is independent of the registry) but **cannot adopt it again**. +3. `forge test --match-contract MandateRegistryCredits -vvv`. +4. `make update-builds`; smoke-check the frontend picks up the new ABI. + +## Pricing denomination & ETH volatility (resolved) + +**Chosen: prices stay denominated in wei; the registry owner (a Powers org) re-prices +periodically to track USD.** Re-pricing is already an owner-only action (`setMandatePricing`), +so this needs **zero new contract logic** — only operational discipline. Appropriate while the +protocol is pre-mainnet with small prices. The volatility is accepted: a 0.01 ETH price drifts +in USD terms until governance adjusts it. + +**Stablecoins — rejected.** Accepting USDC/other tokens forces multi-token accounting +(per-token earnings ledgers + per-token withdrawal), pulls in `SafeERC20` (unused in +first-party code today — only raw `IERC20`), and introduces cross-asset conversion rates. That +is the exact complexity we are avoiding, for a marginal UX gain over ETH. + +**Documented upgrade path (not built now): USD-denominated prices settled in ETH via a single +Chainlink ETH/USD feed.** Store `mandatePriceUsd`; at charge time read `latestRoundData` and +convert USD → wei. The treasury stays **all-ETH**, the earnings ledger stays **single-asset**, +and devs still withdraw ETH — the only conversion is USD → ETH at one point, via one feed. This +fits the existing failure model: the charge path is adoption-only, so a stale/down feed +reverting *new* adoptions matches the "registry down blocks new adoptions only" property. Note: +no price feed exists in the codebase today (the only Chainlink integration is Chainlink +*Functions*, off-chain compute), but `AggregatorV3Interface.sol` is already vendored under +`lib/chainlink-evm`, so a consumer needs no new dependency; per-chain feed addresses would be +added to `frontend/context/constants.ts` and the deploy config, and Anvil would need a mock +aggregator (there is precedent — tokens are already mocked). Graduate to this when real money / +mainnet is in play. -## Verification -1. `cd solidity && forge build` — confirm the base `virtual` change and new contracts - compile and Powers stays under the 24KB EIP-170 limit. -2. New Foundry test `test/unit/PremiumMandate.t.sol` (inherit `test/TestSetup.t.sol`), - covering: - - Deploy `PremiumMandateManager`, a premium test mandate, a mock ERC20; owner calls - `setPlan`. - - **Unpriced mandate** → `hasAccess` true → adoption + execution succeed (free-by-default - holds). - - **Priced, no subscription** → `constitute`/`adoptMandate` reverts "no active - subscription". - - **Subscribe then adopt** → `subscribe` pulls the correct ERC20 amount to - `revenueRecipient` (assert balances), adoption + execution succeed. - - **Expiry** → `vm.warp` past expiry → `executeMandate` reverts "subscription expired" - even though already adopted (proves recurring enforcement). - - **Re-subscribe** → access restored; `subscribe` while active extends from current - expiry, not `now`. -3. `forge test --match-contract PremiumMandate -vvv`. -4. Manual bypass check (documents the known property): a `Powers` deployed with - `mandateRegistry = address(0)` still cannot execute a priced premium mandate, because - enforcement is in the mandate itself — this is what makes it "hard". +## Open design points to resolve at implementation time +- **Split weighting** — equal split assumed; switch to weighted (bps per dev) only if devs + need unequal shares. +- **Post-registration price control** — owner-only assumed. If devs should self-update their + own mandate's price, add a `mandateDevs`-gated `setMandatePricing` variant. +- **Credit refunds / org withdrawals** — not included (prepaid, non-refundable). Add an org + `withdrawCredits` only if desired. diff --git a/solidity/governance/claude/global-environmental-movement/Deploy.s.sol b/solidity/governance/claude/global-environmental-movement/Deploy.s.sol index 46e216b7..f345a3ec 100644 --- a/solidity/governance/claude/global-environmental-movement/Deploy.s.sol +++ b/solidity/governance/claude/global-environmental-movement/Deploy.s.sol @@ -53,7 +53,7 @@ contract Deploy is DeployHelpers { uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (address powersAddress, address factoryAddress, address leaderElectionRegistryAddress) { helperConfig = new Configurations(); diff --git a/solidity/governance/claude/mandate-sandbox/Deploy.s.sol b/solidity/governance/claude/mandate-sandbox/Deploy.s.sol index a8fc5ce4..2b9c1224 100644 --- a/solidity/governance/claude/mandate-sandbox/Deploy.s.sol +++ b/solidity/governance/claude/mandate-sandbox/Deploy.s.sol @@ -50,7 +50,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; address constant ENTRY_POINT = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; address constant HANNAH = 0xc9ce1DC547C42F66464f5a7f0E3cd60EBf1C5Bd2; diff --git a/solidity/governance/claude/mandate-sandbox/Spec.md b/solidity/governance/claude/mandate-sandbox/Spec.md index 18166cef..4940fe9f 100644 --- a/solidity/governance/claude/mandate-sandbox/Spec.md +++ b/solidity/governance/claude/mandate-sandbox/Spec.md @@ -132,6 +132,6 @@ A `PowersPaymaster` will be deployed alongside Mandate Sandbox and seeded with * - **Actions script:** `solidity/governance/mandate-sandbox/Actions.s.sol` - **Runners script:** `solidity/governance/mandate-sandbox/Runners.s.sol` - **Test file:** `solidity/governance/mandate-sandbox/Test.t.sol` -- **Mandate version:** MAJOR=0, MINOR=1, PATCH=8 +- **Mandate version:** MAJOR=0, MINOR=1, PATCH = 9 - **Network:** Arbitrum Sepolia (chainId 421614) - Mandate `nameDescription` strings must match exactly across Deploy/Actions/Runners. diff --git a/solidity/governance/claude/project-orange/Deploy.s.sol b/solidity/governance/claude/project-orange/Deploy.s.sol index 3a4aa27f..3c068cd7 100644 --- a/solidity/governance/claude/project-orange/Deploy.s.sol +++ b/solidity/governance/claude/project-orange/Deploy.s.sol @@ -46,7 +46,7 @@ contract Deploy is DeployHelpers { uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; address constant ENTRY_POINT = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; diff --git a/solidity/governance/claude/project-orange/Spec.md b/solidity/governance/claude/project-orange/Spec.md index 82f770c3..9b8f9c31 100644 --- a/solidity/governance/claude/project-orange/Spec.md +++ b/solidity/governance/claude/project-orange/Spec.md @@ -172,7 +172,7 @@ This URI will be used as the second argument to the `Powers` constructor in the ## Implementation Notes -- **Mandate version:** MAJOR=0, MINOR=1, PATCH=8 +- **Mandate version:** MAJOR=0, MINOR=1, PATCH = 9 - **Mandate nameDescription strings must match exactly across Deploy, Actions, Runners, and Test files.** - **Demo timing:** All voting periods and timelocks use 5-minute blocks for quick iteration. A `minutesToBlocks()` helper converts to chain-specific block counts. - **Production timing:** Replace 5-min periods with 3 days, and 10-min timelocks with 4 days, before deploying to mainnet. diff --git a/solidity/governance/claude/secured-slate/Deploy.s.sol b/solidity/governance/claude/secured-slate/Deploy.s.sol index 829a2a29..0d967501 100644 --- a/solidity/governance/claude/secured-slate/Deploy.s.sol +++ b/solidity/governance/claude/secured-slate/Deploy.s.sol @@ -64,7 +64,7 @@ contract Deploy is DeployHelpers { uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers, SlateRegistry) { deployer = msg.sender; diff --git a/solidity/governance/claude/secured-slate/Spec.md b/solidity/governance/claude/secured-slate/Spec.md index 899716e1..656f1b35 100644 --- a/solidity/governance/claude/secured-slate/Spec.md +++ b/solidity/governance/claude/secured-slate/Spec.md @@ -223,6 +223,6 @@ sufficient to block malicious reforms without requiring admin supremacy. - **Actions script:** `solidity/governance/examples/SecuredSlate/actions/SecuredSlateActions.s.sol` - **Runners script:** `solidity/governance/examples/SecuredSlate/actions/SecuredSlateRunners.s.sol` - **Test file:** `solidity/test/governance/SecuredSlate.t.sol` -- **Mandate version:** MAJOR=0, MINOR=1, PATCH=8 +- **Mandate version:** MAJOR=0, MINOR=1, PATCH = 9 - **nameDescription strings must match exactly across all four files.** - **PauseMandates targets:** Flow 0 positions 1 and 2 (Cast Vote, Execute Results); Flow 1 position 0 (Add Slate). diff --git a/solidity/governance/claude/yield-endowment/Deploy.s.sol b/solidity/governance/claude/yield-endowment/Deploy.s.sol index a431c9a5..be0ebcf0 100644 --- a/solidity/governance/claude/yield-endowment/Deploy.s.sol +++ b/solidity/governance/claude/yield-endowment/Deploy.s.sol @@ -74,7 +74,7 @@ contract Deploy is DeployHelpers { uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; // Canonical ERC-4337 v0.7 EntryPoint — same address on all supported networks. address constant ENTRY_POINT = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; diff --git a/solidity/governance/claude/yield-endowment/Spec.md b/solidity/governance/claude/yield-endowment/Spec.md index 86cfa90b..e6f7d943 100644 --- a/solidity/governance/claude/yield-endowment/Spec.md +++ b/solidity/governance/claude/yield-endowment/Spec.md @@ -206,7 +206,7 @@ The permanent Founding Member structure is a deliberate trade-off against adapti - **Actions script:** `solidity/governance/claude/yield-endowment/Actions.s.sol` - **Runners script:** `solidity/governance/claude/yield-endowment/Runners.s.sol` - **Test file:** `solidity/governance/claude/yield-endowment/Test.t.sol` -- **Mandate version:** MAJOR=0, MINOR=1, PATCH=8 +- **Mandate version:** MAJOR=0, MINOR=1, PATCH = 9 - **Mandate nameDescription strings must match exactly across all four files.** - **Founder addresses:** Replace `FOUNDER_1` through `FOUNDER_5` constants in `Deploy.s.sol` with the real addresses before deploying. - **SlateRegistry timing:** Set `submitSlateDuration` and `voteDuration` to production values (2-week each) in `Deploy.s.sol`. Test files use accelerated timing (~30 min each). diff --git a/solidity/governance/examples/AccountAbstraction.s.sol b/solidity/governance/examples/AccountAbstraction.s.sol index 21d2cbfe..039cf289 100644 --- a/solidity/governance/examples/AccountAbstraction.s.sol +++ b/solidity/governance/examples/AccountAbstraction.s.sol @@ -43,7 +43,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; address constant ENTRY_POINT = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; address public cedars = 0x328735d26e5Ada93610F0006c32abE2278c46211; diff --git a/solidity/governance/examples/Bicameralism.s.sol b/solidity/governance/examples/Bicameralism.s.sol index 906934b4..d1f6f17d 100644 --- a/solidity/governance/examples/Bicameralism.s.sol +++ b/solidity/governance/examples/Bicameralism.s.sol @@ -34,7 +34,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers) { // step 0, setup. diff --git a/solidity/governance/examples/ElectionListsDao.s.sol b/solidity/governance/examples/ElectionListsDao.s.sol index 4f9b96ed..ac19a832 100644 --- a/solidity/governance/examples/ElectionListsDao.s.sol +++ b/solidity/governance/examples/ElectionListsDao.s.sol @@ -38,7 +38,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers, ElectionRegistry) { helperConfig = new Configurations(); diff --git a/solidity/governance/examples/Governed721.s.sol b/solidity/governance/examples/Governed721.s.sol index 0909e6f1..30b76bb1 100644 --- a/solidity/governance/examples/Governed721.s.sol +++ b/solidity/governance/examples/Governed721.s.sol @@ -58,7 +58,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (address powersAddress, address governed721Address, address electionRegistryAddress) { // step 0, setup. diff --git a/solidity/governance/examples/NestedSafeGovernance.s.sol b/solidity/governance/examples/NestedSafeGovernance.s.sol index e6e64acd..4b9a4f6b 100644 --- a/solidity/governance/examples/NestedSafeGovernance.s.sol +++ b/solidity/governance/examples/NestedSafeGovernance.s.sol @@ -49,7 +49,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers, PowersFactory) { helperConfig = new Configurations(); diff --git a/solidity/governance/examples/OptimisticExecution.s.sol b/solidity/governance/examples/OptimisticExecution.s.sol index 73e0ff86..3e5c10af 100644 --- a/solidity/governance/examples/OptimisticExecution.s.sol +++ b/solidity/governance/examples/OptimisticExecution.s.sol @@ -34,7 +34,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external { helperConfig = new Configurations(); diff --git a/solidity/governance/examples/Powers101.s.sol b/solidity/governance/examples/Powers101.s.sol index 0f6ec4ad..555c99d4 100644 --- a/solidity/governance/examples/Powers101.s.sol +++ b/solidity/governance/examples/Powers101.s.sol @@ -44,7 +44,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers) { // step 0, setup. diff --git a/solidity/governance/examples/SlateVoting.s.sol b/solidity/governance/examples/SlateVoting.s.sol index 58490496..af6ddf42 100644 --- a/solidity/governance/examples/SlateVoting.s.sol +++ b/solidity/governance/examples/SlateVoting.s.sol @@ -57,7 +57,7 @@ contract Deploy is DeployHelpers { uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers, SlateRegistry) { helperConfig = new Configurations(); diff --git a/solidity/governance/examples/TokenDelegates.s.sol b/solidity/governance/examples/TokenDelegates.s.sol index 7316a2c6..b4caa7eb 100644 --- a/solidity/governance/examples/TokenDelegates.s.sol +++ b/solidity/governance/examples/TokenDelegates.s.sol @@ -39,7 +39,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external { // step 0, setup. diff --git a/solidity/governance/publius-registry/Deploy.s.sol b/solidity/governance/publius-registry/Deploy.s.sol index 0d6a1eea..e321bd8a 100644 --- a/solidity/governance/publius-registry/Deploy.s.sol +++ b/solidity/governance/publius-registry/Deploy.s.sol @@ -37,7 +37,7 @@ contract Deploy is DeployHelpers { // Select version mandates to be used. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function run() external returns (Powers) { // step 0, setup. diff --git a/solidity/governance/staking-pool-governance/Deploy.s.sol b/solidity/governance/staking-pool-governance/Deploy.s.sol index 82b83ddb..7ffcb474 100644 --- a/solidity/governance/staking-pool-governance/Deploy.s.sol +++ b/solidity/governance/staking-pool-governance/Deploy.s.sol @@ -65,7 +65,7 @@ contract Deploy is DeployHelpers { // Mandate registry version. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; // Canonical ERC-4337 v0.7 EntryPoint (same address on all supported networks). address constant ENTRY_POINT = 0x0000000071727De22E5E9d8BAf0edAc6f37da032; @@ -191,10 +191,10 @@ contract Deploy is DeployHelpers { // Quorum-gated + reads live nominee/role state → set maxExecutionDelay (stale-state rule). mandateCount++; conditions.allowedRole = 1; // Stakers vote - conditions.votingPeriod = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; - conditions.maxExecutionDelay = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); + conditions.maxExecutionDelay = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); constitution.push( PowersTypes.MandateInitData({ nameDescription: "Elect Stakers: Existing Stakers peer-vote to elect up to 5 members from the nominee pool. One-time election; revokes itself after execution.", @@ -249,10 +249,10 @@ contract Deploy is DeployHelpers { // Peer-elect the Committee (Stakers vote). mandateCount++; conditions.allowedRole = 1; // Stakers vote - conditions.votingPeriod = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; - conditions.maxExecutionDelay = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); + conditions.maxExecutionDelay = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); constitution.push( PowersTypes.MandateInitData({ nameDescription: "Elect Committee: Stakers peer-vote to elect up to 3 Rate Committee members from the nominee pool. One-time election; revokes itself after execution.", @@ -324,7 +324,7 @@ contract Deploy is DeployHelpers { // Propose a new reward rate (Committee vote). mandateCount++; conditions.allowedRole = 2; // Rate Committee - conditions.votingPeriod = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; constitution.push( @@ -340,7 +340,7 @@ contract Deploy is DeployHelpers { // Veto a proposed rate (Stakers, fast window — Carlisle rapid-access). mandateCount++; conditions.allowedRole = 1; // Stakers - conditions.votingPeriod = daysToBlocks(1, helperConfig.getBlocksPerHour(block.chainid)); // ~24h + conditions.votingPeriod = minutesToBlocks(1, helperConfig.getBlocksPerHour(block.chainid)); // ~1 min conditions.quorum = 30; conditions.succeedAt = 51; conditions.needFulfilled = mandateCount - 1; // proposal must have passed first @@ -359,7 +359,7 @@ contract Deploy is DeployHelpers { conditions.allowedRole = 2; // Rate Committee conditions.needFulfilled = mandateCount - 2; // proposal fulfilled conditions.needNotFulfilled = mandateCount - 1; // veto NOT fulfilled - conditions.timelock = daysToBlocks(2, helperConfig.getBlocksPerHour(block.chainid)); // 48h > 24h veto window + conditions.timelock = minutesToBlocks(2, helperConfig.getBlocksPerHour(block.chainid)); // 2 min > 1 min veto window constitution.push( PowersTypes.MandateInitData({ nameDescription: "Execute Reward Rate: Set the approved reward rate on the staking pool after the veto window and timelock.", @@ -415,7 +415,7 @@ contract Deploy is DeployHelpers { // Community un-pause (Stakers vote; deliberate). mandateCount++; conditions.allowedRole = 1; // Stakers - conditions.votingPeriod = daysToBlocks(2, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(2, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; constitution.push( @@ -474,7 +474,7 @@ contract Deploy is DeployHelpers { // Propose a sweep (Committee vote). mandateCount++; conditions.allowedRole = 2; // Rate Committee - conditions.votingPeriod = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; constitution.push( @@ -490,7 +490,7 @@ contract Deploy is DeployHelpers { // Veto a sweep (Stakers). mandateCount++; conditions.allowedRole = 1; // Stakers - conditions.votingPeriod = daysToBlocks(2, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(2, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; conditions.needFulfilled = mandateCount - 1; @@ -509,7 +509,7 @@ contract Deploy is DeployHelpers { conditions.allowedRole = 2; // Rate Committee conditions.needFulfilled = mandateCount - 2; conditions.needNotFulfilled = mandateCount - 1; - conditions.timelock = daysToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); // extra-long + conditions.timelock = minutesToBlocks(7, helperConfig.getBlocksPerHour(block.chainid)); // extra-long constitution.push( PowersTypes.MandateInitData({ nameDescription: "Execute Sweep: Sweep the approved tokens out of the staking pool after the veto window and long timelock.", @@ -538,10 +538,10 @@ contract Deploy is DeployHelpers { // Propose reform (Stakers, supermajority). mandateCount++; conditions.allowedRole = 1; // Stakers - conditions.votingPeriod = daysToBlocks(14, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(14, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 50; conditions.succeedAt = 66; - conditions.maxExecutionDelay = daysToBlocks(14, helperConfig.getBlocksPerHour(block.chainid)); + conditions.maxExecutionDelay = minutesToBlocks(14, helperConfig.getBlocksPerHour(block.chainid)); constitution.push( PowersTypes.MandateInitData({ nameDescription: "Propose Governance Reform: Stakers vote (supermajority) to adopt new governance mandates.", @@ -556,7 +556,7 @@ contract Deploy is DeployHelpers { mandateCount++; conditions.allowedRole = 1; // Stakers conditions.needFulfilled = mandateCount - 1; - conditions.timelock = daysToBlocks(15, helperConfig.getBlocksPerHour(block.chainid)); + conditions.timelock = minutesToBlocks(15, helperConfig.getBlocksPerHour(block.chainid)); constitution.push( PowersTypes.MandateInitData({ nameDescription: "Adopt New Mandates: Execute an approved governance reform by adopting the proposed mandates.", @@ -600,7 +600,7 @@ contract Deploy is DeployHelpers { mandateCount++; conditions.allowedRole = 2; // Rate Committee - conditions.votingPeriod = daysToBlocks(1, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(1, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; conditions.needFulfilled = mandateCount - 1; @@ -644,7 +644,7 @@ contract Deploy is DeployHelpers { // Execute the withdrawal (Committee vote). mandateCount++; conditions.allowedRole = 2; // Rate Committee - conditions.votingPeriod = daysToBlocks(1, helperConfig.getBlocksPerHour(block.chainid)); + conditions.votingPeriod = minutesToBlocks(1, helperConfig.getBlocksPerHour(block.chainid)); conditions.quorum = 30; conditions.succeedAt = 51; conditions.needFulfilled = mandateCount - 1; diff --git a/solidity/governance/staking-pool-governance/Spec.md b/solidity/governance/staking-pool-governance/Spec.md index 86e17fac..a300f937 100644 --- a/solidity/governance/staking-pool-governance/Spec.md +++ b/solidity/governance/staking-pool-governance/Spec.md @@ -206,7 +206,7 @@ Carlisle & Gruby (2019), Delaware DGCL, and the UK CIC guidance. ## Implementation Notes - Deploy: `Deploy.s.sol` · Actions: `Actions.s.sol` · Runners: `Runners.s.sol` · Test: `Test.t.sol` -- Mandate version: MAJOR=0, MINOR=1, PATCH=8 +- Mandate version: MAJOR=0, MINOR=1, PATCH = 9 - Mandate `nameDescription` strings must match exactly across all four files. - Tests run against a Sepolia fork; discovery requires pointing Foundry at this folder (`FOUNDRY_TEST=governance/staking-pool-governance`) — the Makefile does this for you. diff --git a/solidity/src/AsyncMandate.sol b/solidity/src/AsyncMandate.sol index 0dc2ec60..ea2d72c4 100644 --- a/solidity/src/AsyncMandate.sol +++ b/solidity/src/AsyncMandate.sol @@ -158,7 +158,7 @@ abstract contract AsyncMandate is ERC165, IMandate { } function version() public pure returns (uint16 major, uint16 minor, uint16 patch) { - return (0, 1, 8); + return (0, 1, 9); } // can include here a getMetadata that returns a string uri from the config -- if there is one. This would be useful for frontends to easily retrieve metadata about the mandate. diff --git a/solidity/src/Mandate.sol b/solidity/src/Mandate.sol index 1932452d..d87759fa 100644 --- a/solidity/src/Mandate.sol +++ b/solidity/src/Mandate.sol @@ -128,7 +128,7 @@ abstract contract Mandate is ERC165, IMandate { } function version() public pure virtual returns (uint16 major, uint16 minor, uint16 patch) { - return (0, 1, 8); + return (0, 1, 9); } // can include here a getMetadata that returns a string uri from the config -- if there is one. This would be useful for frontends to easily retrieve metadata about the mandate. diff --git a/solidity/src/core/mandates/electoral/PeerSelect.sol b/solidity/src/core/mandates/electoral/PeerSelect.sol index 99bc30db..b828da6c 100644 --- a/solidity/src/core/mandates/electoral/PeerSelect.sol +++ b/solidity/src/core/mandates/electoral/PeerSelect.sol @@ -20,9 +20,7 @@ import { Strings } from "@lib/openzeppelin-contracts/contracts/utils/Strings.sol contract PeerSelect is Mandate { struct Mem { - address caller; address[] nominees; - string[] nomineeList; bool[] selection; uint256 numSelections; uint256 i; @@ -38,26 +36,20 @@ contract PeerSelect is Mandate { emit Mandate__Deployed(configParams); } - function initializeMandate( - uint16 index, - string memory nameDescription, - bytes memory inputParams, - bytes memory config - ) public override { - Mem memory mem; - (,, mem.nomineesContract) = abi.decode(config, (uint8, uint256, address)); - - // Get nominees from the Nominees contract - mem.nominees = Nominees(mem.nomineesContract).getNominees(); - - // Create dynamic inputParams based on nominees - mem.nomineeList = new string[](mem.nominees.length); - for (uint256 i = 0; i < mem.nominees.length; i++) { - mem.nomineeList[i] = string.concat("bool ", Strings.toHexString(mem.nominees[i])); + /// @notice Build the input fields dynamically from the *current* nominees. + /// @dev One `bool
` field per nominee. Computed on read (not snapshotted at + /// initialization) because nominations happen after the constitution is deployed — + /// snapshotting at init would freeze an empty list and the UI would show no inputs. + function getInputParams(address powers, uint16 mandateId) public view override returns (bytes memory inputParams) { + (,, address nomineesContract) = abi.decode(getConfig(powers, mandateId), (uint8, uint256, address)); + + address[] memory nominees = Nominees(nomineesContract).getNominees(); + string[] memory nomineeList = new string[](nominees.length); + for (uint256 i = 0; i < nominees.length; i++) { + nomineeList[i] = string.concat("bool ", Strings.toHexString(nominees[i])); } - inputParams = abi.encode(mem.nomineeList); - super.initializeMandate(index, nameDescription, inputParams, config); + return abi.encode(nomineeList); } /// @notice Build calls to assign or revoke roles for selected nominees diff --git a/solidity/src/core/mandates/integrations/ElectionRegistry/ElectionRegistry_Vote.sol b/solidity/src/core/mandates/integrations/ElectionRegistry/ElectionRegistry_Vote.sol index 97220af2..735ed372 100644 --- a/solidity/src/core/mandates/integrations/ElectionRegistry/ElectionRegistry_Vote.sol +++ b/solidity/src/core/mandates/integrations/ElectionRegistry/ElectionRegistry_Vote.sol @@ -22,7 +22,6 @@ contract ElectionRegistry_Vote is Mandate { address caller; bytes32 mandateHash; address[] nominees; - string[] nomineeList; bool[] vote; uint256 numVotes; uint256 i; @@ -38,30 +37,21 @@ contract ElectionRegistry_Vote is Mandate { emit Mandate__Deployed(configParams); } - function initializeMandate( - uint16 index, - string memory nameDescription, - bytes memory inputParams, - bytes memory config - ) public override { - Mem memory mem; - (mem.openElectionContract, mem.maxVotes, mem.electionId) = abi.decode(config, (address, uint256, uint256)); + /// @notice Build the input fields dynamically from the *current* election nominees. + /// @dev One `bool
` field per nominee. Computed on read (not snapshotted at + /// initialization) because nominees register after the constitution is deployed — + /// snapshotting at init would freeze an empty list and the UI would show no inputs. + function getInputParams(address powers, uint16 mandateId) public view override returns (bytes memory inputParams) { + (address openElectionContract,, uint256 electionId) = + abi.decode(getConfig(powers, mandateId), (address, uint256, uint256)); - // Check if election is open - otherwise revert. - if (!ElectionRegistry(mem.openElectionContract).isElectionOpen(mem.electionId)) { - revert("Election is not open."); + address[] memory nominees = ElectionRegistry(openElectionContract).getNominees(electionId); + string[] memory nomineeList = new string[](nominees.length); + for (uint256 i = 0; i < nominees.length; i++) { + nomineeList[i] = string.concat("bool ", Strings.toHexString(nominees[i])); } - // Get nominees from the ElectionRegistry contract - mem.nominees = ElectionRegistry(mem.openElectionContract).getNominees(mem.electionId); - - // Create dynamic inputParams based on nominees - mem.nomineeList = new string[](mem.nominees.length); - for (uint256 i = 0; i < mem.nominees.length; i++) { - mem.nomineeList[i] = string.concat("bool ", Strings.toHexString(mem.nominees[i])); - } - inputParams = abi.encode(mem.nomineeList); - super.initializeMandate(index, nameDescription, inputParams, config); + return abi.encode(nomineeList); } /// @notice Build a call to cast a vote in the ElectionRegistry contract diff --git a/solidity/test/TestConstitutions.sol b/solidity/test/TestConstitutions.sol index 1dfa17ed..bb6bd563 100644 --- a/solidity/test/TestConstitutions.sol +++ b/solidity/test/TestConstitutions.sol @@ -50,7 +50,7 @@ contract TestConstitutions is Test { // minimum mandate version to be used in testing. uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; // function setUp() public { // Set up any common state or variables needed for the tests diff --git a/solidity/test/TestSetup.t.sol b/solidity/test/TestSetup.t.sol index a1abe8af..a4364e8d 100644 --- a/solidity/test/TestSetup.t.sol +++ b/solidity/test/TestSetup.t.sol @@ -84,7 +84,7 @@ abstract contract TestVariables is PowersErrors, PowersTypes, PowersEvents { // versioning uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; address[] targets; uint256[] values; diff --git a/solidity/test/testing-principles.md b/solidity/test/testing-principles.md index 65ae754d..2c63454e 100644 --- a/solidity/test/testing-principles.md +++ b/solidity/test/testing-principles.md @@ -185,7 +185,7 @@ The minimum mandate version used in tests is declared as constants in both `Test ```solidity uint16 constant MAJOR = 0; uint16 constant MINOR = 1; -uint16 constant PATCH = 8; +uint16 constant PATCH = 9; ``` Always look up mandate addresses via `registry.getMandateAddress(MAJOR, MINOR, PATCH, "MandateName")`. Never hardcode mandate contract addresses. diff --git a/solidity/test/unit/AsyncMandate.t.sol b/solidity/test/unit/AsyncMandate.t.sol index 749d6704..7d280e7e 100644 --- a/solidity/test/unit/AsyncMandate.t.sol +++ b/solidity/test/unit/AsyncMandate.t.sol @@ -256,7 +256,7 @@ contract AsyncMandateVersionInterfaceTest is TestSetupAsync { (uint16 major, uint16 minor, uint16 patch) = asyncMock.version(); assertEq(major, 0); assertEq(minor, 1); - assertEq(patch, 8); + assertEq(patch, 9); } function testSupportsIMandateInterface() public view { diff --git a/solidity/test/unit/PowersMandateRegistry.t.sol b/solidity/test/unit/PowersMandateRegistry.t.sol index bf7b60bb..be6a7a64 100644 --- a/solidity/test/unit/PowersMandateRegistry.t.sol +++ b/solidity/test/unit/PowersMandateRegistry.t.sol @@ -19,7 +19,7 @@ contract PowersMandateRegistryTest is Test { uint16 constant MAJOR = 0; uint16 constant MINOR = 1; - uint16 constant PATCH = 8; + uint16 constant PATCH = 9; function setUp() public { registry = new MandateRegistry(address(this)); diff --git a/solidity/test/unit/mandates/Electoral.t.sol b/solidity/test/unit/mandates/Electoral.t.sol index 8336e9d2..65fa96ca 100644 --- a/solidity/test/unit/mandates/Electoral.t.sol +++ b/solidity/test/unit/mandates/Electoral.t.sol @@ -20,6 +20,7 @@ import { RevokeInactiveAccounts } from "@src/addons/mandates/electoral/RevokeIna import { PowersErrors } from "@src/interfaces/PowersErrors.sol"; import { AssignExternalRole } from "@src/addons/mandates/electoral/AssignExternalRole.sol"; import { RevokeAccountsRoleId } from "@src/addons/mandates/electoral/RevokeAccountsRoleId.sol"; +import { Strings } from "@lib/openzeppelin-contracts/contracts/utils/Strings.sol"; /// @notice Comprehensive unit tests for all electoral mandates /// @dev Tests all functionality of electoral mandates including initialization, execution, and edge cases @@ -47,6 +48,31 @@ contract PeerSelectTest is TestSetupElectoral { assertEq(configuredNominees, address(nomineesContract)); } + /// @notice The input fields must be derived from the *current* nominees, not snapshotted at + /// constitution time (when the nominee pool is empty). Regression test for the UI + /// showing no checkboxes on "Elect ..." mandates. + function testPeerSelectDynamicInputParams() public { + // Before anyone nominates, there are no input fields. + string[] memory paramsBefore = abi.decode(peerSelect.getInputParams(address(daoMock), mandateId), (string[])); + assertEq(paramsBefore.length, 0); + + // Nominate three candidates. + vm.startPrank(address(daoMock)); + nomineesContract.nominate(charlotte, true); + nomineesContract.nominate(david, true); + nomineesContract.nominate(eve, true); + vm.stopPrank(); + + // getInputParams now reflects the live nominee pool: one `bool
` field each. + string[] memory paramsAfter = abi.decode(peerSelect.getInputParams(address(daoMock), mandateId), (string[])); + address[] memory currentNominees = nomineesContract.getNominees(); + assertEq(paramsAfter.length, 3); + assertEq(paramsAfter.length, currentNominees.length); + for (uint256 i = 0; i < currentNominees.length; i++) { + assertEq(paramsAfter[i], string.concat("bool ", Strings.toHexString(currentNominees[i]))); + } + } + function testPeerSelectExecution() public { // Nominate 3 candidates vm.startPrank(address(daoMock));