@parity/dotns-cli 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -22
- package/dist/cli.js +315 -205
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2813,27 +2813,27 @@ var init_DotnsResolver = __esm(() => {
|
|
|
2813
2813
|
var PopRules_default;
|
|
2814
2814
|
var init_PopRules = __esm(() => {
|
|
2815
2815
|
PopRules_default = {
|
|
2816
|
-
abi: [{ type: "constructor", inputs: [], stateMutability: "nonpayable" }, { type: "function", name: "MAX_RESERVATION_TIME", inputs: [], outputs: [{ name: "", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "UPGRADE_INTERFACE_VERSION", inputs: [], outputs: [{ name: "", type: "string", internalType: "string" }], stateMutability: "view" }, { type: "function", name: "classifyName", inputs: [{ name: "name", type: "string", internalType: "string" }], outputs: [{ name: "requirement", type: "uint8", internalType: "enum IPopRules.PopStatus" }, { name: "message", type: "string", internalType: "string" }], stateMutability: "pure" }, { type: "function", name: "
|
|
2817
|
-
bytecode: { object: "0x60a080604052346100c257306080525f516020611aa05f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516119d990816100c78239608051818181610b1b0152610bbe0152f35b6001600160401b0319166001600160401b039081175f516020611aa05f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461104b575080630848731f14610fe057806311d812c314610fb8578063257ab86614610f765780633017fa3314610f1857806335696fa714610d3a5780634f1ef28614610b6f57806352d1902d14610b0957806354fd4d5014610ac257806368e344e914610aa55780636bbfce2b1461078f578063715018a6146107285780638ac7f0f51461069e5780638da5cb5b1461066a5780639180999414610606578063ad3cb1cc146105bf578063b4956ade1461057b578063c5b9e44e14610513578063c5c9504814610484578063d6fbf20214610468578063dcd62573146102ef578063f2fde38b146102c4578063fe2c6198146102815763fe4b84df14610124575f80fd5b3461027d57602036600319011261027d575f5160206119845f395f51905f525460ff8160401c1615906001600160401b03811680159081610275575b600114908161026b575b159081610262575b506102535767ffffffffffffffff1981166001175f5160206119845f395f51905f525581610227575b506101a461188c565b6101ac61188c565b6101b461188c565b6101bd336114db565b6101c561188c565b6004355f556101d057005b68ff0000000000000000195f5160206119845f395f51905f5254165f5160206119845f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001175f5160206119845f395f51905f52555f61019b565b63f92ee8a960e01b5f5260045ffd5b9050155f610172565b303b15915061016a565b839150610160565b5f80fd5b3461027d57602036600319011261027d576004356001600160401b03811161027d576102bc6102b660209236906004016110c1565b9061154c565b604051908152f35b3461027d57602036600319011261027d576102ed6102e061109e565b6102e8611859565b6114db565b005b3461027d576102fd36611112565b9061030661142e565b9161031182856112a6565b92909160018060a01b0316805f52600160205260ff60405f2054169560048710156104545761037d602093610382926103716103d99a80155f1461044e57610359848461154c565b8b52610368888c01998a611462565b60408b01611462565b60608901978852611769565b61123e565b6040519061038f82611154565b546001600160a01b03811680835260a09190911c6001600160401b0316939091018390528015159283610444575b5082610439575b50506103dd575b5050604051918291826111f5565b0390f35b6040516003926103ee606083611183565b602f82527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060208301526e131a5d19481c9959da5cdd1c985b9d608a1b6040830152525282806103cb565b1415905085806103c4565b42109250876103bd565b5f610359565b634e487b7160e01b5f52602160045260245ffd5b3461027d575f36600319011261027d5760205f54604051908152f35b3461027d57602036600319011261027d576004356001600160401b03811161027d573660238201121561027d576020806104cb6103d99336906024816004013591016111bf565b604051928184925191829101835e60029082019081520301902054604080516001600160a01b038316815260a09290921c6001600160401b0316602083015290918291820190565b3461027d57602036600319011261027d5761052c61109e565b610534611859565b6003546001600160a01b0391821691829082167f482b97c53e48ffa324a976e2738053e9aff6eee04d8aac63b10e19411d869b825f80a36001600160a01b03191617600355005b3461027d57602036600319011261027d576004356001600160401b03811161027d576105b66105b060209236906004016110c1565b906116d6565b15604051908152f35b3461027d575f36600319011261027d576103d96040516105e0604082611183565b60058152640352e302e360dc1b60208201526040519182916020835260208301906110ee565b3461027d57602036600319011261027d576004356001600160401b03811161027d576001600160401b0361064961064360609336906004016110c1565b9061146e565b90604093929351931515845260018060a01b03166020840152166040820152f35b3461027d575f36600319011261027d575f5160206119445f395f51905f52546040516001600160a01b039091168152602090f35b3461027d57602036600319011261027d576004356001600160401b03811161027d5760206106d1819236906004016110c1565b919082604051938492833781016002815203019020604051906106f382611154565b546001600160a01b03811680835260a09190911c6001600160401b031692909101829052604080519182526020820192909252f35b3461027d575f36600319011261027d57610740611859565b5f5160206119445f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461027d5761079d36611112565b90916107a761142e565b926107b561037d8284611769565b6020604051916107c483611154565b546001600160a01b03811680845260a09190911c6001600160401b0316919092018190528115159081610a9b575b50610a28575b5061080381836112a6565b6001600160a01b039094165f9081526001602052604090205460ff16936004851015939190846104545785610a225761083c848461154c565b875261084b8260208901611462565b6108588660408901611462565b806060880152600482101561045457600382146109f95750600281036108eb5750505061045457600203610897576103d9905b604051918291826111f5565b6040516305bf8fb360e31b815260206004820152602560248201527f52657175697265732046756c6c20506572736f6e686f6f64207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b6001036109725750506104545760018114908115610967575b5015610913576103d99061088b565b6040516305bf8fb360e31b815260206004820152602560248201527f526571756972657320506572736f6e686f6f64204c697465207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b600291501482610904565b61097c92506116d6565b151590816109ed575b5015610994576103d99061088b565b6040516305bf8fb360e31b815260206004820152602a60248201527f506572736f6e686f6f64204c6974652063616e6e6f742072656769737465722060448201526962617365206e616d657360b01b6064820152608490fd5b60019150141582610985565b6040516305bf8fb360e31b815260206004820152908190610a1e9060248301906110ee565b0390fd5b5f61083c565b6001600160a01b03841603610a3d57846107f8565b6040516305bf8fb360e31b815260206004820152602f60248201527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060448201526e131a5d19481c9959da5cdd1c985b9d608a1b6064820152608490fd5b90504210866107f2565b3461027d575f36600319011261027d576020604051626ebe008152f35b3461027d575f36600319011261027d576103d9604051610ae3604082611183565b60058152640312e302e360dc1b60208201526040519182916020835260208301906110ee565b3461027d575f36600319011261027d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610b605760206040515f5160206119645f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261027d57610b8361109e565b6024356001600160401b03811161027d573660238201121561027d57610bb39036906024816004013591016111bf565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610d18575b50610b6057610bf6611859565b6040516352d1902d60e01b81526001600160a01b0382169290602081600481875afa5f9181610ce4575b50610c385783634c9c8ce360e01b5f5260045260245ffd5b805f5160206119645f395f51905f52859203610cd25750823b15610cc0575f5160206119645f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610ca8576102ed916118b7565b505034610cb157005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610d10575b81610d0060209383611183565b8101031261027d57519085610c20565b3d9150610cf3565b5f5160206119645f395f51905f52546001600160a01b03161415905083610be9565b3461027d57610d4836611112565b600354909291906001600160a01b03163303610f0957610d6881836112a6565b50600481101561045457600103610eac57610d8291611769565b604051815190602081818501938085835e8101600281520301902060405190610daa82611154565b549060206001600160401b0360018060a01b0384169384845260a01c1691015215610dd157005b626ebe004201804211610e98577f4d72f477fa240edc1a91eaafd5ec14ee8c94142aa248fafb508ac804c9c5362d916001600160401b03602092169360405195610e1a87611154565b60018060a01b031695868152838101868152604051858185518088835e6002908201908152030190209151825491516001600160e01b03199092166001600160a01b03919091161760a09190911b67ffffffffffffffff60a01b16179055604051905190918291908190835e81015f815203902092604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b6040516305bf8fb360e31b815260206004820152602e60248201527f42617365207265736572766174696f6e2072657175697265732061206c69746560448201526d2d656c696769626c65206e616d6560901b6064820152608490fd5b633217675b60e21b5f5260045ffd5b3461027d57602036600319011261027d576004356001600160401b03811161027d576103d9610f57610f51610f659336906004016110c1565b906112a6565b6040519384939284906110b4565b6040602084015260408301906110ee565b3461027d57602036600319011261027d576001600160a01b03610f9761109e565b165f526001602052602060ff60405f205416610fb660405180926110b4565bf35b3461027d575f36600319011261027d576003546040516001600160a01b039091168152602090f35b3461027d57602036600319011261027d57600435600481101561027d57335f52600160205260405f2060ff1981541660ff831617905561102360405180926110b4565b7fcf0033b352dd87a7aff06bd0ae2087677d435524e3249e32346664b0c634504960203392a2005b3461027d57602036600319011261027d576004359063ffffffff60e01b821680920361027d5760209163170c45dd60e11b811490811561108d575b5015158152f35b6301ffc9a760e01b14905083611086565b600435906001600160a01b038216820361027d57565b9060048210156104545752565b9181601f8401121561027d578235916001600160401b03831161027d576020838186019501011161027d57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604060031982011261027d57600435906001600160401b03821161027d5761113c916004016110c1565b90916024356001600160a01b038116810361027d5790565b604081019081106001600160401b0382111761116f57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761116f57604052565b6001600160401b03811161116f57601f01601f191660200190565b9291926111cb826111a4565b916111d96040519384611183565b82948184528183011161027d578281602093845f960137010152565b60a0606061123b93602084528051602085015261121a602082015160408601906110b4565b61122b6040820151838601906110b4565b01519160808082015201906110ee565b90565b60208091604051928184925191829101835e8101600281520301902090565b6040519061126c606083611183565b602582526430ba34b7b760d91b6040837f52657175697265732046756c6c20706572736f6e686f6f64207665726966696360208201520152565b906112c4906112be6112b93683866111bf565b6115cf565b926116d6565b600281116113dc57808203918211610e9857600582111561139c5781600660029310159081611390575b5061133357146113035760029061123b61125d565b5f90604051611313604082611183565b601081526f105d985a5b18589b19481d1bc8185b1b60821b602082015290565b146113435760029061123b61125d565b600190604051611354606082611183565b602681527f5265717569726573204c6967687420706572736f6e686f6f642076657269666960208201526531b0ba34b7b760d11b604082015290565b6008915011155f6112ee565b50506003906040516113af604082611183565b601781527f526573657276656420666f7220476f7665726e616e6365000000000000000000602082015290565b6040516305bf8fb360e31b8152602060048201526024808201527f4e616d652063616e2068617665206d6178696d756d20322064696769742073756044820152630ccccd2f60e31b6064820152608490fd5b60405190608082018281106001600160401b0382111761116f57604052606080835f81525f60208201525f60408201520152565b60048210156104545752565b906020809282604051938492833781016002815203019020916040519261149484611154565b546001600160a01b03811680855260a09190911c6001600160401b031692909301829052821515806114d2575b6114cb575f929190565b6001929190565b504282116114c1565b6001600160a01b03168015611539575f5160206119445f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6112b99061155b9236916111bf565b6009811061159757600f81101561158e575f5490600f0390600f8211610e9857818102918183041490151715610e985790565b505f5460011c90565b505f90565b5f198114610e985760010190565b9081518110156115bb570160200190565b634e487b7160e01b5f52603260045260245ffd5b80515f9291835b8281106115e257505050565b9193916001600160f81b03196115f882846115aa565b5116600160ff1b811015611623575060018101809111610e985761161c909261159c565b93916115d6565b600760fd1b811015611645575060028101809111610e985761161c909261159c565b600f60fc1b811015611667575060038101809111610e985761161c909261159c565b601f60fb1b811015611689575060048101809111610e985761161c909261159c565b603f60fa1b11156116a95760058101809111610e985761161c909261159c565b60068101809111610e985761161c909261159c565b8015610e98575f190190565b908210156115bb570190565b5f9291908190815b6116e757505050565b909291935f198501858111610e9857600360fc1b6001600160f81b031961170f8388876116ca565b351610159081611743575b501561173b5761172c6117329161159c565b946116be565b919290826116de565b935090915050565b603960f81b91506001600160f81b03199061175f9087866116ca565b351611155f61171a565b90805b80151580611829575b806117f9575b1561178e57611789906116be565b61176c565b9091611799826111a4565b926117a76040519485611183565b828452601f196117b6846111a4565b013660208601375f5b8381106117cd575050505090565b6001906001600160f81b03196117e48285876116ca565b35165f1a6117f282886115aa565b53016117bf565b505f198101818111610e9857603960f81b906001600160f81b0319906118209085876116ca565b3516111561177b565b505f198101818111610e9857600360fc1b906001600160f81b0319906118509085876116ca565b35161015611775565b5f5160206119445f395f51905f52546001600160a01b0316330361187957565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206119845f395f51905f525460401c16156118a857565b631afcd79f60e31b5f5260045ffd5b905f8091602081519101845af48080611930575b156118eb5750506040513d81523d5f602083013e60203d82010160405290565b1561191057639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15611921576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b503d1515806118cb5750813b15156118cb56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220852ac136a957ab2e42fa47befc5dce649ab79748a1d3a0b7a4bbea98d8d08ac264736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00", sourceMap: "735:11068:1:-:0;;;;;;;1084:4:57;1076:13;;-1:-1:-1;;;;;;;;;;;735:11068:1;;;;;;7894:76:56;;-1:-1:-1;;;;;;;;;;;735:11068:1;;7983:34:56;7979:146;;-1:-1:-1;735:11068:1;;;;;;;;1076:13:57;735:11068:1;;;;;;;;;;;7979:146:56;-1:-1:-1;;;;;;735:11068:1;-1:-1:-1;;;;;735:11068:1;;;-1:-1:-1;;;;;;;;;;;735:11068:1;;;8085:29:56;;735:11068:1;;8085:29:56;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:56;;-1:-1:-1;7936:23:56;735:11068:1;;;", linkReferences: {} },
|
|
2818
|
-
deployedBytecode: { object: "0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461104b575080630848731f14610fe057806311d812c314610fb8578063257ab86614610f765780633017fa3314610f1857806335696fa714610d3a5780634f1ef28614610b6f57806352d1902d14610b0957806354fd4d5014610ac257806368e344e914610aa55780636bbfce2b1461078f578063715018a6146107285780638ac7f0f51461069e5780638da5cb5b1461066a5780639180999414610606578063ad3cb1cc146105bf578063b4956ade1461057b578063c5b9e44e14610513578063c5c9504814610484578063d6fbf20214610468578063dcd62573146102ef578063f2fde38b146102c4578063fe2c6198146102815763fe4b84df14610124575f80fd5b3461027d57602036600319011261027d575f5160206119845f395f51905f525460ff8160401c1615906001600160401b03811680159081610275575b600114908161026b575b159081610262575b506102535767ffffffffffffffff1981166001175f5160206119845f395f51905f525581610227575b506101a461188c565b6101ac61188c565b6101b461188c565b6101bd336114db565b6101c561188c565b6004355f556101d057005b68ff0000000000000000195f5160206119845f395f51905f5254165f5160206119845f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001175f5160206119845f395f51905f52555f61019b565b63f92ee8a960e01b5f5260045ffd5b9050155f610172565b303b15915061016a565b839150610160565b5f80fd5b3461027d57602036600319011261027d576004356001600160401b03811161027d576102bc6102b660209236906004016110c1565b9061154c565b604051908152f35b3461027d57602036600319011261027d576102ed6102e061109e565b6102e8611859565b6114db565b005b3461027d576102fd36611112565b9061030661142e565b9161031182856112a6565b92909160018060a01b0316805f52600160205260ff60405f2054169560048710156104545761037d602093610382926103716103d99a80155f1461044e57610359848461154c565b8b52610368888c01998a611462565b60408b01611462565b60608901978852611769565b61123e565b6040519061038f82611154565b546001600160a01b03811680835260a09190911c6001600160401b0316939091018390528015159283610444575b5082610439575b50506103dd575b5050604051918291826111f5565b0390f35b6040516003926103ee606083611183565b602f82527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060208301526e131a5d19481c9959da5cdd1c985b9d608a1b6040830152525282806103cb565b1415905085806103c4565b42109250876103bd565b5f610359565b634e487b7160e01b5f52602160045260245ffd5b3461027d575f36600319011261027d5760205f54604051908152f35b3461027d57602036600319011261027d576004356001600160401b03811161027d573660238201121561027d576020806104cb6103d99336906024816004013591016111bf565b604051928184925191829101835e60029082019081520301902054604080516001600160a01b038316815260a09290921c6001600160401b0316602083015290918291820190565b3461027d57602036600319011261027d5761052c61109e565b610534611859565b6003546001600160a01b0391821691829082167f482b97c53e48ffa324a976e2738053e9aff6eee04d8aac63b10e19411d869b825f80a36001600160a01b03191617600355005b3461027d57602036600319011261027d576004356001600160401b03811161027d576105b66105b060209236906004016110c1565b906116d6565b15604051908152f35b3461027d575f36600319011261027d576103d96040516105e0604082611183565b60058152640352e302e360dc1b60208201526040519182916020835260208301906110ee565b3461027d57602036600319011261027d576004356001600160401b03811161027d576001600160401b0361064961064360609336906004016110c1565b9061146e565b90604093929351931515845260018060a01b03166020840152166040820152f35b3461027d575f36600319011261027d575f5160206119445f395f51905f52546040516001600160a01b039091168152602090f35b3461027d57602036600319011261027d576004356001600160401b03811161027d5760206106d1819236906004016110c1565b919082604051938492833781016002815203019020604051906106f382611154565b546001600160a01b03811680835260a09190911c6001600160401b031692909101829052604080519182526020820192909252f35b3461027d575f36600319011261027d57610740611859565b5f5160206119445f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461027d5761079d36611112565b90916107a761142e565b926107b561037d8284611769565b6020604051916107c483611154565b546001600160a01b03811680845260a09190911c6001600160401b0316919092018190528115159081610a9b575b50610a28575b5061080381836112a6565b6001600160a01b039094165f9081526001602052604090205460ff16936004851015939190846104545785610a225761083c848461154c565b875261084b8260208901611462565b6108588660408901611462565b806060880152600482101561045457600382146109f95750600281036108eb5750505061045457600203610897576103d9905b604051918291826111f5565b6040516305bf8fb360e31b815260206004820152602560248201527f52657175697265732046756c6c20506572736f6e686f6f64207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b6001036109725750506104545760018114908115610967575b5015610913576103d99061088b565b6040516305bf8fb360e31b815260206004820152602560248201527f526571756972657320506572736f6e686f6f64204c697465207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b600291501482610904565b61097c92506116d6565b151590816109ed575b5015610994576103d99061088b565b6040516305bf8fb360e31b815260206004820152602a60248201527f506572736f6e686f6f64204c6974652063616e6e6f742072656769737465722060448201526962617365206e616d657360b01b6064820152608490fd5b60019150141582610985565b6040516305bf8fb360e31b815260206004820152908190610a1e9060248301906110ee565b0390fd5b5f61083c565b6001600160a01b03841603610a3d57846107f8565b6040516305bf8fb360e31b815260206004820152602f60248201527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060448201526e131a5d19481c9959da5cdd1c985b9d608a1b6064820152608490fd5b90504210866107f2565b3461027d575f36600319011261027d576020604051626ebe008152f35b3461027d575f36600319011261027d576103d9604051610ae3604082611183565b60058152640312e302e360dc1b60208201526040519182916020835260208301906110ee565b3461027d575f36600319011261027d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610b605760206040515f5160206119645f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261027d57610b8361109e565b6024356001600160401b03811161027d573660238201121561027d57610bb39036906024816004013591016111bf565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610d18575b50610b6057610bf6611859565b6040516352d1902d60e01b81526001600160a01b0382169290602081600481875afa5f9181610ce4575b50610c385783634c9c8ce360e01b5f5260045260245ffd5b805f5160206119645f395f51905f52859203610cd25750823b15610cc0575f5160206119645f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610ca8576102ed916118b7565b505034610cb157005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610d10575b81610d0060209383611183565b8101031261027d57519085610c20565b3d9150610cf3565b5f5160206119645f395f51905f52546001600160a01b03161415905083610be9565b3461027d57610d4836611112565b600354909291906001600160a01b03163303610f0957610d6881836112a6565b50600481101561045457600103610eac57610d8291611769565b604051815190602081818501938085835e8101600281520301902060405190610daa82611154565b549060206001600160401b0360018060a01b0384169384845260a01c1691015215610dd157005b626ebe004201804211610e98577f4d72f477fa240edc1a91eaafd5ec14ee8c94142aa248fafb508ac804c9c5362d916001600160401b03602092169360405195610e1a87611154565b60018060a01b031695868152838101868152604051858185518088835e6002908201908152030190209151825491516001600160e01b03199092166001600160a01b03919091161760a09190911b67ffffffffffffffff60a01b16179055604051905190918291908190835e81015f815203902092604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b6040516305bf8fb360e31b815260206004820152602e60248201527f42617365207265736572766174696f6e2072657175697265732061206c69746560448201526d2d656c696769626c65206e616d6560901b6064820152608490fd5b633217675b60e21b5f5260045ffd5b3461027d57602036600319011261027d576004356001600160401b03811161027d576103d9610f57610f51610f659336906004016110c1565b906112a6565b6040519384939284906110b4565b6040602084015260408301906110ee565b3461027d57602036600319011261027d576001600160a01b03610f9761109e565b165f526001602052602060ff60405f205416610fb660405180926110b4565bf35b3461027d575f36600319011261027d576003546040516001600160a01b039091168152602090f35b3461027d57602036600319011261027d57600435600481101561027d57335f52600160205260405f2060ff1981541660ff831617905561102360405180926110b4565b7fcf0033b352dd87a7aff06bd0ae2087677d435524e3249e32346664b0c634504960203392a2005b3461027d57602036600319011261027d576004359063ffffffff60e01b821680920361027d5760209163170c45dd60e11b811490811561108d575b5015158152f35b6301ffc9a760e01b14905083611086565b600435906001600160a01b038216820361027d57565b9060048210156104545752565b9181601f8401121561027d578235916001600160401b03831161027d576020838186019501011161027d57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604060031982011261027d57600435906001600160401b03821161027d5761113c916004016110c1565b90916024356001600160a01b038116810361027d5790565b604081019081106001600160401b0382111761116f57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761116f57604052565b6001600160401b03811161116f57601f01601f191660200190565b9291926111cb826111a4565b916111d96040519384611183565b82948184528183011161027d578281602093845f960137010152565b60a0606061123b93602084528051602085015261121a602082015160408601906110b4565b61122b6040820151838601906110b4565b01519160808082015201906110ee565b90565b60208091604051928184925191829101835e8101600281520301902090565b6040519061126c606083611183565b602582526430ba34b7b760d91b6040837f52657175697265732046756c6c20706572736f6e686f6f64207665726966696360208201520152565b906112c4906112be6112b93683866111bf565b6115cf565b926116d6565b600281116113dc57808203918211610e9857600582111561139c5781600660029310159081611390575b5061133357146113035760029061123b61125d565b5f90604051611313604082611183565b601081526f105d985a5b18589b19481d1bc8185b1b60821b602082015290565b146113435760029061123b61125d565b600190604051611354606082611183565b602681527f5265717569726573204c6967687420706572736f6e686f6f642076657269666960208201526531b0ba34b7b760d11b604082015290565b6008915011155f6112ee565b50506003906040516113af604082611183565b601781527f526573657276656420666f7220476f7665726e616e6365000000000000000000602082015290565b6040516305bf8fb360e31b8152602060048201526024808201527f4e616d652063616e2068617665206d6178696d756d20322064696769742073756044820152630ccccd2f60e31b6064820152608490fd5b60405190608082018281106001600160401b0382111761116f57604052606080835f81525f60208201525f60408201520152565b60048210156104545752565b906020809282604051938492833781016002815203019020916040519261149484611154565b546001600160a01b03811680855260a09190911c6001600160401b031692909301829052821515806114d2575b6114cb575f929190565b6001929190565b504282116114c1565b6001600160a01b03168015611539575f5160206119445f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6112b99061155b9236916111bf565b6009811061159757600f81101561158e575f5490600f0390600f8211610e9857818102918183041490151715610e985790565b505f5460011c90565b505f90565b5f198114610e985760010190565b9081518110156115bb570160200190565b634e487b7160e01b5f52603260045260245ffd5b80515f9291835b8281106115e257505050565b9193916001600160f81b03196115f882846115aa565b5116600160ff1b811015611623575060018101809111610e985761161c909261159c565b93916115d6565b600760fd1b811015611645575060028101809111610e985761161c909261159c565b600f60fc1b811015611667575060038101809111610e985761161c909261159c565b601f60fb1b811015611689575060048101809111610e985761161c909261159c565b603f60fa1b11156116a95760058101809111610e985761161c909261159c565b60068101809111610e985761161c909261159c565b8015610e98575f190190565b908210156115bb570190565b5f9291908190815b6116e757505050565b909291935f198501858111610e9857600360fc1b6001600160f81b031961170f8388876116ca565b351610159081611743575b501561173b5761172c6117329161159c565b946116be565b919290826116de565b935090915050565b603960f81b91506001600160f81b03199061175f9087866116ca565b351611155f61171a565b90805b80151580611829575b806117f9575b1561178e57611789906116be565b61176c565b9091611799826111a4565b926117a76040519485611183565b828452601f196117b6846111a4565b013660208601375f5b8381106117cd575050505090565b6001906001600160f81b03196117e48285876116ca565b35165f1a6117f282886115aa565b53016117bf565b505f198101818111610e9857603960f81b906001600160f81b0319906118209085876116ca565b3516111561177b565b505f198101818111610e9857600360fc1b906001600160f81b0319906118509085876116ca565b35161015611775565b5f5160206119445f395f51905f52546001600160a01b0316330361187957565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206119845f395f51905f525460401c16156118a857565b631afcd79f60e31b5f5260045ffd5b905f8091602081519101845af48080611930575b156118eb5750506040513d81523d5f602083013e60203d82010160405290565b1561191057639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15611921576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b503d1515806118cb5750813b15156118cb56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220852ac136a957ab2e42fa47befc5dce649ab79748a1d3a0b7a4bbea98d8d08ac264736f6c634300081e0033", sourceMap: "735:11068:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;-1:-1:-1;;;;;;;;;;;735:11068:1;;;;;;4301:16:56;735:11068:1;-1:-1:-1;;;;;735:11068:1;;4724:16:56;;:34;;;;735:11068:1;;4788:16:56;:50;;;;735:11068:1;4853:13:56;:30;;;;735:11068:1;4849:91:56;;;-1:-1:-1;;735:11068:1;;;;-1:-1:-1;;;;;;;;;;;735:11068:1;;4977:67:56;;735:11068:1;6891:76:56;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;2242:10:1;6959:1:56;:::i;:::-;6891:76;;:::i;:::-;735:11068:1;;;;5064:101:56;;735:11068:1;5064:101:56;735:11068:1;;-1:-1:-1;;;;;;;;;;;735:11068:1;;-1:-1:-1;;;;;;;;;;;735:11068:1;5140:14:56;735:11068:1;;;;;;5140:14:56;735:11068:1;4977:67:56;-1:-1:-1;;735:11068:1;;;-1:-1:-1;;;;;;;;;;;735:11068:1;4977:67:56;;;4849:91;4906:23;;;735:11068:1;4906:23:56;735:11068:1;;4906:23:56;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:56;;4724:34;;;-1:-1:-1;4724:34:56;;735:11068:1;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;2378:1:38;735:11068:1;;:::i;:::-;2324:62:38;;:::i;:::-;2378:1;:::i;:::-;735:11068:1;;;;;;;;:::i;:::-;;;;:::i;:::-;7878:18;;;;;:::i;:::-;735:11068;;;;;;;;;;;;7929:13;735:11068;;;;;;;;;;;;;;;8196:18;735:11068;7983:50;735:11068;7983:50;8085:32;735:11068;7983:50;:32;;:50;:32;;;8018:11;;;;:::i;:::-;735:11068;;8043:32;:15;;;:32;;;:::i;:::-;735:11068;8085:19;;:32;:::i;:::-;8127:16;;;:33;;;8196:18;:::i;:::-;735:11068;:::i;:::-;;;;;;;:::i;:::-;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;8307:31;;;;;:72;;7983:50;8307:124;;;;7983:50;8290:305;;;;7983:50;735:11068;;;;;;;;;:::i;:::-;;;;8290:305;735:11068;;8556:28;;735:11068;8127:16;735:11068;;:::i;:::-;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;8290:305;;;;8307:124;8399:32;;;-1:-1:-1;8307:124:1;;;;:72;8364:15;-1:-1:-1;;;8307:72:1;;;7983:50;735:11068;7983:50;;735:11068;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1148:71;735:11068;;;;;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;:::i;:::-;2324:62:38;;:::i;:::-;4974:21:1;735:11068;-1:-1:-1;;;;;735:11068:1;;;;;;;;4958:51;735:11068;;4958:51;-1:-1:-1;;;;;;735:11068:1;;4974:21;735:11068;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;-1:-1:-1;;;;;735:11068:1;;;;5213:30;735:11068;;;;;;;;:::i;:::-;5213:30;;:::i;:::-;5260:11;735:11068;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;735:11068:1;;;;;;-1:-1:-1;;;;;735:11068:1;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;-1:-1:-1;;;;;;;;;;;735:11068:1;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5530:12;735:11068;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;2324:62:38;;:::i;:::-;-1:-1:-1;;;;;;;;;;;735:11068:1;;-1:-1:-1;;;;;;735:11068:1;;;;;;;-1:-1:-1;;;;;735:11068:1;3996:40:38;735:11068:1;;3996:40:38;735:11068:1;;;;;;;;:::i;:::-;;;;;:::i;:::-;9246:18;735:11068;9246:18;;;;:::i;735:11068::-;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;9344:31;;;;;:72;;735:11068;9340:251;;;735:11068;6483:18;;;;;:::i;:::-;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;;;;;;;;;;;;;6588:32;;;6623:11;;;;:::i;:::-;735:11068;;6648:32;:15;735:11068;6648:15;;:32;:::i;:::-;6690;:19;735:11068;6690:19;;:32;:::i;:::-;6732:16;;;;:33;735:11068;;;;;;6802:18;6784:36;;735:11068;;-1:-1:-1;9307:12:1;6862:35;;9307:12;;735:11068;;;;;9307:12;6938:31;735:11068;;;6858:692;;735:11068;;;;;;;:::i;:::-;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;6858:692;6534:13;7055:35;6534:13;;735:11068;;;;6534:13;7131:31;;:66;;;;;7051:499;735:11068;;;;;7051:499;6858:692;;735:11068;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;7131:66;9307:12;735:11068;;7166:31;7131:66;;;7051:499;7334:26;;;;:::i;:::-;7399:19;;:54;;;;7051:499;735:11068;;;;;7051:499;6858:692;;735:11068;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;7399:54;6534:13;735:11068;;7422:31;;7399:54;;;735:11068;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;6588:50;735:11068;6588:50;;9340:251;-1:-1:-1;;;;;735:11068:1;;9457:32;735:11068;;9340:251;;;735:11068;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;9344:72;9401:15;;;-1:-1:-1;9344:72:1;;;735:11068;;;;;;-1:-1:-1;;735:11068:1;;;;;;;1330:8;735:11068;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;735:11068:1;;;;4840:6:57;-1:-1:-1;;;;;735:11068:1;4831:4:57;4823:23;4819:145;;735:11068:1;;;-1:-1:-1;;;;;;;;;;;735:11068:1;;;4819:145:57;4594:29;;;735:11068:1;4924:29:57;735:11068:1;;4924:29:57;735:11068:1;;;-1:-1:-1;;735:11068:1;;;;;;:::i;:::-;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;4417:6:57;735:11068:1;4408:4:57;4400:23;;;:120;;;;735:11068:1;4383:251:57;;;2324:62:38;;:::i;:::-;735:11068:1;;-1:-1:-1;;;5881:52:57;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;5881:52:57;;735:11068:1;;5881:52:57;;;735:11068:1;-1:-1:-1;5877:437:57;;1805:47:49;;;;735:11068:1;6243:60:57;735:11068:1;;;;6243:60:57;5877:437;5975:40;-1:-1:-1;;;;;;;;;;;5975:40:57;;;5971:120;;1748:29:49;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;735:11068:1;;-1:-1:-1;;;;;;735:11068:1;;;;;2407:36:49;-1:-1:-1;;2407:36:49;735:11068:1;;2458:15:49;:11;;2489:53;;;:::i;2454:148::-;6163:9;;;6159:70;;735:11068:1;6159:70:49;6199:19;;;735:11068:1;6199:19:49;735:11068:1;;6199:19:49;1744:119;1805:47;;;735:11068:1;1805:47:49;735:11068:1;;;;1805:47:49;5971:120:57;6042:34;;;735:11068:1;6042:34:57;735:11068:1;;;;6042:34:57;5881:52;;;;735:11068:1;5881:52:57;;735:11068:1;5881:52:57;;;;;;735:11068:1;5881:52:57;;;:::i;:::-;;;735:11068:1;;;;;5881:52:57;;;;;;;-1:-1:-1;5881:52:57;;4400:120;-1:-1:-1;;;;;;;;;;;735:11068:1;-1:-1:-1;;;;;735:11068:1;4478:42:57;;;-1:-1:-1;4400:120:57;;;735:11068:1;;;;;;;:::i;:::-;11757:21;735:11068;;;;;-1:-1:-1;;;;;735:11068:1;11743:10;:35;735:11068;;4027:18;;;;:::i;:::-;735:11068;;;;;;;4094:17;4076:35;735:11068;;4233:18;;;:::i;:::-;735:11068;;;;;;;;;;;;;;;;;4303:12;735:11068;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;;;4343:39;4339:486;;735:11068;4339:486;1330:8;4604:15;735:11068;4604:15;;735:11068;;;4759:55;735:11068;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;:::i;:::-;;;;;;;;;;;4686:54;;;735:11068;;;;;;;;;;;;;4303:12;735:11068;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;735:11068:1;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:55;735:11068;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;735:11068:1;;;;-1:-1:-1;;;;;735:11068:1;;:::i;:::-;;;;1040:50;735:11068;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;735:11068:1;;;;1554:36;735:11068;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;-1:-1:-1;;735:11068:1;;;;;;;;;;;;2694:10;735:11068;;2680:13;735:11068;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2729:36;735:11068;2694:10;2729:36;;735:11068;;;;;;;-1:-1:-1;;735:11068:1;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11120:42:1;;;:82;;;;735:11068;;;;;;;11120:82;-1:-1:-1;;;1119:40:43;;-1:-1:-1;11120:82:1;;;735:11068;;;;-1:-1:-1;;;;;735:11068:1;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;735:11068:1;;;;;;;;-1:-1:-1;;735:11068:1;;;;:::o;:::-;;-1:-1:-1;;735:11068:1;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;:::o;:::-;;;;-1:-1:-1;735:11068:1;;;;;-1:-1:-1;735:11068:1;;;;;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;:::o;:::-;-1:-1:-1;;;;;735:11068:1;;;;;;-1:-1:-1;;735:11068:1;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;735:11068:1;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;9307:12;735:11068;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;:::o;2808:994::-;;3044:26;2808:994;2996:13;735:11068;;;;;:::i;:::-;2996:13;:::i;:::-;3044:26;;:::i;:::-;3107:1;3089:19;;735:11068;;;;;;;;;;3248:1;3234:15;;;3230:100;;3344:15;3358:1;3107;3344:15;;;:34;;;;2808:994;3340:271;;;3625:19;3621:97;;3107:1;735:11068;;;:::i;3621:97::-;735:11068;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;735:11068:1;;;;3660:47;:::o;3340:271::-;3398:19;3394:126;;3107:1;735:11068;;;:::i;3394:126::-;3445:17;735:11068;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;3437:68;:::o;3344:34::-;3377:1;3363:15;;;;3344:34;;;3230:100;3265:54;;3273:18;735:11068;;;;;;;:::i;:::-;;;;;;;;;3265:54;:::o;735:11068::-;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;735:11068:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;-1:-1:-1;735:11068:1;;-1:-1:-1;735:11068:1;;;;-1:-1:-1;735:11068:1;;;;;;:::o;:::-;;;;;;;;:::o;5646:490::-;;735:11068;5646:490;;735:11068;;;;;;;;;;5878:12;735:11068;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;735:11068:1;;;;;;;;;;-1:-1:-1;;;;;735:11068:1;;;;;;;;5914:31;;;;:72;;5646:490;5910:156;;-1:-1:-1;6075:54:1;;5646:490;:::o;5910:156::-;6010:4;6002:53;;;:::o;5914:72::-;5971:15;;5949:37;;5914:72;;3426:215:38;-1:-1:-1;;;;;735:11068:1;3510:22:38;;3506:91;;-1:-1:-1;;;;;;;;;;;735:11068:1;;-1:-1:-1;;;;;;735:11068:1;;;;;;;-1:-1:-1;;;;;735:11068:1;3996:40:38;-1:-1:-1;;3996:40:38;3426:215::o;3506:91::-;3555:31;;;3530:1;3555:31;3530:1;3555:31;735:11068:1;;3530:1:38;3555:31;8663:321:1;735:11068;8663:321;8770:13;8663:321;735:11068;;;:::i;8770:13::-;8810:1;8797:14;;8793:53;;8874:2;8860:16;;;8856:71;;735:11068;;;8874:2;735:11068;;8874:2;735:11068;;;;;;;;;;;;;;;;;;8663:321;:::o;8856:71::-;735:11068;;;;;8892:24;:::o;8793:53::-;8827:8;735:11068;8827:8;:::o;735:11068::-;-1:-1:-1;;735:11068:1;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1053:453:22;735:11068:1;;1144:1:22;;1053:453;1144:1;1215:14;;;;;;1053:453;;;:::o;1231:5::-;735:11068:1;;;-1:-1:-1;;;;;;1263:11:22;;;;:::i;:::-;735:11068:1;;-1:-1:-1;;;1292:8:22;;735:11068:1;;;;1307:1:22;735:11068:1;;;;;;;1231:5:22;1302:6;1288:201;1231:5;:::i;:::-;1206:7;;;;1288:201;-1:-1:-1;;;1331:8:22;;735:11068:1;;;;1346:1:22;735:11068:1;;;;;;;1231:5:22;1341:6;1327:162;1231:5;:::i;1327:162::-;-1:-1:-1;;;1370:8:22;;735:11068:1;;;;1385:1:22;735:11068:1;;;;;;;1231:5:22;1380:6;1366:123;1231:5;:::i;1366:123::-;-1:-1:-1;;;1409:8:22;;735:11068:1;;;;1424:1:22;735:11068:1;;;;;;;1231:5:22;1419:6;1405:84;1231:5;:::i;1405:84::-;-1:-1:-1;;;;735:11068:1;;;1463:1:22;735:11068:1;;;;;;;1231:5:22;1458:6;1444:45;1231:5;:::i;1444:45::-;1488:1;735:11068:1;;;;;;;1231:5:22;1483:6;1444:45;1231:5;:::i;735:11068:1:-;;;;;-1:-1:-1;;735:11068:1;;:::o;:::-;;;;;;;;;:::o;9746:457::-;735:11068;;9746:457;;;;;10012:5;;;9746:457;;;:::o;10019:3::-;735:11068;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;10042:17:1;;;;;:::i;:::-;;735:11068;10042:25;;:54;;;;10019:3;-1:-1:-1;10038:149:1;;;10116:12;10019:3;10116:12;;:::i;:::-;10038:149;10019:3;:::i;:::-;9986:24;;;;;;10038:149;10167:5;-1:-1:-1;10167:5:1;;-1:-1:-1;;9746:457:1:o;10042:54::-;-1:-1:-1;;;735:11068:1;-1:-1:-1;;;;;;;735:11068:1;10071:17;;;;;:::i;:::-;;735:11068;10071:25;;10042:54;;;10347:567;;10496:38;10545:176;10565:15;;;:53;;;10545:176;10565:107;;;10545:176;10565:107;;;10697:13;;;:::i;:::-;10545:176;;10565:107;;;735:11068;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;735:11068:1;;;:::i;:::-;;;;;;;-1:-1:-1;10805:15:1;;;;;;10886:21;;;;10347:567;:::o;10822:3::-;735:11068;;-1:-1:-1;;;;;;10853:12:1;735:11068;10853:12;;;:::i;:::-;;735:11068;-1:-1:-1;10841:24:1;;;;;:::i;:::-;;735:11068;10790:13;;10565:107;-1:-1:-1;;;735:11068:1;;;;;;;-1:-1:-1;;;735:11068:1;-1:-1:-1;;;;;;735:11068:1;10638:26;;;;;:::i;:::-;;735:11068;10638:34;;10565:107;;:53;-1:-1:-1;;;735:11068:1;;;;;;;-1:-1:-1;;;735:11068:1;-1:-1:-1;;;;;;735:11068:1;10584:26;;;;;:::i;:::-;;735:11068;10584:34;;10565:53;;2679:162:38;-1:-1:-1;;;;;;;;;;;735:11068:1;-1:-1:-1;;;;;735:11068:1;987:10:42;2738:23:38;2734:101;;2679:162::o;2734:101::-;2784:40;;;-1:-1:-1;2784:40:38;987:10:42;2784:40:38;735:11068:1;;-1:-1:-1;2784:40:38;7082:141:56;735:11068:1;-1:-1:-1;;;;;;;;;;;735:11068:1;;;;7148:18:56;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:56;;-1:-1:-1;7189:17:56;4691:549:62;;-1:-1:-1;4691:549:62;;3490:129:66;;;;;;;;;;4874:72:62;;4691:549;4870:364;;;4774:252:66;;;;;;;;-1:-1:-1;3490:129:66;4774:252;;;3490:129;4774:252;;;;;;4962:32:62;:::o;4870:364::-;5011:223;;;-1:-1:-1;;;;5045:24:62;;;-1:-1:-1;;;;;735:11068:1;;;;5045:24:62;735:11068:1;;;5045:24:62;5011:223;4536:73:66;5090:33:62;4536:73:66;;5147:169;;;-1:-1:-1;5147:169:66;;;;;5086:148:62;5204:19;;;-1:-1:-1;5204:19:62;;-1:-1:-1;5204:19:62;4874:72;-1:-1:-1;4536:73:66;4886:33:62;;;4874:72;4886:59;4923:18;;;:22;;4874:72;", linkReferences: {}, immutableReferences: { "44630": [{ start: 2843, length: 32 }, { start: 3006, length: 32 }] } },
|
|
2819
|
-
methodIdentifiers: { "MAX_RESERVATION_TIME()": "68e344e9", "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", "classifyName(string)": "3017fa33", "
|
|
2820
|
-
rawMetadata: '{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"GenericError","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"PopError","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"baseName","type":"string"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint64","name":"expires","type":"uint64"}],"name":"BaseNameReserved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldReg","type":"address"},{"indexed":true,"internalType":"address","name":"newReg","type":"address"}],"name":"RegistryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"enum IPopRules.PopStatus","name":"status","type":"uint8"}],"name":"UserPopStatusSet","type":"event"},{"inputs":[],"name":"MAX_RESERVATION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"classifyName","outputs":[{"internalType":"enum IPopRules.PopStatus","name":"requirement","type":"uint8"},{"internalType":"string","name":"message","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dotRegistryController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"getBaseNameReservation","outputs":[{"internalType":"address","name":"reservationOwner","type":"address"},{"internalType":"uint64","name":"expiryTimestamp","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startingPrice","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"isBaseName","outputs":[{"internalType":"bool","name":"isBase","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"isBaseNameReserved","outputs":[{"internalType":"bool","name":"isReserved","type":"bool"},{"internalType":"address","name":"reservationOwner","type":"address"},{"internalType":"uint64","name":"expiryTimestamp","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"priceWithCheck","outputs":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"enum IPopRules.PopStatus","name":"status","type":"uint8"},{"internalType":"enum IPopRules.PopStatus","name":"userStatus","type":"uint8"},{"internalType":"string","name":"message","type":"string"}],"internalType":"struct IPopRules.PriceWithMeta","name":"metadata","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"priceWithoutCheck","outputs":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"enum IPopRules.PopStatus","name":"status","type":"uint8"},{"internalType":"enum IPopRules.PopStatus","name":"userStatus","type":"uint8"},{"internalType":"string","name":"message","type":"string"}],"internalType":"struct IPopRules.PriceWithMeta","name":"metadata","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"reservations","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"expires","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"reserveBaseName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IPopRules.PopStatus","name":"status","type":"uint8"}],"name":"setUserPopStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRegistry","type":"address"}],"name":"updateDotRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userPopStatus","outputs":[{"internalType":"enum IPopRules.PopStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"versionString","type":"string"}],"stateMutability":"pure","type":"function"}],"devdoc":{"custom:security-contact":"admin@parity.io","errors":{"AddressEmptyCode(address)":[{"details":"There\'s no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"GenericError(string)":[{"params":{"reason":"Human-readable explanation of the failure condition"}}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"PopError(string)":[{"params":{"reason":"Human-readable explanation of the failure condition"}}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"BaseNameReserved(string,address,uint64)":{"params":{"baseName":"The digit-stripped label receiving reservation","expires":"Timestamp when the reservation expires","owner":"Address obtaining the reservation right"}},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"RegistryUpdated(address,address)":{"params":{"newReg":"New address to set","oldReg":"Currently set registry address"}},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."},"UserPopStatusSet(address,uint8)":{"details":"This is temporary until we have a Precompile for accessing PoP status","params":{"status":"New PoP tier assigned","user":"Address of the user"}}},"kind":"dev","methods":{"classifyName(string)":{"params":{"name":"The name label being evaluated"},"returns":{"message":"Explanation of classification result","requirement":"Required tier for registration"}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getBaseNameReservation(string)":{"params":{"baseName":"The base label without trailing digits"},"returns":{"expiryTimestamp":"UNIX timestamp when the reservation expires","reservationOwner":"The address assigned to the reservation"}},"initialize(uint256)":{"params":{"_startingPrice":"Base price in wei for No pop status users"}},"isBaseName(string)":{"params":{"name":"The name to check"},"returns":{"isBase":"stating if the name is base or not"}},"isBaseNameReserved(string)":{"params":{"baseName":"The base label without trailing digits"},"returns":{"expiryTimestamp":"The reservation expiry timestamp","isReserved":"True if a reservation is active","reservationOwner":"The reservation holder"}},"owner()":{"details":"Returns the address of the current owner."},"price(string)":{"params":{"name":"Domain label to price"},"returns":{"_0":"for registering the name"}},"priceWithCheck(string,address)":{"details":"We currently revert on names considered as reserved for Governance The price we apply here is merely for spam protection and is insignificant It mainly applies to no status users","params":{"name":"Domain label","userAddress":"Registering user for the given label"},"returns":{"metadata":"Price with PoP requirements"}},"priceWithoutCheck(string,address)":{"details":"We currently dont revert on names considered as reserved for Governance The price we apply here is merely for spam protection and is insignificant It mainly applies to no status usersThis function is the same as @custom:function priceWithCheck","params":{"name":"Domain label","userAddress":"Registering user for the given label"},"returns":{"metadata":"Price with PoP requirements"}},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation\'s compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"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."},"reserveBaseName(string,address)":{"details":"Can only be called by the registry","params":{"baseName":"The base label with trailing digits removed","user":"The address receiving reservation rights"}},"setUserPopStatus(uint8)":{"details":"Once set, this PoP status applies to all registrations by this user This replaces per-name PoP assignmentsThis is temporary until we have a Precompile for accessing PoP status","params":{"status":"The PoP tier to assign to the user (NoStatus, PopLite, or PopFull)"}},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateDotRegistry(address)":{"params":{"dotRegistry":"the address of the new registry"}},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"version()":{"returns":{"versionString":"Current version string"}}},"stateVariables":{"__gap":{"details":"Reserved storage space to allow for layout changes in the future."}},"title":"PopRules","version":1},"userdoc":{"errors":{"GenericError(string)":[{"notice":"Used to throw generic errors"}],"NotRegistry()":[{"notice":"Used when functions only allow the registry to make calls"}],"PopError(string)":[{"notice":"Thrown when a name violates PoP-tier or reservation requirements"}]},"events":{"BaseNameReserved(string,address,uint64)":{"notice":"Emitted when a base name receives a reservation"},"RegistryUpdated(address,address)":{"notice":"Emitted when the registry is updated"},"UserPopStatusSet(address,uint8)":{"notice":"Emitted when a user\'s PoP status is updated"}},"kind":"user","methods":{"MAX_RESERVATION_TIME()":{"notice":"Maximum time a base name can be reserved"},"classifyName(string)":{"notice":"Classifies a name into a required PoP tier according to DotNS naming rules"},"dotRegistryController()":{"notice":"Authorized registry controller address"},"getBaseNameReservation(string)":{"notice":"Retrieves reservation information for a base name"},"initialize(uint256)":{"notice":"Initializes the oracle (public entry point)"},"isBaseName(string)":{"notice":"Used to determine if a given name is a base name Base name means has no trailing digits based on POP rules"},"isBaseNameReserved(string)":{"notice":"Indicates whether a base name is currently reserved"},"price(string)":{"notice":"Calculates registration cost"},"priceWithCheck(string,address)":{"notice":"Calculates price with PoP and reservation validation"},"priceWithoutCheck(string,address)":{"notice":"Calculates price with PoP and reservation validation"},"reservations(string)":{"notice":"Active reservations for base names"},"reserveBaseName(string,address)":{"notice":"Creates a reservation entry for the digit-stripped version of a name"},"setUserPopStatus(uint8)":{"notice":"Sets the Proof-of-Personhood (PoP) tier for the caller\'s profile"},"startingPrice()":{"notice":"Wei price for names with 9 characters and up"},"updateDotRegistry(address)":{"notice":"allows the Owner to update the dot registry"},"userPopStatus(address)":{"notice":"Tracks PoP status per user/profile"},"version()":{"notice":"Returns implementation version"}},"notice":"Implements DotNS pricing with PoP-tier validation and base-name reservations","version":1}},"settings":{"compilationTarget":{"contracts/pop/PopRules.sol":"PopRules"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",":forge-std/=lib/forge-std/src/",":halmos-cheatcodes/=lib/halmos-cheatcodes/src/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"],"viaIR":true},"sources":{"contracts/pop/IPopRules.sol":{"keccak256":"0x0c32818b1a88e42368621dea48d9f6c8ff40e256ab19906cc69794a717e2c7ad","license":"MIT","urls":["bzz-raw://86e87b136509a46b680f8cc8fa9cadc722546beec4ea5e0f17e420735ce0daeb","dweb:/ipfs/QmVybQR8gsagmqDHiw9ncqWibkYiQeEaBCMpbRh1GNpNCo"]},"contracts/pop/PopRules.sol":{"keccak256":"0x57cd23da00d2027d3b9da75898590a6daf7cd05a92329cfd47883cba49859ef9","license":"MIT","urls":["bzz-raw://5fcf7b351e89e0cb03e3a1edacc55ce36eb36d15f18b9120d093356846bde180","dweb:/ipfs/Qmdr5J6mMNra2XiaSbcbdEEUnw15GDuGJ75wXvoD72ofxH"]},"contracts/utils/StringUtils.sol":{"keccak256":"0xea0408b85e81253b372a80170787b646b37e7b32a663675a5690a3f593994be2","license":"MIT","urls":["bzz-raw://b36e7a904b394c970217b375b39e6fa452a5cc91afdb5d45d32ef07b89809a9c","dweb:/ipfs/QmQw5caBUK27wLgEwpwXqjbpYLSNm3Nf7s1QgzMeVmT2Jk"]},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x85c3b9bac35a90dce9ed9b31532c3739cae432359d8d7ff59cb6712f21c7ed14","license":"MIT","urls":["bzz-raw://a084d32ad4ad5b1d4494124d7695334dbeff81c2d1846a01ef1215153dd38eed","dweb:/ipfs/QmbzDrfeogDd3n65mADjLuy97oAMgh2CtiUxKKEpM3WB8b"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16","license":"MIT","urls":["bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d","dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf","license":"MIT","urls":["bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e","dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d","license":"MIT","urls":["bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455","dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x16b88aca1f1c3aa38783416d86207ce6fe574fcd1993dfe54403b5c8b6c74224","license":"MIT","urls":["bzz-raw://29f3c5c687fe0d87742b013872f495e67656910530c916a69873860dc8fea812","dweb:/ipfs/QmbspfQXmbhCANqqiunUFm9fiVVQwPet2YKQoJ58km442Y"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","license":"MIT","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"]},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","license":"MIT","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"]},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","license":"MIT","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"]},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","license":"MIT","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"]},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","license":"MIT","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"]},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a","license":"MIT","urls":["bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34","dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk"]},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346","license":"MIT","urls":["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710","dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"]},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0x8140d608316521b1fd71167c3b708ebb8659da070723fc8807609553b296ee33","license":"MIT","urls":["bzz-raw://a7bf7db66869ba1e945a0390b85da2f6afc7e42a4735ca918d0d56ac90c50147","dweb:/ipfs/QmRmNyhpBpgzSdQqLtrQCYE7H7eLnVVxh2Yy4YMrySR8AR"]},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","license":"MIT","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"]},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583","license":"MIT","urls":["bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56","dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG"]},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","license":"MIT","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"]},"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":"0x36d1750bf1aa5fee9c52adb2f7857ab652daca722fc05dff533b364f67a1139a","license":"MIT","urls":["bzz-raw://2e5e7052539b7849d02f3ce25acc1dce29373c11cfae9f0bc918c54b780c549a","dweb:/ipfs/QmRGE32xNkMTo6i4pHHMxjpiu77yPwnTA25SFngw2NXJys"]},"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":"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c","license":"MIT","urls":["bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c","dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef"]},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","license":"MIT","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"]},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","license":"MIT","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"]}},"version":1}',
|
|
2821
|
-
metadata: { compiler: { version: "0.8.30+commit.73712a01" }, language: "Solidity", output: { abi: [{ inputs: [], stateMutability: "nonpayable", type: "constructor" }, { inputs: [{ internalType: "address", name: "target", type: "address" }], type: "error", name: "AddressEmptyCode" }, { inputs: [{ internalType: "address", name: "implementation", type: "address" }], type: "error", name: "ERC1967InvalidImplementation" }, { inputs: [], type: "error", name: "ERC1967NonPayable" }, { inputs: [], type: "error", name: "FailedCall" }, { inputs: [{ internalType: "string", name: "reason", type: "string" }], type: "error", name: "GenericError" }, { inputs: [], type: "error", name: "InvalidInitialization" }, { inputs: [], type: "error", name: "NotInitializing" }, { inputs: [], type: "error", name: "NotRegistry" }, { inputs: [{ internalType: "address", name: "owner", type: "address" }], type: "error", name: "OwnableInvalidOwner" }, { inputs: [{ internalType: "address", name: "account", type: "address" }], type: "error", name: "OwnableUnauthorizedAccount" }, { inputs: [{ internalType: "string", name: "reason", type: "string" }], type: "error", name: "PopError" }, { inputs: [], type: "error", name: "UUPSUnauthorizedCallContext" }, { inputs: [{ internalType: "bytes32", name: "slot", type: "bytes32" }], type: "error", name: "UUPSUnsupportedProxiableUUID" }, { inputs: [{ internalType: "string", name: "baseName", type: "string", indexed: true }, { internalType: "address", name: "owner", type: "address", indexed: true }, { internalType: "uint64", name: "expires", type: "uint64", indexed: false }], type: "event", name: "BaseNameReserved", anonymous: false }, { inputs: [{ internalType: "uint64", name: "version", type: "uint64", indexed: false }], type: "event", name: "Initialized", 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: "oldReg", type: "address", indexed: true }, { internalType: "address", name: "newReg", type: "address", indexed: true }], type: "event", name: "RegistryUpdated", anonymous: false }, { inputs: [{ internalType: "address", name: "implementation", type: "address", indexed: true }], type: "event", name: "Upgraded", anonymous: false }, { inputs: [{ internalType: "address", name: "user", type: "address", indexed: true }, { internalType: "enum IPopRules.PopStatus", name: "status", type: "uint8", indexed: false }], type: "event", name: "UserPopStatusSet", anonymous: false }, { inputs: [], stateMutability: "view", type: "function", name: "MAX_RESERVATION_TIME", outputs: [{ internalType: "uint256", name: "", type: "uint256" }] }, { inputs: [], stateMutability: "view", type: "function", name: "UPGRADE_INTERFACE_VERSION", outputs: [{ internalType: "string", name: "", type: "string" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }], stateMutability: "pure", type: "function", name: "classifyName", outputs: [{ internalType: "enum IPopRules.PopStatus", name: "requirement", type: "uint8" }, { internalType: "string", name: "message", type: "string" }] }, { inputs: [], stateMutability: "view", type: "function", name: "dotRegistryController", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "view", type: "function", name: "getBaseNameReservation", outputs: [{ internalType: "address", name: "reservationOwner", type: "address" }, { internalType: "uint64", name: "expiryTimestamp", type: "uint64" }] }, { inputs: [{ internalType: "uint256", name: "_startingPrice", type: "uint256" }], stateMutability: "nonpayable", type: "function", name: "initialize" }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "pure", type: "function", name: "isBaseName", outputs: [{ internalType: "bool", name: "isBase", type: "bool" }] }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "view", type: "function", name: "isBaseNameReserved", outputs: [{ internalType: "bool", name: "isReserved", type: "bool" }, { internalType: "address", name: "reservationOwner", type: "address" }, { internalType: "uint64", name: "expiryTimestamp", type: "uint64" }] }, { inputs: [], stateMutability: "view", type: "function", name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }], stateMutability: "view", type: "function", name: "price", outputs: [{ internalType: "uint256", name: "", type: "uint256" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "view", type: "function", name: "priceWithCheck", outputs: [{ internalType: "struct IPopRules.PriceWithMeta", name: "metadata", type: "tuple", components: [{ internalType: "uint256", name: "price", type: "uint256" }, { internalType: "enum IPopRules.PopStatus", name: "status", type: "uint8" }, { internalType: "enum IPopRules.PopStatus", name: "userStatus", type: "uint8" }, { internalType: "string", name: "message", type: "string" }] }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "view", type: "function", name: "priceWithoutCheck", outputs: [{ internalType: "struct IPopRules.PriceWithMeta", name: "metadata", type: "tuple", components: [{ internalType: "uint256", name: "price", type: "uint256" }, { internalType: "enum IPopRules.PopStatus", name: "status", type: "uint8" }, { internalType: "enum IPopRules.PopStatus", name: "userStatus", type: "uint8" }, { internalType: "string", name: "message", type: "string" }] }] }, { inputs: [], stateMutability: "view", type: "function", name: "proxiableUUID", outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }] }, { inputs: [], stateMutability: "nonpayable", type: "function", name: "renounceOwnership" }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "view", type: "function", name: "reservations", outputs: [{ internalType: "address", name: "owner", type: "address" }, { internalType: "uint64", name: "expires", type: "uint64" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "nonpayable", type: "function", name: "reserveBaseName" }, { inputs: [{ internalType: "enum IPopRules.PopStatus", name: "status", type: "uint8" }], stateMutability: "nonpayable", type: "function", name: "setUserPopStatus" }, { inputs: [], stateMutability: "view", type: "function", name: "startingPrice", outputs: [{ internalType: "uint256", name: "", type: "uint256" }] }, { inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }], stateMutability: "view", type: "function", name: "supportsInterface", outputs: [{ internalType: "bool", name: "supported", type: "bool" }] }, { inputs: [{ internalType: "address", name: "newOwner", type: "address" }], stateMutability: "nonpayable", type: "function", name: "transferOwnership" }, { inputs: [{ internalType: "address", name: "newRegistry", type: "address" }], stateMutability: "nonpayable", type: "function", name: "updateDotRegistry" }, { inputs: [{ internalType: "address", name: "newImplementation", type: "address" }, { internalType: "bytes", name: "data", type: "bytes" }], stateMutability: "payable", type: "function", name: "upgradeToAndCall" }, { inputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function", name: "userPopStatus", outputs: [{ internalType: "enum IPopRules.PopStatus", name: "", type: "uint8" }] }, { inputs: [], stateMutability: "pure", type: "function", name: "version", outputs: [{ internalType: "string", name: "versionString", type: "string" }] }], devdoc: { kind: "dev", methods: { "classifyName(string)": { params: { name: "The name label being evaluated" }, returns: { message: "Explanation of classification result", requirement: "Required tier for registration" } }, constructor: { "custom:oz-upgrades-unsafe-allow": "constructor" }, "getBaseNameReservation(string)": { params: { baseName: "The base label without trailing digits" }, returns: { expiryTimestamp: "UNIX timestamp when the reservation expires", reservationOwner: "The address assigned to the reservation" } }, "initialize(uint256)": { params: { _startingPrice: "Base price in wei for No pop status users" } }, "isBaseName(string)": { params: { name: "The name to check" }, returns: { isBase: "stating if the name is base or not" } }, "isBaseNameReserved(string)": { params: { baseName: "The base label without trailing digits" }, returns: { expiryTimestamp: "The reservation expiry timestamp", isReserved: "True if a reservation is active", reservationOwner: "The reservation holder" } }, "owner()": { details: "Returns the address of the current owner." }, "price(string)": { params: { name: "Domain label to price" }, returns: { _0: "for registering the name" } }, "priceWithCheck(string,address)": { details: "We currently revert on names considered as reserved for Governance The price we apply here is merely for spam protection and is insignificant It mainly applies to no status users", params: { name: "Domain label", userAddress: "Registering user for the given label" }, returns: { metadata: "Price with PoP requirements" } }, "priceWithoutCheck(string,address)": { details: "We currently dont revert on names considered as reserved for Governance The price we apply here is merely for spam protection and is insignificant It mainly applies to no status usersThis function is the same as @custom:function priceWithCheck", params: { name: "Domain label", userAddress: "Registering user for the given label" }, returns: { metadata: "Price with PoP requirements" } }, "proxiableUUID()": { details: "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." }, "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." }, "reserveBaseName(string,address)": { details: "Can only be called by the registry", params: { baseName: "The base label with trailing digits removed", user: "The address receiving reservation rights" } }, "setUserPopStatus(uint8)": { details: "Once set, this PoP status applies to all registrations by this user This replaces per-name PoP assignmentsThis is temporary until we have a Precompile for accessing PoP status", params: { status: "The PoP tier to assign to the user (NoStatus, PopLite, or PopFull)" } }, "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." }, "transferOwnership(address)": { details: "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." }, "updateDotRegistry(address)": { params: { dotRegistry: "the address of the new registry" } }, "upgradeToAndCall(address,bytes)": { "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall", details: "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." }, "version()": { returns: { versionString: "Current version string" } } }, version: 1 }, userdoc: { kind: "user", methods: { "MAX_RESERVATION_TIME()": { notice: "Maximum time a base name can be reserved" }, "classifyName(string)": { notice: "Classifies a name into a required PoP tier according to DotNS naming rules" }, "dotRegistryController()": { notice: "Authorized registry controller address" }, "getBaseNameReservation(string)": { notice: "Retrieves reservation information for a base name" }, "initialize(uint256)": { notice: "Initializes the oracle (public entry point)" }, "isBaseName(string)": { notice: "Used to determine if a given name is a base name Base name means has no trailing digits based on POP rules" }, "isBaseNameReserved(string)": { notice: "Indicates whether a base name is currently reserved" }, "price(string)": { notice: "Calculates registration cost" }, "priceWithCheck(string,address)": { notice: "Calculates price with PoP and reservation validation" }, "priceWithoutCheck(string,address)": { notice: "Calculates price with PoP and reservation validation" }, "reservations(string)": { notice: "Active reservations for base names" }, "reserveBaseName(string,address)": { notice: "Creates a reservation entry for the digit-stripped version of a name" }, "setUserPopStatus(uint8)": { notice: "Sets the Proof-of-Personhood (PoP) tier for the caller's profile" }, "startingPrice()": { notice: "Wei price for names with 9 characters and up" }, "updateDotRegistry(address)": { notice: "allows the Owner to update the dot registry" }, "userPopStatus(address)": { notice: "Tracks PoP status per user/profile" }, "version()": { notice: "Returns implementation version" } }, version: 1 } }, settings: { remappings: ["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/halmos-cheatcodes/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"], optimizer: { enabled: true, runs: 200 }, metadata: { bytecodeHash: "ipfs" }, compilationTarget: { "contracts/pop/PopRules.sol": "PopRules" }, evmVersion: "cancun", libraries: {}, viaIR: true }, sources: { "contracts/pop/IPopRules.sol": { keccak256: "0x0c32818b1a88e42368621dea48d9f6c8ff40e256ab19906cc69794a717e2c7ad", urls: ["bzz-raw://86e87b136509a46b680f8cc8fa9cadc722546beec4ea5e0f17e420735ce0daeb", "dweb:/ipfs/QmVybQR8gsagmqDHiw9ncqWibkYiQeEaBCMpbRh1GNpNCo"], license: "MIT" }, "contracts/pop/PopRules.sol": { keccak256: "0x57cd23da00d2027d3b9da75898590a6daf7cd05a92329cfd47883cba49859ef9", urls: ["bzz-raw://5fcf7b351e89e0cb03e3a1edacc55ce36eb36d15f18b9120d093356846bde180", "dweb:/ipfs/Qmdr5J6mMNra2XiaSbcbdEEUnw15GDuGJ75wXvoD72ofxH"], license: "MIT" }, "contracts/utils/StringUtils.sol": { keccak256: "0xea0408b85e81253b372a80170787b646b37e7b32a663675a5690a3f593994be2", urls: ["bzz-raw://b36e7a904b394c970217b375b39e6fa452a5cc91afdb5d45d32ef07b89809a9c", "dweb:/ipfs/QmQw5caBUK27wLgEwpwXqjbpYLSNm3Nf7s1QgzMeVmT2Jk"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { keccak256: "0x85c3b9bac35a90dce9ed9b31532c3739cae432359d8d7ff59cb6712f21c7ed14", urls: ["bzz-raw://a084d32ad4ad5b1d4494124d7695334dbeff81c2d1846a01ef1215153dd38eed", "dweb:/ipfs/QmbzDrfeogDd3n65mADjLuy97oAMgh2CtiUxKKEpM3WB8b"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { keccak256: "0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16", urls: ["bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d", "dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { keccak256: "0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf", urls: ["bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e", "dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { keccak256: "0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d", urls: ["bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455", "dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { keccak256: "0x16b88aca1f1c3aa38783416d86207ce6fe574fcd1993dfe54403b5c8b6c74224", urls: ["bzz-raw://29f3c5c687fe0d87742b013872f495e67656910530c916a69873860dc8fea812", "dweb:/ipfs/QmbspfQXmbhCANqqiunUFm9fiVVQwPet2YKQoJ58km442Y"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol": { keccak256: "0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5", urls: ["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c", "dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol": { keccak256: "0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b", urls: ["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422", "dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": { keccak256: "0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618", urls: ["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a", "dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { keccak256: "0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b", urls: ["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d", "dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { keccak256: "0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05", urls: ["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08", "dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol": { keccak256: "0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a", urls: ["bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34", "dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { keccak256: "0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346", urls: ["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710", "dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Bytes.sol": { keccak256: "0x8140d608316521b1fd71167c3b708ebb8659da070723fc8807609553b296ee33", urls: ["bzz-raw://a7bf7db66869ba1e945a0390b85da2f6afc7e42a4735ca918d0d56ac90c50147", "dweb:/ipfs/QmRmNyhpBpgzSdQqLtrQCYE7H7eLnVVxh2Yy4YMrySR8AR"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Errors.sol": { keccak256: "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123", urls: ["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf", "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol": { keccak256: "0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583", urls: ["bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56", "dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG"], 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/StorageSlot.sol": { keccak256: "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97", urls: ["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b", "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { keccak256: "0x36d1750bf1aa5fee9c52adb2f7857ab652daca722fc05dff533b364f67a1139a", urls: ["bzz-raw://2e5e7052539b7849d02f3ce25acc1dce29373c11cfae9f0bc918c54b780c549a", "dweb:/ipfs/QmRGE32xNkMTo6i4pHHMxjpiu77yPwnTA25SFngw2NXJys"], 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: "0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c", urls: ["bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c", "dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { keccak256: "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54", urls: ["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8", "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { keccak256: "0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3", urls: ["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03", "dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"], license: "MIT" } }, version: 1 },
|
|
2822
|
-
storageLayout: { storage: [{ astId:
|
|
2823
|
-
ast: { absolutePath: "contracts/pop/PopRules.sol", id: 1088, exportedSymbols: { ERC165Upgradeable: [43322], IPopRules: [156], Initializable: [44614], OwnableUpgradeable: [42148], PopRules: [1087], StringUtils: [6323], UUPSUpgradeable: [44780] }, nodeType: "SourceUnit", src: "32:11772:1", nodes: [{ id: 158, nodeType: "PragmaDirective", src: "32:24:1", nodes: [], literals: ["solidity", "^", "0.8", ".30"] }, { id: 160, nodeType: "ImportDirective", src: "58:96:1", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", file: "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", nameLocation: "-1:-1:-1", scope: 1088, sourceUnit: 42153, symbolAliases: [{ foreign: { id: 159, name: "Initializable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 44614, src: "66:13:1", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 162, nodeType: "ImportDirective", src: "155:100:1", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", file: "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", nameLocation: "-1:-1:-1", scope: 1088, sourceUnit: 42157, symbolAliases: [{ foreign: { id: 161, name: "UUPSUpgradeable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 44780, src: "163:15:1", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 164, nodeType: "ImportDirective", src: "256:107:1", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", file: "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", nameLocation: "-1:-1:-1", scope: 1088, sourceUnit: 42149, symbolAliases: [{ foreign: { id: 163, name: "OwnableUpgradeable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 42148, src: "269:18:1", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 166, nodeType: "ImportDirective", src: "364:118:1", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", file: "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", nameLocation: "-1:-1:-1", scope: 1088, sourceUnit: 43323, symbolAliases: [{ foreign: { id: 165, name: "ERC165Upgradeable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 43322, src: "377:17:1", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 168, nodeType: "ImportDirective", src: "483:53:1", nodes: [], absolutePath: "contracts/utils/StringUtils.sol", file: "../utils/StringUtils.sol", nameLocation: "-1:-1:-1", scope: 1088, sourceUnit: 6324, symbolAliases: [{ foreign: { id: 167, name: "StringUtils", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 6323, src: "491:11:1", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 170, nodeType: "ImportDirective", src: "537:42:1", nodes: [], absolutePath: "contracts/pop/IPopRules.sol", file: "./IPopRules.sol", nameLocation: "-1:-1:-1", scope: 1088, sourceUnit: 157, symbolAliases: [{ foreign: { id: 169, name: "IPopRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 156, src: "545:9:1", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 1087, nodeType: "ContractDefinition", src: "735:11068:1", nodes: [{ id: 183, nodeType: "UsingForDirective", src: "863:24:1", nodes: [], global: false, libraryName: { id: 182, name: "StringUtils", nameLocations: ["869:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 6323, src: "869:11:1" } }, { id: 186, nodeType: "VariableDeclaration", src: "954:28:1", nodes: [], constant: false, documentation: { id: 184, nodeType: "StructuredDocumentation", src: "893:56:1", text: "@notice Wei price for names with 9 characters and up" }, functionSelector: "d6fbf202", mutability: "mutable", name: "startingPrice", nameLocation: "969:13:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 185, name: "uint256", nodeType: "ElementaryTypeName", src: "954:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "public" }, { id: 192, nodeType: "VariableDeclaration", src: "1040:50:1", nodes: [], constant: false, documentation: { id: 187, nodeType: "StructuredDocumentation", src: "989:46:1", text: "@notice Tracks PoP status per user/profile" }, functionSelector: "257ab866", mutability: "mutable", name: "userPopStatus", nameLocation: "1077:13:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_enum$_PopStatus_$8_$", typeString: "mapping(address => enum IPopRules.PopStatus)" }, typeName: { id: 191, keyName: "", keyNameLocation: "-1:-1:-1", keyType: { id: 188, name: "address", nodeType: "ElementaryTypeName", src: "1048:7:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Mapping", src: "1040:29:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_enum$_PopStatus_$8_$", typeString: "mapping(address => enum IPopRules.PopStatus)" }, valueName: "", valueNameLocation: "-1:-1:-1", valueType: { id: 190, nodeType: "UserDefinedTypeName", pathNode: { id: 189, name: "PopStatus", nameLocations: ["1059:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "1059:9:1" }, referencedDeclaration: 8, src: "1059:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } } }, visibility: "public" }, { id: 198, nodeType: "VariableDeclaration", src: "1148:71:1", nodes: [], constant: false, documentation: { id: 193, nodeType: "StructuredDocumentation", src: "1097:46:1", text: "@notice Active reservations for base names" }, functionSelector: "c5c95048", mutability: "mutable", name: "reservations", nameLocation: "1207:12:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string => struct IPopRules.Reservation)" }, typeName: { id: 197, keyName: "baseName", keyNameLocation: "1163:8:1", keyType: { id: 194, name: "string", nodeType: "ElementaryTypeName", src: "1156:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, nodeType: "Mapping", src: "1148:51:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string => struct IPopRules.Reservation)" }, valueName: "reservation", valueNameLocation: "1187:11:1", valueType: { id: 196, nodeType: "UserDefinedTypeName", pathNode: { id: 195, name: "Reservation", nameLocations: ["1175:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 63, src: "1175:11:1" }, referencedDeclaration: 63, src: "1175:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage_ptr", typeString: "struct IPopRules.Reservation" } } }, visibility: "public" }, { id: 202, nodeType: "VariableDeclaration", src: "1283:55:1", nodes: [], constant: true, documentation: { id: 199, nodeType: "StructuredDocumentation", src: "1226:52:1", text: "@notice Maximum time a base name can be reserved" }, functionSelector: "68e344e9", mutability: "constant", name: "MAX_RESERVATION_TIME", nameLocation: "1307:20:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 200, name: "uint256", nodeType: "ElementaryTypeName", src: "1283:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, value: { hexValue: "3132", id: 201, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1330:8:1", subdenomination: "weeks", typeDescriptions: { typeIdentifier: "t_rational_7257600_by_1", typeString: "int_const 7257600" }, value: "12" }, visibility: "public" }, { id: 206, nodeType: "VariableDeclaration", src: "1382:110:1", nodes: [], constant: true, documentation: { id: 203, nodeType: "StructuredDocumentation", src: "1345:32:1", text: "@notice Namehash of .dot TLD" }, mutability: "constant", name: "DOT_NODE", nameLocation: "1407:8:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bytes32", typeString: "bytes32" }, typeName: { id: 204, name: "bytes32", nodeType: "ElementaryTypeName", src: "1382:7:1", typeDescriptions: { typeIdentifier: "t_bytes32", typeString: "bytes32" } }, value: { hexValue: "307833666365376431333634613839336532313362633432313237393262353137666663383866356231336238366338656639633864333930633361313337306365", id: 205, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1426:66:1", typeDescriptions: { typeIdentifier: "t_rational_28860543197223043133013784600372423225309622540484740764100769870428629070030_by_1", typeString: "int_const 2886...(69 digits omitted)...0030" }, value: "0x3fce7d1364a893e213bc4212792b517ffc88f5b13b86c8ef9c8d390c3a1370ce" }, visibility: "private" }, { id: 209, nodeType: "VariableDeclaration", src: "1554:36:1", nodes: [], constant: false, documentation: { id: 207, nodeType: "StructuredDocumentation", src: "1499:50:1", text: "@notice Authorized registry controller address" }, functionSelector: "11d812c3", mutability: "mutable", name: "dotRegistryController", nameLocation: "1569:21:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 208, name: "address", nodeType: "ElementaryTypeName", src: "1554:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "public" }, { id: 214, nodeType: "VariableDeclaration", src: "1734:25:1", nodes: [], constant: false, documentation: { id: 210, nodeType: "StructuredDocumentation", src: "1597:74:1", text: "@dev Reserved storage space to allow for layout changes in the future." }, mutability: "mutable", name: "__gap", nameLocation: "1754:5:1", scope: 1087, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_array$_t_uint256_$50_storage", typeString: "uint256[50]" }, typeName: { baseType: { id: 211, name: "uint256", nodeType: "ElementaryTypeName", src: "1734:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 213, length: { hexValue: "3530", id: 212, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1742:2:1", typeDescriptions: { typeIdentifier: "t_rational_50_by_1", typeString: "int_const 50" }, value: "50" }, nodeType: "ArrayTypeName", src: "1734:11:1", typeDescriptions: { typeIdentifier: "t_array$_t_uint256_$50_storage_ptr", typeString: "uint256[50]" } }, visibility: "private" }, { id: 222, nodeType: "ModifierDefinition", src: "1824:67:1", nodes: [], body: { id: 221, nodeType: "Block", src: "1848:43:1", nodes: [], statements: [{ expression: { arguments: [], expression: { argumentTypes: [], id: 217, name: "_onlyRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1086, src: "1858:13:1", typeDescriptions: { typeIdentifier: "t_function_internal_view$__$returns$__$", typeString: "function () view" } }, id: 218, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1858:15:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 219, nodeType: "ExpressionStatement", src: "1858:15:1" }, { id: 220, nodeType: "PlaceholderStatement", src: "1883:1:1" }] }, documentation: { id: 215, nodeType: "StructuredDocumentation", src: "1766:53:1", text: "@notice Restricts function to registry controller" }, name: "onlyRegistry", nameLocation: "1833:12:1", parameters: { id: 216, nodeType: "ParameterList", parameters: [], src: "1845:2:1" }, virtual: false, visibility: "internal" }, { id: 230, nodeType: "FunctionDefinition", src: "1950:53:1", nodes: [], body: { id: 229, nodeType: "Block", src: "1964:39:1", nodes: [], statements: [{ expression: { arguments: [], expression: { argumentTypes: [], id: 226, name: "_disableInitializers", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 44568, src: "1974:20:1", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$__$returns$__$", typeString: "function ()" } }, id: 227, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1974:22:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 228, nodeType: "ExpressionStatement", src: "1974:22:1" }] }, documentation: { id: 223, nodeType: "StructuredDocumentation", src: "1897:48:1", text: "@custom:oz-upgrades-unsafe-allow constructor" }, implemented: true, kind: "constructor", modifiers: [], name: "", nameLocation: "-1:-1:-1", parameters: { id: 224, nodeType: "ParameterList", parameters: [], src: "1961:2:1" }, returnParameters: { id: 225, nodeType: "ParameterList", parameters: [], src: "1964:0:1" }, scope: 1087, stateMutability: "nonpayable", virtual: false, visibility: "public" }, { id: 251, nodeType: "FunctionDefinition", src: "2144:181:1", nodes: [], body: { id: 250, nodeType: "Block", src: "2217:108:1", nodes: [], statements: [{ expression: { arguments: [{ expression: { id: 239, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "2242:3:1", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 240, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "2246:6:1", memberName: "sender", nodeType: "MemberAccess", src: "2242:10:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 238, name: "__Ownable_init", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 42008, src: "2227:14:1", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$_t_address_$returns$__$", typeString: "function (address)" } }, id: 241, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2227:26:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 242, nodeType: "ExpressionStatement", src: "2227:26:1" }, { expression: { arguments: [], expression: { argumentTypes: [], id: 243, name: "__ERC165_init", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 43299, src: "2263:13:1", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$__$returns$__$", typeString: "function ()" } }, id: 244, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2263:15:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 245, nodeType: "ExpressionStatement", src: "2263:15:1" }, { expression: { id: 248, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 246, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 186, src: "2288:13:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 247, name: "_startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 233, src: "2304:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "2288:30:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 249, nodeType: "ExpressionStatement", src: "2288:30:1" }] }, documentation: { id: 231, nodeType: "StructuredDocumentation", src: "2009:130:1", text: `@notice Initializes the oracle with pricing parameters
|
|
2824
|
-
@param _startingPrice Base price in wei for
|
|
2825
|
-
@param _startingPrice Base price in wei for No pop status users` }, functionSelector: "fe4b84df", implemented: true, kind: "function", modifiers: [{ id: 257, kind: "modifierInvocation", modifierName: { id: 256, name: "initializer", nameLocations: ["2514:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 44454, src: "2514:11:1" }, nodeType: "ModifierInvocation", src: "2514:11:1" }], name: "initialize", nameLocation: "2472:10:1", parameters: { id: 255, nodeType: "ParameterList", parameters: [{ constant: false, id: 254, mutability: "mutable", name: "_startingPrice", nameLocation: "2491:14:1", nodeType: "VariableDeclaration", scope: 264, src: "2483:22:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 253, name: "uint256", nodeType: "ElementaryTypeName", src: "2483:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "2482:24:1" }, returnParameters: { id: 258, nodeType: "ParameterList", parameters: [], src: "2526:0:1" }, scope: 1087, stateMutability: "nonpayable", virtual: false, visibility: "public" }, { id: 286, nodeType: "FunctionDefinition", src: "2608:164:1", nodes: [], body: { id: 285, nodeType: "Block", src: "2670:102:1", nodes: [], statements: [{ expression: { id: 277, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 272, name: "userPopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 192, src: "2680:13:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_enum$_PopStatus_$8_$", typeString: "mapping(address => enum IPopRules.PopStatus)" } }, id: 275, indexExpression: { expression: { id: 273, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "2694:3:1", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 274, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "2698:6:1", memberName: "sender", nodeType: "MemberAccess", src: "2694:10:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "2680:25:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 276, name: "status", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 268, src: "2708:6:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "2680:34:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, id: 278, nodeType: "ExpressionStatement", src: "2680:34:1" }, { eventCall: { arguments: [{ expression: { id: 280, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "2746:3:1", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 281, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "2750:6:1", memberName: "sender", nodeType: "MemberAccess", src: "2746:10:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 282, name: "status", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 268, src: "2758:6:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }], id: 279, name: "UserPopStatusSet", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 32, src: "2729:16:1", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$_t_enum$_PopStatus_$8_$returns$__$", typeString: "function (address,enum IPopRules.PopStatus)" } }, id: 283, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2729:36:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 284, nodeType: "EmitStatement", src: "2724:41:1" }] }, baseFunctions: [147], documentation: { id: 265, nodeType: "StructuredDocumentation", src: "2578:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "0848731f", implemented: true, kind: "function", modifiers: [], name: "setUserPopStatus", nameLocation: "2617:16:1", overrides: { id: 270, nodeType: "OverrideSpecifier", overrides: [], src: "2661:8:1" }, parameters: { id: 269, nodeType: "ParameterList", parameters: [{ constant: false, id: 268, mutability: "mutable", name: "status", nameLocation: "2644:6:1", nodeType: "VariableDeclaration", scope: 286, src: "2634:16:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 267, nodeType: "UserDefinedTypeName", pathNode: { id: 266, name: "PopStatus", nameLocations: ["2634:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "2634:9:1" }, referencedDeclaration: 8, src: "2634:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], src: "2633:18:1" }, returnParameters: { id: 271, nodeType: "ParameterList", parameters: [], src: "2670:0:1" }, scope: 1087, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 375, nodeType: "FunctionDefinition", src: "2808:994:1", nodes: [], body: { id: 374, nodeType: "Block", src: "2964:838:1", nodes: [], statements: [{ assignments: [299], declarations: [{ constant: false, id: 299, mutability: "mutable", name: "totallength", nameLocation: "2982:11:1", nodeType: "VariableDeclaration", scope: 374, src: "2974:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 298, name: "uint256", nodeType: "ElementaryTypeName", src: "2974:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 303, initialValue: { arguments: [], expression: { argumentTypes: [], expression: { id: 300, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 289, src: "2996:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, id: 301, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "3001:6:1", memberName: "strlen", nodeType: "MemberAccess", referencedDeclaration: 6237, src: "2996:11:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", typeString: "function (string memory) pure returns (uint256)" } }, id: 302, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2996:13:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "2974:35:1" }, { assignments: [305], declarations: [{ constant: false, id: 305, mutability: "mutable", name: "trailingDigits", nameLocation: "3027:14:1", nodeType: "VariableDeclaration", scope: 374, src: "3019:22:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 304, name: "uint256", nodeType: "ElementaryTypeName", src: "3019:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 309, initialValue: { arguments: [{ id: 307, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 289, src: "3065:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 306, name: "_countTrailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 952, src: "3044:20:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) pure returns (uint256)" } }, id: 308, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3044:26:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "3019:51:1" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 313, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 311, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 305, src: "3089:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "32", id: 312, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3107:1:1", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "3089:19:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "4e616d652063616e2068617665206d6178696d756d203220646967697420737566666978", id: 315, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3119:38:1", typeDescriptions: { typeIdentifier: "t_stringliteral_63492d9571144dcb7601da998aa9bd05b8551a271ab715f8e26ba8398bcee36d", typeString: 'literal_string "Name can have maximum 2 digit suffix"' }, value: "Name can have maximum 2 digit suffix" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_63492d9571144dcb7601da998aa9bd05b8551a271ab715f8e26ba8398bcee36d", typeString: 'literal_string "Name can have maximum 2 digit suffix"' }], id: 314, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "3110:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 316, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3110:48:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 310, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "3081:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 317, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3081:78:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 318, nodeType: "ExpressionStatement", src: "3081:78:1" }, { assignments: [320], declarations: [{ constant: false, id: 320, mutability: "mutable", name: "baselength", nameLocation: "3178:10:1", nodeType: "VariableDeclaration", scope: 374, src: "3170:18:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 319, name: "uint256", nodeType: "ElementaryTypeName", src: "3170:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 324, initialValue: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 323, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 321, name: "totallength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 299, src: "3191:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { id: 322, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 305, src: "3205:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "3191:28:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "3170:49:1" }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 327, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 325, name: "baselength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 320, src: "3234:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "35", id: 326, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3248:1:1", typeDescriptions: { typeIdentifier: "t_rational_5_by_1", typeString: "int_const 5" }, value: "5" }, src: "3234:15:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 334, nodeType: "IfStatement", src: "3230:100:1", trueBody: { id: 333, nodeType: "Block", src: "3251:79:1", statements: [{ expression: { components: [{ expression: { id: 328, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "3273:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 329, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "3283:8:1", memberName: "Reserved", nodeType: "MemberAccess", referencedDeclaration: 7, src: "3273:18:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "526573657276656420666f7220476f7665726e616e6365", id: 330, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3293:25:1", typeDescriptions: { typeIdentifier: "t_stringliteral_b7956ca3f0978aa4071bf09e113e895a6f37785ed864786f858d0445711ea48f", typeString: 'literal_string "Reserved for Governance"' }, value: "Reserved for Governance" }], id: 331, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "3272:47:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_stringliteral_b7956ca3f0978aa4071bf09e113e895a6f37785ed864786f858d0445711ea48f_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Reserved for Governance")' } }, functionReturnParameters: 297, id: 332, nodeType: "Return", src: "3265:54:1" }] } }, { condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 341, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 337, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 335, name: "baselength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 320, src: "3344:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "36", id: 336, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3358:1:1", typeDescriptions: { typeIdentifier: "t_rational_6_by_1", typeString: "int_const 6" }, value: "6" }, src: "3344:15:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 340, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 338, name: "baselength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 320, src: "3363:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "38", id: 339, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3377:1:1", typeDescriptions: { typeIdentifier: "t_rational_8_by_1", typeString: "int_const 8" }, value: "8" }, src: "3363:15:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "3344:34:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 358, nodeType: "IfStatement", src: "3340:271:1", trueBody: { id: 357, nodeType: "Block", src: "3380:231:1", statements: [{ condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 344, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 342, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 305, src: "3398:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "32", id: 343, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3416:1:1", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "3398:19:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 351, nodeType: "IfStatement", src: "3394:126:1", trueBody: { id: 350, nodeType: "Block", src: "3419:101:1", statements: [{ expression: { components: [{ expression: { id: 345, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "3445:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 346, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "3455:7:1", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 5, src: "3445:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "5265717569726573204c6967687420706572736f6e686f6f6420766572696669636174696f6e", id: 347, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3464:40:1", typeDescriptions: { typeIdentifier: "t_stringliteral_68ecbc02e8d7f383157306e048c0a9c1f32862047503a6eabba9734ed82ac713", typeString: 'literal_string "Requires Light personhood verification"' }, value: "Requires Light personhood verification" }], id: 348, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "3444:61:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_stringliteral_68ecbc02e8d7f383157306e048c0a9c1f32862047503a6eabba9734ed82ac713_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Requires Light personhood verification")' } }, functionReturnParameters: 297, id: 349, nodeType: "Return", src: "3437:68:1" }] } }, { expression: { components: [{ expression: { id: 352, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "3541:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 353, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "3551:7:1", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 6, src: "3541:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "52657175697265732046756c6c20706572736f6e686f6f6420766572696669636174696f6e", id: 354, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3560:39:1", typeDescriptions: { typeIdentifier: "t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71", typeString: 'literal_string "Requires Full personhood verification"' }, value: "Requires Full personhood verification" }], id: 355, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "3540:60:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Requires Full personhood verification")' } }, functionReturnParameters: 297, id: 356, nodeType: "Return", src: "3533:67:1" }] } }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 361, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 359, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 305, src: "3625:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "32", id: 360, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3643:1:1", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "3625:19:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 368, nodeType: "IfStatement", src: "3621:97:1", trueBody: { id: 367, nodeType: "Block", src: "3646:72:1", statements: [{ expression: { components: [{ expression: { id: 362, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "3668:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 363, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "3678:8:1", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 4, src: "3668:18:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "417661696c61626c6520746f20616c6c", id: 364, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3688:18:1", typeDescriptions: { typeIdentifier: "t_stringliteral_e245709084d01d1a9a8ee214a6f7bf853604ec8557b914522d179e589afba242", typeString: 'literal_string "Available to all"' }, value: "Available to all" }], id: 365, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "3667:40:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_stringliteral_e245709084d01d1a9a8ee214a6f7bf853604ec8557b914522d179e589afba242_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Available to all")' } }, functionReturnParameters: 297, id: 366, nodeType: "Return", src: "3660:47:1" }] } }, { expression: { components: [{ expression: { id: 369, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "3736:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 370, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "3746:7:1", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 6, src: "3736:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "52657175697265732046756c6c20706572736f6e686f6f6420766572696669636174696f6e", id: 371, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3755:39:1", typeDescriptions: { typeIdentifier: "t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71", typeString: 'literal_string "Requires Full personhood verification"' }, value: "Requires Full personhood verification" }], id: 372, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "3735:60:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Requires Full personhood verification")' } }, functionReturnParameters: 297, id: 373, nodeType: "Return", src: "3728:67:1" }] }, baseFunctions: [74], documentation: { id: 287, nodeType: "StructuredDocumentation", src: "2778:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "3017fa33", implemented: true, kind: "function", modifiers: [], name: "classifyName", nameLocation: "2817:12:1", overrides: { id: 291, nodeType: "OverrideSpecifier", overrides: [], src: "2888:8:1" }, parameters: { id: 290, nodeType: "ParameterList", parameters: [{ constant: false, id: 289, mutability: "mutable", name: "name", nameLocation: "2846:4:1", nodeType: "VariableDeclaration", scope: 375, src: "2830:20:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 288, name: "string", nodeType: "ElementaryTypeName", src: "2830:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "2829:22:1" }, returnParameters: { id: 297, nodeType: "ParameterList", parameters: [{ constant: false, id: 294, mutability: "mutable", name: "requirement", nameLocation: "2924:11:1", nodeType: "VariableDeclaration", scope: 375, src: "2914:21:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 293, nodeType: "UserDefinedTypeName", pathNode: { id: 292, name: "PopStatus", nameLocations: ["2914:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "2914:9:1" }, referencedDeclaration: 8, src: "2914:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 296, mutability: "mutable", name: "message", nameLocation: "2951:7:1", nodeType: "VariableDeclaration", scope: 375, src: "2937:21:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 295, name: "string", nodeType: "ElementaryTypeName", src: "2937:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "2913:46:1" }, scope: 1087, stateMutability: "pure", virtual: false, visibility: "public" }, { id: 451, nodeType: "FunctionDefinition", src: "3838:993:1", nodes: [], body: { id: 450, nodeType: "Block", src: "3987:844:1", nodes: [], statements: [{ assignments: [388, null], declarations: [{ constant: false, id: 388, mutability: "mutable", name: "requiredStatus", nameLocation: "4008:14:1", nodeType: "VariableDeclaration", scope: 450, src: "3998:24:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 387, nodeType: "UserDefinedTypeName", pathNode: { id: 386, name: "PopStatus", nameLocations: ["3998:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "3998:9:1" }, referencedDeclaration: 8, src: "3998:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, null], id: 392, initialValue: { arguments: [{ id: 390, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 378, src: "4040:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 389, name: "classifyName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 375, src: "4027:12:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$8_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 391, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4027:18:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "3997:48:1" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 397, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 394, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 388, src: "4076:14:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 395, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "4094:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 396, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "4104:7:1", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 5, src: "4094:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "4076:35:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "42617365207265736572766174696f6e2072657175697265732061206c6974652d656c696769626c65206e616d65", id: 399, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "4134:48:1", typeDescriptions: { typeIdentifier: "t_stringliteral_d7191ec14fb29d6cbf8d7745d3989620c29418d9b4a8e8dfed3f3a2e83cf3d9b", typeString: 'literal_string "Base reservation requires a lite-eligible name"' }, value: "Base reservation requires a lite-eligible name" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_d7191ec14fb29d6cbf8d7745d3989620c29418d9b4a8e8dfed3f3a2e83cf3d9b", typeString: 'literal_string "Base reservation requires a lite-eligible name"' }], id: 398, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "4125:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 400, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4125:58:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 393, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "4055:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 401, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4055:138:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 402, nodeType: "ExpressionStatement", src: "4055:138:1" }, { assignments: [404], declarations: [{ constant: false, id: 404, mutability: "mutable", name: "strippedBase", nameLocation: "4218:12:1", nodeType: "VariableDeclaration", scope: 450, src: "4204:26:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 403, name: "string", nodeType: "ElementaryTypeName", src: "4204:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 408, initialValue: { arguments: [{ id: 406, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 378, src: "4246:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 405, name: "_stripDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1029, src: "4233:12:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (string memory)" } }, id: 407, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4233:18:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "VariableDeclarationStatement", src: "4204:47:1" }, { assignments: [411], declarations: [{ constant: false, id: 411, mutability: "mutable", name: "existingReservation", nameLocation: "4281:19:1", nodeType: "VariableDeclaration", scope: 450, src: "4262:38:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 410, nodeType: "UserDefinedTypeName", pathNode: { id: 409, name: "Reservation", nameLocations: ["4262:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 63, src: "4262:11:1" }, referencedDeclaration: 63, src: "4262:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 415, initialValue: { baseExpression: { id: 412, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 198, src: "4303:12:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 414, indexExpression: { id: 413, name: "strippedBase", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 404, src: "4316:12:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "4303:26:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "4262:67:1" }, { condition: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 422, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 416, name: "existingReservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 411, src: "4343:19:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 417, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "4363:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "4343:25:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { arguments: [{ hexValue: "30", id: 420, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "4380:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 419, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4372:7:1", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 418, name: "address", nodeType: "ElementaryTypeName", src: "4372:7:1", typeDescriptions: {} } }, id: 421, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4372:10:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4343:39:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 449, nodeType: "IfStatement", src: "4339:486:1", trueBody: { id: 448, nodeType: "Block", src: "4384:441:1", statements: [{ assignments: [424], declarations: [{ constant: false, id: 424, mutability: "mutable", name: "expiryTime", nameLocation: "4584:10:1", nodeType: "VariableDeclaration", scope: 448, src: "4577:17:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 423, name: "uint64", nodeType: "ElementaryTypeName", src: "4577:6:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], id: 432, initialValue: { arguments: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 430, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 427, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "4604:5:1", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 428, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "4610:9:1", memberName: "timestamp", nodeType: "MemberAccess", src: "4604:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "+", rightExpression: { id: 429, name: "MAX_RESERVATION_TIME", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 202, src: "4622:20:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "4604:38:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 426, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4597:6:1", typeDescriptions: { typeIdentifier: "t_type$_t_uint64_$", typeString: "type(uint64)" }, typeName: { id: 425, name: "uint64", nodeType: "ElementaryTypeName", src: "4597:6:1", typeDescriptions: {} } }, id: 431, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4597:46:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "VariableDeclarationStatement", src: "4577:66:1" }, { expression: { id: 440, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 433, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 198, src: "4657:12:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 435, indexExpression: { id: 434, name: "strippedBase", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 404, src: "4670:12:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "4657:26:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ id: 437, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 380, src: "4706:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 438, name: "expiryTime", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 424, src: "4728:10:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_uint64", typeString: "uint64" }], id: 436, name: "Reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 63, src: "4686:11:1", typeDescriptions: { typeIdentifier: "t_type$_t_struct$_Reservation_$63_storage_ptr_$", typeString: "type(struct IPopRules.Reservation storage pointer)" } }, id: 439, isConstant: false, isLValue: false, isPure: false, kind: "structConstructorCall", lValueRequested: false, nameLocations: ["4699:5:1", "4719:7:1"], names: ["owner", "expires"], nodeType: "FunctionCall", src: "4686:54:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, src: "4657:83:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, id: 441, nodeType: "ExpressionStatement", src: "4657:83:1" }, { eventCall: { arguments: [{ id: 443, name: "strippedBase", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 404, src: "4776:12:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, { id: 444, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 380, src: "4790:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 445, name: "expiryTime", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 424, src: "4803:10:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_memory_ptr", typeString: "string memory" }, { typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_uint64", typeString: "uint64" }], id: 442, name: "BaseNameReserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 17, src: "4759:16:1", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint64_$returns$__$", typeString: "function (string memory,address,uint64)" } }, id: 446, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4759:55:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 447, nodeType: "EmitStatement", src: "4754:60:1" }] } }] }, baseFunctions: [82], documentation: { id: 376, nodeType: "StructuredDocumentation", src: "3808:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "35696fa7", implemented: true, kind: "function", modifiers: [{ id: 384, kind: "modifierInvocation", modifierName: { id: 383, name: "onlyRegistry", nameLocations: ["3970:12:1"], nodeType: "IdentifierPath", referencedDeclaration: 222, src: "3970:12:1" }, nodeType: "ModifierInvocation", src: "3970:12:1" }], name: "reserveBaseName", nameLocation: "3847:15:1", overrides: { id: 382, nodeType: "OverrideSpecifier", overrides: [], src: "3953:8:1" }, parameters: { id: 381, nodeType: "ParameterList", parameters: [{ constant: false, id: 378, mutability: "mutable", name: "name", nameLocation: "3888:4:1", nodeType: "VariableDeclaration", scope: 451, src: "3872:20:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 377, name: "string", nodeType: "ElementaryTypeName", src: "3872:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 380, mutability: "mutable", name: "userAddress", nameLocation: "3910:11:1", nodeType: "VariableDeclaration", scope: 451, src: "3902:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 379, name: "address", nodeType: "ElementaryTypeName", src: "3902:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "3862:65:1" }, returnParameters: { id: 385, nodeType: "ParameterList", parameters: [], src: "3987:0:1" }, scope: 1087, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 470, nodeType: "FunctionDefinition", src: "4867:194:1", nodes: [], body: { id: 469, nodeType: "Block", src: "4943:118:1", nodes: [], statements: [{ eventCall: { arguments: [{ id: 461, name: "dotRegistryController", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 209, src: "4974:21:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 462, name: "newRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 454, src: "4997:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 460, name: "RegistryUpdated", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 24, src: "4958:15:1", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", typeString: "function (address,address)" } }, id: 463, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4958:51:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 464, nodeType: "EmitStatement", src: "4953:56:1" }, { expression: { id: 467, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 465, name: "dotRegistryController", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 209, src: "5019:21:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 466, name: "newRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 454, src: "5043:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "5019:35:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 468, nodeType: "ExpressionStatement", src: "5019:35:1" }] }, baseFunctions: [140], documentation: { id: 452, nodeType: "StructuredDocumentation", src: "4837:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "c5b9e44e", implemented: true, kind: "function", modifiers: [{ id: 458, kind: "modifierInvocation", modifierName: { id: 457, name: "onlyOwner", nameLocations: ["4933:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 42043, src: "4933:9:1" }, nodeType: "ModifierInvocation", src: "4933:9:1" }], name: "updateDotRegistry", nameLocation: "4876:17:1", overrides: { id: 456, nodeType: "OverrideSpecifier", overrides: [], src: "4924:8:1" }, parameters: { id: 455, nodeType: "ParameterList", parameters: [{ constant: false, id: 454, mutability: "mutable", name: "newRegistry", nameLocation: "4902:11:1", nodeType: "VariableDeclaration", scope: 470, src: "4894:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 453, name: "address", nodeType: "ElementaryTypeName", src: "4894:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "4893:21:1" }, returnParameters: { id: 459, nodeType: "ParameterList", parameters: [], src: "4943:0:1" }, scope: 1087, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 490, nodeType: "FunctionDefinition", src: "5097:181:1", nodes: [], body: { id: 489, nodeType: "Block", src: "5186:92:1", nodes: [], statements: [{ assignments: [480], declarations: [{ constant: false, id: 480, mutability: "mutable", name: "digits", nameLocation: "5204:6:1", nodeType: "VariableDeclaration", scope: 489, src: "5196:14:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 479, name: "uint256", nodeType: "ElementaryTypeName", src: "5196:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 484, initialValue: { arguments: [{ id: 482, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 473, src: "5234:8:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 481, name: "_countTrailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 952, src: "5213:20:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) pure returns (uint256)" } }, id: 483, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5213:30:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "5196:47:1" }, { expression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 487, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 485, name: "digits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 480, src: "5260:6:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "30", id: 486, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "5270:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "5260:11:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, functionReturnParameters: 478, id: 488, nodeType: "Return", src: "5253:18:1" }] }, baseFunctions: [134], documentation: { id: 471, nodeType: "StructuredDocumentation", src: "5067:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "b4956ade", implemented: true, kind: "function", modifiers: [], name: "isBaseName", nameLocation: "5106:10:1", overrides: { id: 475, nodeType: "OverrideSpecifier", overrides: [], src: "5155:8:1" }, parameters: { id: 474, nodeType: "ParameterList", parameters: [{ constant: false, id: 473, mutability: "mutable", name: "baseName", nameLocation: "5133:8:1", nodeType: "VariableDeclaration", scope: 490, src: "5117:24:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 472, name: "string", nodeType: "ElementaryTypeName", src: "5117:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "5116:26:1" }, returnParameters: { id: 478, nodeType: "ParameterList", parameters: [{ constant: false, id: 477, mutability: "mutable", name: "isBase", nameLocation: "5178:6:1", nodeType: "VariableDeclaration", scope: 490, src: "5173:11:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 476, name: "bool", nodeType: "ElementaryTypeName", src: "5173:4:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }], src: "5172:13:1" }, scope: 1087, stateMutability: "pure", virtual: false, visibility: "public" }, { id: 515, nodeType: "FunctionDefinition", src: "5314:296:1", nodes: [], body: { id: 514, nodeType: "Block", src: "5490:120:1", nodes: [], statements: [{ assignments: [503], declarations: [{ constant: false, id: 503, mutability: "mutable", name: "reserved", nameLocation: "5519:8:1", nodeType: "VariableDeclaration", scope: 514, src: "5500:27:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 502, nodeType: "UserDefinedTypeName", pathNode: { id: 501, name: "Reservation", nameLocations: ["5500:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 63, src: "5500:11:1" }, referencedDeclaration: 63, src: "5500:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 507, initialValue: { baseExpression: { id: 504, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 198, src: "5530:12:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 506, indexExpression: { id: 505, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 493, src: "5543:8:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "5530:22:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "5500:52:1" }, { expression: { components: [{ expression: { id: 508, name: "reserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 503, src: "5570:8:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 509, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5579:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "5570:14:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { expression: { id: 510, name: "reserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 503, src: "5586:8:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 511, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5595:7:1", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 62, src: "5586:16:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], id: 512, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "5569:34:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_address_$_t_uint64_$", typeString: "tuple(address,uint64)" } }, functionReturnParameters: 500, id: 513, nodeType: "Return", src: "5562:41:1" }] }, baseFunctions: [92], documentation: { id: 491, nodeType: "StructuredDocumentation", src: "5284:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "8ac7f0f5", implemented: true, kind: "function", modifiers: [], name: "getBaseNameReservation", nameLocation: "5323:22:1", overrides: { id: 495, nodeType: "OverrideSpecifier", overrides: [], src: "5410:8:1" }, parameters: { id: 494, nodeType: "ParameterList", parameters: [{ constant: false, id: 493, mutability: "mutable", name: "baseName", nameLocation: "5362:8:1", nodeType: "VariableDeclaration", scope: 515, src: "5346:24:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 492, name: "string", nodeType: "ElementaryTypeName", src: "5346:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "5345:26:1" }, returnParameters: { id: 500, nodeType: "ParameterList", parameters: [{ constant: false, id: 497, mutability: "mutable", name: "reservationOwner", nameLocation: "5444:16:1", nodeType: "VariableDeclaration", scope: 515, src: "5436:24:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 496, name: "address", nodeType: "ElementaryTypeName", src: "5436:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }, { constant: false, id: 499, mutability: "mutable", name: "expiryTimestamp", nameLocation: "5469:15:1", nodeType: "VariableDeclaration", scope: 515, src: "5462:22:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 498, name: "uint64", nodeType: "ElementaryTypeName", src: "5462:6:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], src: "5435:50:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "external" }, { id: 565, nodeType: "FunctionDefinition", src: "5646:490:1", nodes: [], body: { id: 564, nodeType: "Block", src: "5835:301:1", nodes: [], statements: [{ assignments: [530], declarations: [{ constant: false, id: 530, mutability: "mutable", name: "reservation", nameLocation: "5864:11:1", nodeType: "VariableDeclaration", scope: 564, src: "5845:30:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 529, nodeType: "UserDefinedTypeName", pathNode: { id: 528, name: "Reservation", nameLocations: ["5845:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 63, src: "5845:11:1" }, referencedDeclaration: 63, src: "5845:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 534, initialValue: { baseExpression: { id: 531, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 198, src: "5878:12:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 533, indexExpression: { id: 532, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 518, src: "5891:8:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "5878:22:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "5845:55:1" }, { condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 547, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 541, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 535, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 530, src: "5914:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 536, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5926:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "5914:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 539, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "5943:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 538, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "5935:7:1", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 537, name: "address", nodeType: "ElementaryTypeName", src: "5935:7:1", typeDescriptions: {} } }, id: 540, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5935:10:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "5914:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 546, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 542, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 530, src: "5949:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 543, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5961:7:1", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 62, src: "5949:19:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { expression: { id: 544, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "5971:5:1", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 545, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "5977:9:1", memberName: "timestamp", nodeType: "MemberAccess", src: "5971:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "5949:37:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "5914:72:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 556, nodeType: "IfStatement", src: "5910:156:1", trueBody: { id: 555, nodeType: "Block", src: "5988:78:1", statements: [{ expression: { components: [{ hexValue: "74727565", id: 548, isConstant: false, isLValue: false, isPure: true, kind: "bool", lValueRequested: false, nodeType: "Literal", src: "6010:4:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, value: "true" }, { expression: { id: 549, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 530, src: "6016:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 550, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "6028:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "6016:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { expression: { id: 551, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 530, src: "6035:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 552, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "6047:7:1", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 62, src: "6035:19:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], id: 553, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "6009:46:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_bool_$_t_address_$_t_uint64_$", typeString: "tuple(bool,address,uint64)" } }, functionReturnParameters: 527, id: 554, nodeType: "Return", src: "6002:53:1" }] } }, { expression: { components: [{ hexValue: "66616c7365", id: 557, isConstant: false, isLValue: false, isPure: true, kind: "bool", lValueRequested: false, nodeType: "Literal", src: "6083:5:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, value: "false" }, { expression: { id: 558, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 530, src: "6090:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 559, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "6102:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "6090:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { expression: { id: 560, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 530, src: "6109:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 561, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "6121:7:1", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 62, src: "6109:19:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], id: 562, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "6082:47:1", typeDescriptions: { typeIdentifier: "t_tuple$_t_bool_$_t_address_$_t_uint64_$", typeString: "tuple(bool,address,uint64)" } }, functionReturnParameters: 527, id: 563, nodeType: "Return", src: "6075:54:1" }] }, baseFunctions: [104], documentation: { id: 516, nodeType: "StructuredDocumentation", src: "5616:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "91809994", implemented: true, kind: "function", modifiers: [], name: "isBaseNameReserved", nameLocation: "5655:18:1", overrides: { id: 520, nodeType: "OverrideSpecifier", overrides: [], src: "5738:8:1" }, parameters: { id: 519, nodeType: "ParameterList", parameters: [{ constant: false, id: 518, mutability: "mutable", name: "baseName", nameLocation: "5690:8:1", nodeType: "VariableDeclaration", scope: 565, src: "5674:24:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 517, name: "string", nodeType: "ElementaryTypeName", src: "5674:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "5673:26:1" }, returnParameters: { id: 527, nodeType: "ParameterList", parameters: [{ constant: false, id: 522, mutability: "mutable", name: "isReserved", nameLocation: "5769:10:1", nodeType: "VariableDeclaration", scope: 565, src: "5764:15:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 521, name: "bool", nodeType: "ElementaryTypeName", src: "5764:4:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }, { constant: false, id: 524, mutability: "mutable", name: "reservationOwner", nameLocation: "5789:16:1", nodeType: "VariableDeclaration", scope: 565, src: "5781:24:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 523, name: "address", nodeType: "ElementaryTypeName", src: "5781:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }, { constant: false, id: 526, mutability: "mutable", name: "expiryTimestamp", nameLocation: "5814:15:1", nodeType: "VariableDeclaration", scope: 565, src: "5807:22:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 525, name: "uint64", nodeType: "ElementaryTypeName", src: "5807:6:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], src: "5763:67:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "external" }, { id: 701, nodeType: "FunctionDefinition", src: "6172:1410:1", nodes: [], body: { id: 700, nodeType: "Block", src: "6360:1222:1", nodes: [], statements: [{ expression: { arguments: [{ id: 578, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 568, src: "6395:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, { id: 579, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 570, src: "6401:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }, { typeIdentifier: "t_address", typeString: "address" }], id: 577, name: "_enforceReservationRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 897, src: "6370:24:1", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_string_calldata_ptr_$_t_address_$returns$__$", typeString: "function (string calldata,address) view" } }, id: 580, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6370:43:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 581, nodeType: "ExpressionStatement", src: "6370:43:1" }, { assignments: [584, 586], declarations: [{ constant: false, id: 584, mutability: "mutable", name: "requiredStatus", nameLocation: "6435:14:1", nodeType: "VariableDeclaration", scope: 700, src: "6425:24:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 583, nodeType: "UserDefinedTypeName", pathNode: { id: 582, name: "PopStatus", nameLocations: ["6425:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "6425:9:1" }, referencedDeclaration: 8, src: "6425:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 586, mutability: "mutable", name: "classification", nameLocation: "6465:14:1", nodeType: "VariableDeclaration", scope: 700, src: "6451:28:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 585, name: "string", nodeType: "ElementaryTypeName", src: "6451:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 590, initialValue: { arguments: [{ id: 588, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 568, src: "6496:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 587, name: "classifyName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 375, src: "6483:12:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$8_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 589, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6483:18:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "6424:77:1" }, { assignments: [593], declarations: [{ constant: false, id: 593, mutability: "mutable", name: "userStatus", nameLocation: "6521:10:1", nodeType: "VariableDeclaration", scope: 700, src: "6511:20:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 592, nodeType: "UserDefinedTypeName", pathNode: { id: 591, name: "PopStatus", nameLocations: ["6511:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "6511:9:1" }, referencedDeclaration: 8, src: "6511:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], id: 597, initialValue: { baseExpression: { id: 594, name: "userPopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 192, src: "6534:13:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_enum$_PopStatus_$8_$", typeString: "mapping(address => enum IPopRules.PopStatus)" } }, id: 596, indexExpression: { id: 595, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 570, src: "6548:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "6534:26:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "VariableDeclarationStatement", src: "6511:49:1" }, { expression: { id: 610, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 598, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 575, src: "6571:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 600, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6580:5:1", memberName: "price", nodeType: "MemberAccess", referencedDeclaration: 48, src: "6571:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "Assignment", operator: "=", rightHandSide: { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 604, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 601, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 593, src: "6588:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 602, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "6602:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 603, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6612:8:1", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 4, src: "6602:18:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "6588:32:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseExpression: { hexValue: "30", id: 608, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "6637:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, id: 609, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "Conditional", src: "6588:50:1", trueExpression: { arguments: [{ id: 606, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 568, src: "6629:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 605, name: "price", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 850, src: "6623:5:1", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) view returns (uint256)" } }, id: 607, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6623:11:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "6571:67:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 611, nodeType: "ExpressionStatement", src: "6571:67:1" }, { expression: { id: 616, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 612, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 575, src: "6648:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 614, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6657:6:1", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 51, src: "6648:15:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 615, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 584, src: "6666:14:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "6648:32:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, id: 617, nodeType: "ExpressionStatement", src: "6648:32:1" }, { expression: { id: 622, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 618, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 575, src: "6690:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 620, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6699:10:1", memberName: "userStatus", nodeType: "MemberAccess", referencedDeclaration: 54, src: "6690:19:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 621, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 593, src: "6712:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "6690:32:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, id: 623, nodeType: "ExpressionStatement", src: "6690:32:1" }, { expression: { id: 628, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 624, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 575, src: "6732:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 626, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6741:7:1", memberName: "message", nodeType: "MemberAccess", referencedDeclaration: 56, src: "6732:16:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 627, name: "classification", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 586, src: "6751:14:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, src: "6732:33:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 629, nodeType: "ExpressionStatement", src: "6732:33:1" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 634, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 631, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 584, src: "6784:14:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { expression: { id: 632, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "6802:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 633, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6812:8:1", memberName: "Reserved", nodeType: "MemberAccess", referencedDeclaration: 7, src: "6802:18:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "6784:36:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 636, name: "classification", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 586, src: "6831:14:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_memory_ptr", typeString: "string memory" }], id: 635, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "6822:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 637, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6822:24:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 630, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6776:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 638, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6776:71:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 639, nodeType: "ExpressionStatement", src: "6776:71:1" }, { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 643, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 640, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 584, src: "6862:14:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 641, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "6880:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 642, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6890:7:1", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 6, src: "6880:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "6862:35:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseBody: { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 658, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 655, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 584, src: "7055:14:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 656, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "7073:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 657, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7083:7:1", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 5, src: "7073:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "7055:35:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseBody: { id: 695, nodeType: "Block", src: "7295:255:1", statements: [{ assignments: [676], declarations: [{ constant: false, id: 676, mutability: "mutable", name: "trailingDigits", nameLocation: "7317:14:1", nodeType: "VariableDeclaration", scope: 695, src: "7309:22:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 675, name: "uint256", nodeType: "ElementaryTypeName", src: "7309:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 680, initialValue: { arguments: [{ id: 678, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 568, src: "7355:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 677, name: "_countTrailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 952, src: "7334:20:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) pure returns (uint256)" } }, id: 679, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7334:26:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "7309:51:1" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 689, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 684, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 682, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 676, src: "7399:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { hexValue: "30", id: 683, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "7417:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "7399:19:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 688, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 685, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 593, src: "7422:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { expression: { id: 686, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "7436:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 687, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7446:7:1", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 5, src: "7436:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "7422:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "7399:54:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "506572736f6e686f6f64204c6974652063616e6e6f742072656769737465722062617365206e616d6573", id: 691, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "7480:44:1", typeDescriptions: { typeIdentifier: "t_stringliteral_2196b8237935336420b8c908e66c0f142188bbf835b9e054f1733eca8d6eb502", typeString: 'literal_string "Personhood Lite cannot register base names"' }, value: "Personhood Lite cannot register base names" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_2196b8237935336420b8c908e66c0f142188bbf835b9e054f1733eca8d6eb502", typeString: 'literal_string "Personhood Lite cannot register base names"' }], id: 690, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "7471:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 692, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7471:54:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 681, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "7374:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 693, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7374:165:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 694, nodeType: "ExpressionStatement", src: "7374:165:1" }] }, id: 696, nodeType: "IfStatement", src: "7051:499:1", trueBody: { id: 674, nodeType: "Block", src: "7092:197:1", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 668, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 663, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 660, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 593, src: "7131:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 661, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "7145:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 662, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7155:7:1", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 5, src: "7145:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "7131:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "||", rightExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 667, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 664, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 593, src: "7166:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 665, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "7180:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 666, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7190:7:1", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 6, src: "7180:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "7166:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "7131:66:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "526571756972657320506572736f6e686f6f64204c69746520766572696669636174696f6e", id: 670, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "7224:39:1", typeDescriptions: { typeIdentifier: "t_stringliteral_e61bf021a631c1ed9b03b15bf0ff748ddf6d66e356c6301564a716f80911fdd7", typeString: 'literal_string "Requires Personhood Lite verification"' }, value: "Requires Personhood Lite verification" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_e61bf021a631c1ed9b03b15bf0ff748ddf6d66e356c6301564a716f80911fdd7", typeString: 'literal_string "Requires Personhood Lite verification"' }], id: 669, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "7215:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 671, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7215:49:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 659, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "7106:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 672, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7106:172:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 673, nodeType: "ExpressionStatement", src: "7106:172:1" }] } }, id: 697, nodeType: "IfStatement", src: "6858:692:1", trueBody: { id: 654, nodeType: "Block", src: "6899:146:1", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 648, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 645, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 593, src: "6938:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 646, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "6952:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 647, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6962:7:1", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 6, src: "6952:17:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "6938:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "52657175697265732046756c6c20506572736f6e686f6f6420766572696669636174696f6e", id: 650, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "6980:39:1", typeDescriptions: { typeIdentifier: "t_stringliteral_44ac9a5113b90ab4f99691399c218699dbf43b454930f2cfc95c461314fe2803", typeString: 'literal_string "Requires Full Personhood verification"' }, value: "Requires Full Personhood verification" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_44ac9a5113b90ab4f99691399c218699dbf43b454930f2cfc95c461314fe2803", typeString: 'literal_string "Requires Full Personhood verification"' }], id: 649, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "6971:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 651, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6971:49:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 644, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6913:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 652, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6913:121:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 653, nodeType: "ExpressionStatement", src: "6913:121:1" }] } }, { expression: { id: 698, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 575, src: "7567:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, functionReturnParameters: 576, id: 699, nodeType: "Return", src: "7560:15:1" }] }, baseFunctions: [115], documentation: { id: 566, nodeType: "StructuredDocumentation", src: "6142:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "6bbfce2b", implemented: true, kind: "function", modifiers: [], name: "priceWithCheck", nameLocation: "6181:14:1", overrides: { id: 572, nodeType: "OverrideSpecifier", overrides: [], src: "6299:8:1" }, parameters: { id: 571, nodeType: "ParameterList", parameters: [{ constant: false, id: 568, mutability: "mutable", name: "name", nameLocation: "6221:4:1", nodeType: "VariableDeclaration", scope: 701, src: "6205:20:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 567, name: "string", nodeType: "ElementaryTypeName", src: "6205:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 570, mutability: "mutable", name: "userAddress", nameLocation: "6243:11:1", nodeType: "VariableDeclaration", scope: 701, src: "6235:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 569, name: "address", nodeType: "ElementaryTypeName", src: "6235:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "6195:65:1" }, returnParameters: { id: 576, nodeType: "ParameterList", parameters: [{ constant: false, id: 575, mutability: "mutable", name: "metadata", nameLocation: "6346:8:1", nodeType: "VariableDeclaration", scope: 701, src: "6325:29:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta" }, typeName: { id: 574, nodeType: "UserDefinedTypeName", pathNode: { id: 573, name: "PriceWithMeta", nameLocations: ["6325:13:1"], nodeType: "IdentifierPath", referencedDeclaration: 57, src: "6325:13:1" }, referencedDeclaration: 57, src: "6325:13:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_storage_ptr", typeString: "struct IPopRules.PriceWithMeta" } }, visibility: "internal" }], src: "6324:31:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "external" }, { id: 811, nodeType: "FunctionDefinition", src: "7618:1009:1", nodes: [], body: { id: 810, nodeType: "Block", src: "7809:818:1", nodes: [], statements: [{ assignments: [715, 717], declarations: [{ constant: false, id: 715, mutability: "mutable", name: "requiredStatus", nameLocation: "7830:14:1", nodeType: "VariableDeclaration", scope: 810, src: "7820:24:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 714, nodeType: "UserDefinedTypeName", pathNode: { id: 713, name: "PopStatus", nameLocations: ["7820:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "7820:9:1" }, referencedDeclaration: 8, src: "7820:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 717, mutability: "mutable", name: "classification", nameLocation: "7860:14:1", nodeType: "VariableDeclaration", scope: 810, src: "7846:28:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 716, name: "string", nodeType: "ElementaryTypeName", src: "7846:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 721, initialValue: { arguments: [{ id: 719, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 704, src: "7891:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 718, name: "classifyName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 375, src: "7878:12:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$8_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 720, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7878:18:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$8_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "7819:77:1" }, { assignments: [724], declarations: [{ constant: false, id: 724, mutability: "mutable", name: "userStatus", nameLocation: "7916:10:1", nodeType: "VariableDeclaration", scope: 810, src: "7906:20:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 723, nodeType: "UserDefinedTypeName", pathNode: { id: 722, name: "PopStatus", nameLocations: ["7906:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 8, src: "7906:9:1" }, referencedDeclaration: 8, src: "7906:9:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], id: 728, initialValue: { baseExpression: { id: 725, name: "userPopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 192, src: "7929:13:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_enum$_PopStatus_$8_$", typeString: "mapping(address => enum IPopRules.PopStatus)" } }, id: 727, indexExpression: { id: 726, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 706, src: "7943:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "7929:26:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "VariableDeclarationStatement", src: "7906:49:1" }, { expression: { id: 741, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 729, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "7966:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 731, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "7975:5:1", memberName: "price", nodeType: "MemberAccess", referencedDeclaration: 48, src: "7966:14:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "Assignment", operator: "=", rightHandSide: { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" }, id: 735, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 732, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 724, src: "7983:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 733, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8, src: "7997:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 734, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "8007:8:1", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 4, src: "7997:18:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "7983:32:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseExpression: { hexValue: "30", id: 739, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8032:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, id: 740, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "Conditional", src: "7983:50:1", trueExpression: { arguments: [{ id: 737, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 704, src: "8024:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 736, name: "price", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 850, src: "8018:5:1", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) view returns (uint256)" } }, id: 738, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8018:11:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "7966:67:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 742, nodeType: "ExpressionStatement", src: "7966:67:1" }, { expression: { id: 747, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 743, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "8043:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 745, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8052:6:1", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 51, src: "8043:15:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 746, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 715, src: "8061:14:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "8043:32:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, id: 748, nodeType: "ExpressionStatement", src: "8043:32:1" }, { expression: { id: 753, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 749, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "8085:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 751, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8094:10:1", memberName: "userStatus", nodeType: "MemberAccess", referencedDeclaration: 54, src: "8085:19:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 752, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 724, src: "8107:10:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "8085:32:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, id: 754, nodeType: "ExpressionStatement", src: "8085:32:1" }, { expression: { id: 759, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 755, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "8127:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 757, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8136:7:1", memberName: "message", nodeType: "MemberAccess", referencedDeclaration: 56, src: "8127:16:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 758, name: "classification", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 717, src: "8146:14:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, src: "8127:33:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 760, nodeType: "ExpressionStatement", src: "8127:33:1" }, { assignments: [762], declarations: [{ constant: false, id: 762, mutability: "mutable", name: "baseName", nameLocation: "8185:8:1", nodeType: "VariableDeclaration", scope: 810, src: "8171:22:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 761, name: "string", nodeType: "ElementaryTypeName", src: "8171:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 766, initialValue: { arguments: [{ id: 764, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 704, src: "8209:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 763, name: "_stripDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1029, src: "8196:12:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (string memory)" } }, id: 765, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8196:18:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "VariableDeclarationStatement", src: "8171:43:1" }, { assignments: [769], declarations: [{ constant: false, id: 769, mutability: "mutable", name: "reservation", nameLocation: "8243:11:1", nodeType: "VariableDeclaration", scope: 810, src: "8224:30:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 768, nodeType: "UserDefinedTypeName", pathNode: { id: 767, name: "Reservation", nameLocations: ["8224:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 63, src: "8224:11:1" }, referencedDeclaration: 63, src: "8224:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 773, initialValue: { baseExpression: { id: 770, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 198, src: "8257:12:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 772, indexExpression: { id: 771, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 762, src: "8270:8:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "8257:22:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "8224:55:1" }, { condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 791, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 786, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 780, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 774, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 769, src: "8307:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 775, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "8319:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "8307:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 778, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8336:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 777, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "8328:7:1", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 776, name: "address", nodeType: "ElementaryTypeName", src: "8328:7:1", typeDescriptions: {} } }, id: 779, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8328:10:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "8307:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 785, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 781, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 769, src: "8342:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 782, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "8354:7:1", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 62, src: "8342:19:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { expression: { id: 783, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "8364:5:1", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 784, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8370:9:1", memberName: "timestamp", nodeType: "MemberAccess", src: "8364:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "8342:37:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "8307:72:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 790, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 787, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 769, src: "8399:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 788, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "8411:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "8399:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { id: 789, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 706, src: "8420:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "8399:32:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "8307:124:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 807, nodeType: "IfStatement", src: "8290:305:1", trueBody: { id: 806, nodeType: "Block", src: "8442:153:1", statements: [{ expression: { id: 796, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 792, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "8456:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 794, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8465:7:1", memberName: "message", nodeType: "MemberAccess", referencedDeclaration: 56, src: "8456:16:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { hexValue: "42617365206e616d6520726573657276656420666f72206f726967696e616c204c6974652072656769737472616e74", id: 795, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "8475:49:1", typeDescriptions: { typeIdentifier: "t_stringliteral_79a01a294a67387a7edaa4823021914cdb681481f514745448d051863f0b7823", typeString: 'literal_string "Base name reserved for original Lite registrant"' }, value: "Base name reserved for original Lite registrant" }, src: "8456:68:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 797, nodeType: "ExpressionStatement", src: "8456:68:1" }, { expression: { id: 804, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 798, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "8538:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 800, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8547:6:1", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 51, src: "8538:15:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { expression: { expression: { id: 801, name: "IPopRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 156, src: "8556:9:1", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IPopRules_$156_$", typeString: "type(contract IPopRules)" } }, id: 802, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8566:9:1", memberName: "PopStatus", nodeType: "MemberAccess", referencedDeclaration: 8, src: "8556:19:1", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$8_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 803, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "8576:8:1", memberName: "Reserved", nodeType: "MemberAccess", referencedDeclaration: 7, src: "8556:28:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, src: "8538:46:1", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$8", typeString: "enum IPopRules.PopStatus" } }, id: 805, nodeType: "ExpressionStatement", src: "8538:46:1" }] } }, { expression: { id: 808, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 711, src: "8612:8:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, functionReturnParameters: 712, id: 809, nodeType: "Return", src: "8605:15:1" }] }, baseFunctions: [126], documentation: { id: 702, nodeType: "StructuredDocumentation", src: "7588:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "dcd62573", implemented: true, kind: "function", modifiers: [], name: "priceWithoutCheck", nameLocation: "7627:17:1", overrides: { id: 708, nodeType: "OverrideSpecifier", overrides: [], src: "7748:8:1" }, parameters: { id: 707, nodeType: "ParameterList", parameters: [{ constant: false, id: 704, mutability: "mutable", name: "name", nameLocation: "7670:4:1", nodeType: "VariableDeclaration", scope: 811, src: "7654:20:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 703, name: "string", nodeType: "ElementaryTypeName", src: "7654:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 706, mutability: "mutable", name: "userAddress", nameLocation: "7692:11:1", nodeType: "VariableDeclaration", scope: 811, src: "7684:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 705, name: "address", nodeType: "ElementaryTypeName", src: "7684:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "7644:65:1" }, returnParameters: { id: 712, nodeType: "ParameterList", parameters: [{ constant: false, id: 711, mutability: "mutable", name: "metadata", nameLocation: "7795:8:1", nodeType: "VariableDeclaration", scope: 811, src: "7774:29:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_memory_ptr", typeString: "struct IPopRules.PriceWithMeta" }, typeName: { id: 710, nodeType: "UserDefinedTypeName", pathNode: { id: 709, name: "PriceWithMeta", nameLocations: ["7774:13:1"], nodeType: "IdentifierPath", referencedDeclaration: 57, src: "7774:13:1" }, referencedDeclaration: 57, src: "7774:13:1", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$57_storage_ptr", typeString: "struct IPopRules.PriceWithMeta" } }, visibility: "internal" }], src: "7773:31:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "external" }, { id: 850, nodeType: "FunctionDefinition", src: "8663:321:1", nodes: [], body: { id: 849, nodeType: "Block", src: "8739:245:1", nodes: [], statements: [{ assignments: [821], declarations: [{ constant: false, id: 821, mutability: "mutable", name: "namelength", nameLocation: "8757:10:1", nodeType: "VariableDeclaration", scope: 849, src: "8749:18:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 820, name: "uint256", nodeType: "ElementaryTypeName", src: "8749:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 825, initialValue: { arguments: [], expression: { argumentTypes: [], expression: { id: 822, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 814, src: "8770:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, id: 823, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8775:6:1", memberName: "strlen", nodeType: "MemberAccess", referencedDeclaration: 6237, src: "8770:11:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", typeString: "function (string memory) pure returns (uint256)" } }, id: 824, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8770:13:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "8749:34:1" }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 828, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 826, name: "namelength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 821, src: "8797:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<", rightExpression: { hexValue: "39", id: 827, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8810:1:1", typeDescriptions: { typeIdentifier: "t_rational_9_by_1", typeString: "int_const 9" }, value: "9" }, src: "8797:14:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 832, nodeType: "IfStatement", src: "8793:53:1", trueBody: { id: 831, nodeType: "Block", src: "8813:33:1", statements: [{ expression: { hexValue: "30", id: 829, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8834:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, functionReturnParameters: 819, id: 830, nodeType: "Return", src: "8827:8:1" }] } }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 835, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 833, name: "namelength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 821, src: "8860:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "3135", id: 834, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8874:2:1", typeDescriptions: { typeIdentifier: "t_rational_15_by_1", typeString: "int_const 15" }, value: "15" }, src: "8860:16:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 841, nodeType: "IfStatement", src: "8856:71:1", trueBody: { id: 840, nodeType: "Block", src: "8878:49:1", statements: [{ expression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 838, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 836, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 186, src: "8899:13:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "/", rightExpression: { hexValue: "32", id: 837, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8915:1:1", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "8899:17:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 819, id: 839, nodeType: "Return", src: "8892:24:1" }] } }, { expression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 847, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 842, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 186, src: "8944:13:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "*", rightExpression: { components: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 845, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { hexValue: "3135", id: 843, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "8961:2:1", typeDescriptions: { typeIdentifier: "t_rational_15_by_1", typeString: "int_const 15" }, value: "15" }, nodeType: "BinaryOperation", operator: "-", rightExpression: { id: 844, name: "namelength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 821, src: "8966:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "8961:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], id: 846, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "8960:17:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "8944:33:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 819, id: 848, nodeType: "Return", src: "8937:40:1" }] }, baseFunctions: [155], documentation: { id: 812, nodeType: "StructuredDocumentation", src: "8633:25:1", text: "@inheritdoc IPopRules" }, functionSelector: "fe2c6198", implemented: true, kind: "function", modifiers: [], name: "price", nameLocation: "8672:5:1", overrides: { id: 816, nodeType: "OverrideSpecifier", overrides: [], src: "8712:8:1" }, parameters: { id: 815, nodeType: "ParameterList", parameters: [{ constant: false, id: 814, mutability: "mutable", name: "name", nameLocation: "8694:4:1", nodeType: "VariableDeclaration", scope: 850, src: "8678:20:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 813, name: "string", nodeType: "ElementaryTypeName", src: "8678:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "8677:22:1" }, returnParameters: { id: 819, nodeType: "ParameterList", parameters: [{ constant: false, id: 818, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 850, src: "8730:7:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 817, name: "uint256", nodeType: "ElementaryTypeName", src: "8730:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "8729:9:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "public" }, { id: 897, nodeType: "FunctionDefinition", src: "9120:477:1", nodes: [], body: { id: 896, nodeType: "Block", src: "9211:386:1", nodes: [], statements: [{ assignments: [859], declarations: [{ constant: false, id: 859, mutability: "mutable", name: "baseName", nameLocation: "9235:8:1", nodeType: "VariableDeclaration", scope: 896, src: "9221:22:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 858, name: "string", nodeType: "ElementaryTypeName", src: "9221:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 863, initialValue: { arguments: [{ id: 861, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 853, src: "9259:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 860, name: "_stripDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1029, src: "9246:12:1", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (string memory)" } }, id: 862, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9246:18:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "VariableDeclarationStatement", src: "9221:43:1" }, { assignments: [866], declarations: [{ constant: false, id: 866, mutability: "mutable", name: "reservation", nameLocation: "9293:11:1", nodeType: "VariableDeclaration", scope: 896, src: "9274:30:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 865, nodeType: "UserDefinedTypeName", pathNode: { id: 864, name: "Reservation", nameLocations: ["9274:11:1"], nodeType: "IdentifierPath", referencedDeclaration: 63, src: "9274:11:1" }, referencedDeclaration: 63, src: "9274:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 870, initialValue: { baseExpression: { id: 867, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 198, src: "9307:12:1", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$63_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 869, indexExpression: { id: 868, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 859, src: "9320:8:1", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "9307:22:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "9274:55:1" }, { condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 883, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 877, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 871, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 866, src: "9344:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 872, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "9356:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "9344:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 875, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "9373:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 874, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "9365:7:1", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 873, name: "address", nodeType: "ElementaryTypeName", src: "9365:7:1", typeDescriptions: {} } }, id: 876, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9365:10:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "9344:31:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 882, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 878, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 866, src: "9379:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 879, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "9391:7:1", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 62, src: "9379:19:1", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { expression: { id: 880, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "9401:5:1", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 881, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "9407:9:1", memberName: "timestamp", nodeType: "MemberAccess", src: "9401:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "9379:37:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "9344:72:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 895, nodeType: "IfStatement", src: "9340:251:1", trueBody: { id: 894, nodeType: "Block", src: "9418:173:1", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 888, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 885, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 866, src: "9457:11:1", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$63_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 886, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "9469:5:1", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 60, src: "9457:17:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { id: 887, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 855, src: "9478:11:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "9457:32:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "42617365206e616d6520726573657276656420666f72206f726967696e616c204c6974652072656769737472616e74", id: 890, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "9516:49:1", typeDescriptions: { typeIdentifier: "t_stringliteral_79a01a294a67387a7edaa4823021914cdb681481f514745448d051863f0b7823", typeString: 'literal_string "Base name reserved for original Lite registrant"' }, value: "Base name reserved for original Lite registrant" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_79a01a294a67387a7edaa4823021914cdb681481f514745448d051863f0b7823", typeString: 'literal_string "Base name reserved for original Lite registrant"' }], id: 889, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 37, src: "9507:8:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 891, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9507:59:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 884, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "9432:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 892, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9432:148:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 893, nodeType: "ExpressionStatement", src: "9432:148:1" }] } }] }, documentation: { id: 851, nodeType: "StructuredDocumentation", src: "8990:125:1", text: `@notice Enforces base name reservation rules
|
|
2826
|
-
@param
|
|
2827
|
-
@param userAddress Registering user` }, implemented: true, kind: "function", modifiers: [], name: "_enforceReservationRules", nameLocation: "9129:24:1", parameters: { id: 856, nodeType: "ParameterList", parameters: [{ constant: false, id: 853, mutability: "mutable", name: "name", nameLocation: "9170:4:1", nodeType: "VariableDeclaration", scope: 897, src: "9154:20:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 852, name: "string", nodeType: "ElementaryTypeName", src: "9154:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 855, mutability: "mutable", name: "userAddress", nameLocation: "9184:11:1", nodeType: "VariableDeclaration", scope: 897, src: "9176:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 854, name: "address", nodeType: "ElementaryTypeName", src: "9176:7:1", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "9153:43:1" }, returnParameters: { id: 857, nodeType: "ParameterList", parameters: [], src: "9211:0:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "internal" }, { id: 952, nodeType: "FunctionDefinition", src: "9746:457:1", nodes: [], body: { id: 951, nodeType: "Block", src: "9870:333:1", nodes: [], statements: [{ assignments: [906], declarations: [{ constant: false, id: 906, mutability: "mutable", name: "bytesLabel", nameLocation: "9895:10:1", nodeType: "VariableDeclaration", scope: 951, src: "9880:25:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes" }, typeName: { id: 905, name: "bytes", nodeType: "ElementaryTypeName", src: "9880:5:1", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 911, initialValue: { arguments: [{ id: 909, name: "label", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 900, src: "9914:5:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 908, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "9908:5:1", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 907, name: "bytes", nodeType: "ElementaryTypeName", src: "9908:5:1", typeDescriptions: {} } }, id: 910, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9908:12:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, nodeType: "VariableDeclarationStatement", src: "9880:40:1" }, { assignments: [913], declarations: [{ constant: false, id: 913, mutability: "mutable", name: "stringlength", nameLocation: "9938:12:1", nodeType: "VariableDeclaration", scope: 951, src: "9930:20:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 912, name: "uint256", nodeType: "ElementaryTypeName", src: "9930:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 916, initialValue: { expression: { id: 914, name: "bytesLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 906, src: "9953:10:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 915, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "9964:6:1", memberName: "length", nodeType: "MemberAccess", src: "9953:17:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "9930:40:1" }, { body: { id: 949, nodeType: "Block", src: "10024:173:1", statements: [{ condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 941, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 933, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 927, name: "bytesLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 906, src: "10042:10:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 931, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 930, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 928, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 918, src: "10053:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 929, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10057:1:1", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "10053:5:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "10042:17:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "30783330", id: 932, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10063:4:1", typeDescriptions: { typeIdentifier: "t_rational_48_by_1", typeString: "int_const 48" }, value: "0x30" }, src: "10042:25:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 940, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 934, name: "bytesLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 906, src: "10071:10:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 938, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 937, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 935, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 918, src: "10082:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 936, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10086:1:1", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "10082:5:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "10071:17:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "30783339", id: 939, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10092:4:1", typeDescriptions: { typeIdentifier: "t_rational_57_by_1", typeString: "int_const 57" }, value: "0x39" }, src: "10071:25:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "10042:54:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseBody: { id: 947, nodeType: "Block", src: "10149:38:1", statements: [{ id: 946, nodeType: "Break", src: "10167:5:1" }] }, id: 948, nodeType: "IfStatement", src: "10038:149:1", trueBody: { id: 945, nodeType: "Block", src: "10098:45:1", statements: [{ expression: { id: 943, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "++", prefix: false, src: "10116:12:1", subExpression: { id: 942, name: "digitCount", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 903, src: "10116:10:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 944, nodeType: "ExpressionStatement", src: "10116:12:1" }] } }] }, condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 923, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 921, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 918, src: "10012:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { hexValue: "30", id: 922, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10016:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "10012:5:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 950, initializationExpression: { assignments: [918], declarations: [{ constant: false, id: 918, mutability: "mutable", name: "i", nameLocation: "9994:1:1", nodeType: "VariableDeclaration", scope: 950, src: "9986:9:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 917, name: "uint256", nodeType: "ElementaryTypeName", src: "9986:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 920, initialValue: { id: 919, name: "stringlength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 913, src: "9998:12:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "9986:24:1" }, isSimpleCounterLoop: false, loopExpression: { expression: { id: 925, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "--", prefix: false, src: "10019:3:1", subExpression: { id: 924, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 918, src: "10019:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 926, nodeType: "ExpressionStatement", src: "10019:3:1" }, nodeType: "ForStatement", src: "9981:216:1" }] }, documentation: { id: 898, nodeType: "StructuredDocumentation", src: "9603:138:1", text: `@notice Counts trailing digits in a string
|
|
2828
|
-
@param label String to analyze
|
|
2829
|
-
@return digitCount Number of trailing digits` }, implemented: true, kind: "function", modifiers: [], name: "_countTrailingDigits", nameLocation: "9755:20:1", parameters: { id: 901, nodeType: "ParameterList", parameters: [{ constant: false, id: 900, mutability: "mutable", name: "label", nameLocation: "9792:5:1", nodeType: "VariableDeclaration", scope: 952, src: "9776:21:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 899, name: "string", nodeType: "ElementaryTypeName", src: "9776:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "9775:23:1" }, returnParameters: { id: 904, nodeType: "ParameterList", parameters: [{ constant: false, id: 903, mutability: "mutable", name: "digitCount", nameLocation: "9854:10:1", nodeType: "VariableDeclaration", scope: 952, src: "9846:18:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 902, name: "uint256", nodeType: "ElementaryTypeName", src: "9846:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "9845:20:1" }, scope: 1087, stateMutability: "pure", virtual: false, visibility: "internal" }, { id: 1029, nodeType: "FunctionDefinition", src: "10347:567:1", nodes: [], body: { id: 1028, nodeType: "Block", src: "10438:476:1", nodes: [], statements: [{ assignments: [961], declarations: [{ constant: false, id: 961, mutability: "mutable", name: "bytesName", nameLocation: "10463:9:1", nodeType: "VariableDeclaration", scope: 1028, src: "10448:24:1", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes" }, typeName: { id: 960, name: "bytes", nodeType: "ElementaryTypeName", src: "10448:5:1", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 966, initialValue: { arguments: [{ id: 964, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 955, src: "10481:4:1", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 963, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "10475:5:1", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 962, name: "bytes", nodeType: "ElementaryTypeName", src: "10475:5:1", typeDescriptions: {} } }, id: 965, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "10475:11:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, nodeType: "VariableDeclarationStatement", src: "10448:38:1" }, { assignments: [968], declarations: [{ constant: false, id: 968, mutability: "mutable", name: "endPosition", nameLocation: "10504:11:1", nodeType: "VariableDeclaration", scope: 1028, src: "10496:19:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 967, name: "uint256", nodeType: "ElementaryTypeName", src: "10496:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 971, initialValue: { expression: { id: 969, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 961, src: "10518:9:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 970, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "10528:6:1", memberName: "length", nodeType: "MemberAccess", src: "10518:16:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "10496:38:1" }, { body: { id: 994, nodeType: "Block", src: "10683:38:1", statements: [{ expression: { id: 992, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "--", prefix: false, src: "10697:13:1", subExpression: { id: 991, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 968, src: "10697:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 993, nodeType: "ExpressionStatement", src: "10697:13:1" }] }, condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 990, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 982, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 974, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 972, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 968, src: "10565:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { hexValue: "30", id: 973, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10579:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "10565:15:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 981, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 975, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 961, src: "10584:9:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 979, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 978, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 976, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 968, src: "10594:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 977, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10608:1:1", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "10594:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "10584:26:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "30783330", id: 980, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10614:4:1", typeDescriptions: { typeIdentifier: "t_rational_48_by_1", typeString: "int_const 48" }, value: "0x30" }, src: "10584:34:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "10565:53:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 989, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 983, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 961, src: "10638:9:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 987, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 986, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 984, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 968, src: "10648:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 985, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10662:1:1", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "10648:15:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "10638:26:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "30783339", id: 988, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10668:4:1", typeDescriptions: { typeIdentifier: "t_rational_57_by_1", typeString: "int_const 57" }, value: "0x39" }, src: "10638:34:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "10565:107:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 995, nodeType: "WhileStatement", src: "10545:176:1" }, { assignments: [997], declarations: [{ constant: false, id: 997, mutability: "mutable", name: "output", nameLocation: "10744:6:1", nodeType: "VariableDeclaration", scope: 1028, src: "10731:19:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes" }, typeName: { id: 996, name: "bytes", nodeType: "ElementaryTypeName", src: "10731:5:1", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 1002, initialValue: { arguments: [{ id: 1000, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 968, src: "10763:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 999, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "NewExpression", src: "10753:9:1", typeDescriptions: { typeIdentifier: "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", typeString: "function (uint256) pure returns (bytes memory)" }, typeName: { id: 998, name: "bytes", nodeType: "ElementaryTypeName", src: "10757:5:1", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } } }, id: 1001, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "10753:22:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }, nodeType: "VariableDeclarationStatement", src: "10731:44:1" }, { body: { id: 1021, nodeType: "Block", src: "10827:49:1", statements: [{ expression: { id: 1019, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 1013, name: "output", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 997, src: "10841:6:1", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }, id: 1015, indexExpression: { id: 1014, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1004, src: "10848:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "10841:9:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "Assignment", operator: "=", rightHandSide: { baseExpression: { id: 1016, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 961, src: "10853:9:1", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 1018, indexExpression: { id: 1017, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1004, src: "10863:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "10853:12:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, src: "10841:24:1", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, id: 1020, nodeType: "ExpressionStatement", src: "10841:24:1" }] }, condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 1009, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 1007, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1004, src: "10805:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<", rightExpression: { id: 1008, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 968, src: "10809:11:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "10805:15:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 1022, initializationExpression: { assignments: [1004], declarations: [{ constant: false, id: 1004, mutability: "mutable", name: "i", nameLocation: "10798:1:1", nodeType: "VariableDeclaration", scope: 1022, src: "10790:9:1", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 1003, name: "uint256", nodeType: "ElementaryTypeName", src: "10790:7:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 1006, initialValue: { hexValue: "30", id: 1005, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10802:1:1", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, nodeType: "VariableDeclarationStatement", src: "10790:13:1" }, isSimpleCounterLoop: true, loopExpression: { expression: { id: 1011, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "++", prefix: false, src: "10822:3:1", subExpression: { id: 1010, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 1004, src: "10822:1:1", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 1012, nodeType: "ExpressionStatement", src: "10822:3:1" }, nodeType: "ForStatement", src: "10785:91:1" }, { expression: { arguments: [{ id: 1025, name: "output", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 997, src: "10900:6:1", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" }], id: 1024, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "10893:6:1", typeDescriptions: { typeIdentifier: "t_type$_t_string_storage_ptr_$", typeString: "type(string storage pointer)" }, typeName: { id: 1023, name: "string", nodeType: "ElementaryTypeName", src: "10893:6:1", typeDescriptions: {} } }, id: 1026, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "10893:14:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, functionReturnParameters: 959, id: 1027, nodeType: "Return", src: "10886:21:1" }] }, documentation: { id: 953, nodeType: "StructuredDocumentation", src: "10209:133:1", text: `@notice Strips trailing digits from a name
|
|
2830
|
-
@param name Domain label
|
|
2831
|
-
@
|
|
2832
|
-
@return versionString Current version string` }, functionSelector: "54fd4d50", implemented: true, kind: "function", modifiers: [], name: "version", nameLocation: "11450:7:1", parameters: { id: 1063, nodeType: "ParameterList", parameters: [], src: "11457:2:1" }, returnParameters: { id: 1066, nodeType: "ParameterList", parameters: [{ constant: false, id: 1065, mutability: "mutable", name: "versionString", nameLocation: "11505:13:1", nodeType: "VariableDeclaration", scope: 1072, src: "11491:27:1", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 1064, name: "string", nodeType: "ElementaryTypeName", src: "11491:6:1", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "11490:29:1" }, scope: 1087, stateMutability: "pure", virtual: true, visibility: "external" }, { id: 1086, nodeType: "FunctionDefinition", src: "11686:115:1", nodes: [], body: { id: 1085, nodeType: "Block", src: "11725:76:1", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 1080, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 1077, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "11743:3:1", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 1078, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "11747:6:1", memberName: "sender", nodeType: "MemberAccess", src: "11743:10:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { id: 1079, name: "dotRegistryController", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 209, src: "11757:21:1", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "11743:35:1", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [], expression: { argumentTypes: [], id: 1081, name: "NotRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 45, src: "11780:11:1", typeDescriptions: { typeIdentifier: "t_function_error_pure$__$returns$_t_error_$", typeString: "function () pure returns (error)" } }, id: 1082, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11780:13:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 1076, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "11735:7:1", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 1083, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11735:59:1", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 1084, nodeType: "ExpressionStatement", src: "11735:59:1" }] }, documentation: { id: 1073, nodeType: "StructuredDocumentation", src: "11566:115:1", text: `@notice Ensures the caller is the authorized registry controller
|
|
2833
|
-
@dev Done this way to reduce code size` }, implemented: true, kind: "function", modifiers: [], name: "_onlyRegistry", nameLocation: "11695:13:1", parameters: { id: 1074, nodeType: "ParameterList", parameters: [], src: "11708:2:1" }, returnParameters: { id: 1075, nodeType: "ParameterList", parameters: [], src: "11725:0:1" }, scope: 1087, stateMutability: "view", virtual: false, visibility: "internal" }], abstract: false, baseContracts: [{ baseName: { id: 172, name: "Initializable", nameLocations: ["760:13:1"], nodeType: "IdentifierPath", referencedDeclaration: 44614, src: "760:13:1" }, id: 173, nodeType: "InheritanceSpecifier", src: "760:13:1" }, { baseName: { id: 174, name: "UUPSUpgradeable", nameLocations: ["779:15:1"], nodeType: "IdentifierPath", referencedDeclaration: 44780, src: "779:15:1" }, id: 175, nodeType: "InheritanceSpecifier", src: "779:15:1" }, { baseName: { id: 176, name: "OwnableUpgradeable", nameLocations: ["800:18:1"], nodeType: "IdentifierPath", referencedDeclaration: 42148, src: "800:18:1" }, id: 177, nodeType: "InheritanceSpecifier", src: "800:18:1" }, { baseName: { id: 178, name: "ERC165Upgradeable", nameLocations: ["824:17:1"], nodeType: "IdentifierPath", referencedDeclaration: 43322, src: "824:17:1" }, id: 179, nodeType: "InheritanceSpecifier", src: "824:17:1" }, { baseName: { id: 180, name: "IPopRules", nameLocations: ["847:9:1"], nodeType: "IdentifierPath", referencedDeclaration: 156, src: "847:9:1" }, id: 181, nodeType: "InheritanceSpecifier", src: "847:9:1" }], canonicalName: "PopRules", contractDependencies: [], contractKind: "contract", documentation: { id: 171, nodeType: "StructuredDocumentation", src: "581:154:1", text: `@title PopRules
|
|
2834
|
-
@notice Implements DotNS pricing with PoP-tier validation and base-name reservations
|
|
2835
|
-
@custom:security-contact admin@parity.io` }, fullyImplemented: true, linearizedBaseContracts: [
|
|
2836
|
-
id:
|
|
2816
|
+
abi: [{ type: "constructor", inputs: [], stateMutability: "nonpayable" }, { type: "function", name: "MAX_RESERVATION_TIME", inputs: [], outputs: [{ name: "", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "UPGRADE_INTERFACE_VERSION", inputs: [], outputs: [{ name: "", type: "string", internalType: "string" }], stateMutability: "view" }, { type: "function", name: "classifyName", inputs: [{ name: "name", type: "string", internalType: "string" }], outputs: [{ name: "requirement", type: "uint8", internalType: "enum IPopRules.PopStatus" }, { name: "message", type: "string", internalType: "string" }], stateMutability: "pure" }, { type: "function", name: "getBaseNameReservation", inputs: [{ name: "baseName", type: "string", internalType: "string" }], outputs: [{ name: "reservationOwner", type: "address", internalType: "address" }, { name: "expiryTimestamp", type: "uint64", internalType: "uint64" }], stateMutability: "view" }, { type: "function", name: "initialize", inputs: [{ name: "_startingPrice", type: "uint256", internalType: "uint256" }, { name: "registry", type: "address", internalType: "contract IDotnsProtocolRegistry" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "isBaseName", inputs: [{ name: "baseName", type: "string", internalType: "string" }], outputs: [{ name: "isBase", type: "bool", internalType: "bool" }], stateMutability: "pure" }, { type: "function", name: "isBaseNameReserved", inputs: [{ name: "baseName", type: "string", internalType: "string" }], outputs: [{ name: "isReserved", type: "bool", internalType: "bool" }, { name: "reservationOwner", type: "address", internalType: "address" }, { name: "expiryTimestamp", type: "uint64", internalType: "uint64" }], stateMutability: "view" }, { type: "function", name: "owner", inputs: [], outputs: [{ name: "", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "price", inputs: [{ name: "name", type: "string", internalType: "string" }], outputs: [{ name: "", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "priceWithCheck", inputs: [{ name: "name", type: "string", internalType: "string" }, { name: "userAddress", type: "address", internalType: "address" }], outputs: [{ name: "metadata", type: "tuple", internalType: "struct IPopRules.PriceWithMeta", components: [{ name: "price", type: "uint256", internalType: "uint256" }, { name: "status", type: "uint8", internalType: "enum IPopRules.PopStatus" }, { name: "userStatus", type: "uint8", internalType: "enum IPopRules.PopStatus" }, { name: "message", type: "string", internalType: "string" }] }], stateMutability: "view" }, { type: "function", name: "priceWithoutCheck", inputs: [{ name: "name", type: "string", internalType: "string" }, { name: "userAddress", type: "address", internalType: "address" }], outputs: [{ name: "metadata", type: "tuple", internalType: "struct IPopRules.PriceWithMeta", components: [{ name: "price", type: "uint256", internalType: "uint256" }, { name: "status", type: "uint8", internalType: "enum IPopRules.PopStatus" }, { name: "userStatus", type: "uint8", internalType: "enum IPopRules.PopStatus" }, { name: "message", type: "string", internalType: "string" }] }], stateMutability: "view" }, { type: "function", name: "protocolRegistry", inputs: [], outputs: [{ name: "", type: "address", internalType: "contract IDotnsProtocolRegistry" }], stateMutability: "view" }, { type: "function", name: "proxiableUUID", inputs: [], outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], stateMutability: "view" }, { type: "function", name: "reachFee", inputs: [{ name: "name", type: "string", internalType: "string" }, { name: "account", type: "address", internalType: "address" }], outputs: [{ name: "fee", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "releaseBaseName", inputs: [{ name: "baseName", type: "string", internalType: "string" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "renounceOwnership", inputs: [], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "reservations", inputs: [{ name: "baseName", type: "string", internalType: "string" }], outputs: [{ name: "owner", type: "address", internalType: "address" }, { name: "expires", type: "uint64", internalType: "uint64" }, { name: "controller", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "reserveBaseName", inputs: [{ name: "name", type: "string", internalType: "string" }, { name: "userAddress", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "reserveBaseNameForPop", inputs: [{ name: "baseName", type: "string", internalType: "string" }, { name: "userAddress", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "startingPrice", inputs: [], outputs: [{ name: "", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "supportsInterface", inputs: [{ name: "interfaceId", type: "bytes4", internalType: "bytes4" }], outputs: [{ name: "supported", type: "bool", internalType: "bool" }], stateMutability: "view" }, { type: "function", name: "transferOwnership", inputs: [{ name: "newOwner", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "updateStartingPrice", inputs: [{ name: "newStartingPrice", type: "uint256", internalType: "uint256" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "upgradeToAndCall", inputs: [{ name: "newImplementation", type: "address", internalType: "address" }, { name: "data", type: "bytes", internalType: "bytes" }], outputs: [], stateMutability: "payable" }, { type: "function", name: "version", inputs: [], outputs: [{ name: "versionString", type: "string", internalType: "string" }], stateMutability: "pure" }, { type: "event", name: "BaseNameReleased", inputs: [{ name: "baseName", type: "string", indexed: true, internalType: "string" }], anonymous: false }, { type: "event", name: "BaseNameReserved", inputs: [{ name: "baseName", type: "string", indexed: true, internalType: "string" }, { name: "owner", type: "address", indexed: true, internalType: "address" }, { name: "expires", type: "uint64", indexed: false, internalType: "uint64" }], anonymous: false }, { type: "event", name: "Initialized", inputs: [{ name: "version", type: "uint64", indexed: false, internalType: "uint64" }], 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: "StartingPriceUpdated", inputs: [{ name: "oldPrice", type: "uint256", indexed: false, internalType: "uint256" }, { name: "newPrice", type: "uint256", indexed: false, internalType: "uint256" }], anonymous: false }, { type: "event", name: "Upgraded", inputs: [{ name: "implementation", type: "address", indexed: true, internalType: "address" }], anonymous: false }, { type: "error", name: "AddressEmptyCode", inputs: [{ name: "target", type: "address", internalType: "address" }] }, { type: "error", name: "ERC1967InvalidImplementation", inputs: [{ name: "implementation", type: "address", internalType: "address" }] }, { type: "error", name: "ERC1967NonPayable", inputs: [] }, { type: "error", name: "FailedCall", inputs: [] }, { type: "error", name: "InvalidInitialization", inputs: [] }, { type: "error", name: "NotInitializing", inputs: [] }, { type: "error", name: "NotRegistry", inputs: [] }, { type: "error", name: "OwnableInvalidOwner", inputs: [{ name: "owner", type: "address", internalType: "address" }] }, { type: "error", name: "OwnableUnauthorizedAccount", inputs: [{ name: "account", type: "address", internalType: "address" }] }, { type: "error", name: "PopError", inputs: [{ name: "reason", type: "string", internalType: "string" }] }, { type: "error", name: "UUPSUnauthorizedCallContext", inputs: [] }, { type: "error", name: "UUPSUnsupportedProxiableUUID", inputs: [{ name: "slot", type: "bytes32", internalType: "bytes32" }] }],
|
|
2817
|
+
bytecode: { object: "0x60a080604052346100c257306080525f51602061201e5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b604051611f5790816100c78239608051818181610cfe0152610da10152f35b6001600160401b0319166001600160401b039081175f51602061201e5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611364575080632b0282ae146111be5780633017fa331461115657806335696fa714610f36578063453fa0f414610f1d5780634f1ef28614610d5257806352d1902d14610cec57806354fd4d5014610ca557806368e344e914610c885780636bbfce2b14610a39578063715018a6146109d25780637656419f146109aa5780638ac7f0f51461090d5780638da5cb5b146108d95780639180999414610828578063ad3cb1cc146107e1578063b4956ade14610793578063c5c95048146106ff578063d6fbf202146106e3578063da35a26f1461051d578063dbc13dda146103c5578063dcd6257314610248578063f2fde38b1461021d578063f6d3dec2146101805763fe2c61981461012f575f80fd5b3461017c57602036600319011261017c576004356001600160401b03811161017c5761017461016f61016760209336906004016113b7565b80929161177b565b611c08565b604051908152f35b5f80fd5b3461017c57602036600319011261017c5760043561019c611c44565b80156101d7577f0747cfd0d41ccd9050f767151ed72d19992387e6295320adbcb8bd37b84eec3f60405f548151908152836020820152a15f55005b6040516305bf8fb360e31b815260206004820152601c60248201527f5072696365206d7573742062652067726561746572207468616e2030000000006044820152606490fd5b3461017c57602036600319011261017c576102466102396113e4565b610241611c44565b6115ec565b005b3461017c57610256366113fa565b6102619291926115ac565b9161026c848261177b565b6102768482611856565b92909161028282611aec565b60048110156103b157610337966102d5926102c46102d09380155f146103ab576102ab84611c08565b8a526102bb60208b0198896115e0565b60408a016115e0565b606088019687526119f6565b611557565b61031b6040516102e48161146d565b82546001600160a01b0380821680845260a09290921c6001600160401b0316602084015260019094015490931660408201526117e2565b9182610397575b505061033b575b50506040519182918261150e565b0390f35b60405160039261034c60608361149c565b602f82527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060208301526e131a5d19481c9959da5cdd1c985b9d608a1b604083015252528280610329565b6001600160a01b0316141590508580610322565b5f6102ab565b634e487b7160e01b5f52602160045260245ffd5b3461017c57602036600319011261017c576004356001600160401b03811161017c576103f59036906004016113b7565b906103fe61165d565b610408828261177b565b6040518282823760208184810160018152030190206104646040519161042d8361146d565b80546001600160a01b03808216855260a09190911c6001600160401b031660208501526001909101541660408301819052916117e2565b6104bd575b505f60016040518484823760208186810184815203019020828155015581604051928392833781015f81520390207f6ec7cc3dd7f658564fa4443ff7200db64f1eef479f7e2aefae0c716e35502cd45f80a2005b33036104c95782610469565b6040516305bf8fb360e31b815260206004820152602560248201527f4f6e6c7920726573657276696e6720636f6e74726f6c6c65722063616e2072656044820152646c6561736560d81b6064820152608490fd5b3461017c57604036600319011261017c576004356024356001600160a01b0381169081900361017c575f516020611f025f395f51905f52549160ff8360401c1615926001600160401b038116801590816106db575b60011490816106d1575b1590816106c8575b506106b95767ffffffffffffffff1981166001175f516020611f025f395f51905f52558361068d575b506105b6611d0d565b6105be611d0d565b6105c6611d0d565b6105cf336115ec565b6105d7611d0d565b6105df611c44565b80156101d7577f0747cfd0d41ccd9050f767151ed72d19992387e6295320adbcb8bd37b84eec3f60405f548151908152836020820152a15f556bffffffffffffffffffffffff60a01b600254161760025561063657005b68ff0000000000000000195f516020611f025f395f51905f5254165f516020611f025f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001175f516020611f025f395f51905f5255836105ad565b63f92ee8a960e01b5f5260045ffd5b90501585610584565b303b15915061057c565b859150610572565b3461017c575f36600319011261017c5760205f54604051908152f35b3461017c57602036600319011261017c576004356001600160401b03811161017c573660238201121561017c5760208061074560609336906024816004013591016114d8565b604051928184925191829101835e810160018152030190208054906001808060a01b03910154166001600160401b036040519260018060a01b038116845260a01c1660208301526040820152f35b3461017c57602036600319011261017c576004356001600160401b03811161017c576107d86107c860209236906004016113b7565b906107d3828261177b565b611c77565b15604051908152f35b3461017c575f36600319011261017c5761033760405161080260408261149c565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611449565b3461017c57602036600319011261017c576004356001600160401b03811161017c57602061085c60609236906004016113b7565b9190610868838261177b565b82604051938492833781016001815203019020604051906108888261146d565b80546001600160a01b0380821680855260a09290921c6001600160401b031660208501819052600190930154166040840152916108c4906117e2565b91604051921515835260208301526040820152f35b3461017c575f36600319011261017c575f516020611ec25f395f51905f52546040516001600160a01b039091168152602090f35b3461017c57602036600319011261017c576004356001600160401b03811161017c57602061094160409236906004016113b7565b919061094d838261177b565b82845193849283378101600181520301902081519061096b8261146d565b805491836001600160401b0360018060a01b0385169485845260a01c16928360208401526001808060a01b039101541691015282519182526020820152f35b3461017c575f36600319011261017c576002546040516001600160a01b039091168152602090f35b3461017c575f36600319011261017c576109ea611c44565b5f516020611ec25f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017c57610a47366113fa565b9190610a516115ac565b92610a5c828461177b565b610a696102d083856119f6565b610a786040516102e48161146d565b610c15575b50610a8b82610a9394611856565b939091611aec565b92600484101592836103b15784610c0e57610aad90611c08565b8552610abc82602087016115e0565b610ac984604087016115e0565b80606086015260048210156103b15760038214610be5575060028103610b5a57506103b157600203610b0657610337905b6040519182918261150e565b6040516305bf8fb360e31b815260206004820152602560248201527f52657175697265732046756c6c20506572736f6e686f6f64207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b6001915014610b6e575b5061033790610afa565b60018114908115610bda575b5015610b865781610b64565b6040516305bf8fb360e31b815260206004820152602560248201527f526571756972657320506572736f6e686f6f64204c697465207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b600291501482610b7a565b6040516305bf8fb360e31b815260206004820152908190610c0a906024830190611449565b0390fd5b505f610aad565b6001600160a01b03821603610c2a5784610a7d565b6040516305bf8fb360e31b815260206004820152602f60248201527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060448201526e131a5d19481c9959da5cdd1c985b9d608a1b6064820152608490fd5b3461017c575f36600319011261017c576020604051626ebe008152f35b3461017c575f36600319011261017c57610337604051610cc660408261149c565b60058152640312e302e360dc1b6020820152604051918291602083526020830190611449565b3461017c575f36600319011261017c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610d435760206040515f516020611ee25f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261017c57610d666113e4565b6024356001600160401b03811161017c573660238201121561017c57610d969036906024816004013591016114d8565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610efb575b50610d4357610dd9611c44565b6040516352d1902d60e01b81526001600160a01b0382169290602081600481875afa5f9181610ec7575b50610e1b5783634c9c8ce360e01b5f5260045260245ffd5b805f516020611ee25f395f51905f52859203610eb55750823b15610ea3575f516020611ee25f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610e8b5761024691611e35565b505034610e9457005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610ef3575b81610ee36020938361149c565b8101031261017c57519085610e03565b3d9150610ed6565b5f516020611ee25f395f51905f52546001600160a01b03161415905083610dcc565b3461017c576020610174610f30366113fa565b91611576565b3461017c57610f44366113fa565b9190610f4e61165d565b610f58818361177b565b610f628183611856565b5060048110156103b1576001036110f957610f7c916119f6565b604051610fdb825191602081818601948086835e8101600181520301902060405190610fa78261146d565b80546001600160a01b03808216845260a09190911c6001600160401b031660208401526001909101541660408201526117e2565b15610fe257005b626ebe0042018042116110e5577f4d72f477fa240edc1a91eaafd5ec14ee8c94142aa248fafb508ac804c9c5362d916001600160401b0360209216936040519561102b8761146d565b60018060a01b0316958681526001848201878152604083019033825260405187818751808a835e81018681520301902093518454915167ffffffffffffffff60a01b60a091821b166001600160e01b03199093169085901b85900391821667ffffffffffffffff60a01b1916179190911784559051929091018054929091166001600160a01b03166001600160a01b0319909216919091179055604051905190918291908190835e81015f815203902092604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b6040516305bf8fb360e31b815260206004820152602e60248201527f42617365207265736572766174696f6e2072657175697265732061206c69746560448201526d2d656c696769626c65206e616d6560901b6064820152608490fd5b3461017c57602036600319011261017c576004356001600160401b03811161017c5761033761119f61118f6111ad9336906004016113b7565b9061119a828261177b565b611856565b60405193849392849061143c565b604060208401526040830190611449565b3461017c576111cc366113fa565b91906111d661165d565b6111e0818361177b565b6040518183823760208183810160018152030190206112046040516102e48161146d565b611309575b50626ebe0042018042116110e5577f4d72f477fa240edc1a91eaafd5ec14ee8c94142aa248fafb508ac804c9c5362d916001600160401b036020921693604051956112538761146d565b60018060a01b03169586815260018482018781526040830190338252604051868682378087018481528190038801902093518454915167ffffffffffffffff60a01b60a091821b166001600160e01b03199093169085901b85900391821667ffffffffffffffff60a01b1916179190911784559051929091018054929091166001600160a01b03166001600160a01b03199092169190911790556040519182918190833781015f815203902092604051908152a3005b6001600160a01b0384160361131e5783611209565b6040516305bf8fb360e31b815260206004820152601e60248201527f42617365206e616d652068656c6420627920616e6f74686572207573657200006044820152606490fd5b3461017c57602036600319011261017c576004359063ffffffff60e01b821680920361017c5760209163a0c6dda960e01b81149081156113a6575b5015158152f35b6301ffc9a760e01b1490508361139f565b9181601f8401121561017c578235916001600160401b03831161017c576020838186019501011161017c57565b600435906001600160a01b038216820361017c57565b604060031982011261017c57600435906001600160401b03821161017c57611424916004016113b7565b90916024356001600160a01b038116810361017c5790565b9060048210156103b15752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b606081019081106001600160401b0382111761148857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761148857604052565b6001600160401b03811161148857601f01601f191660200190565b9291926114e4826114bd565b916114f2604051938461149c565b82948184528183011161017c578281602093845f960137010152565b60a060606115549360208452805160208501526115336020820151604086019061143c565b61154460408201518386019061143c565b0151916080808201520190611449565b90565b60208091604051928184925191829101835e8101600181520301902090565b9161159461158d8361159a949561119a828261177b565b5091611aec565b90611bba565b6115a75761155490611c08565b505f90565b60405190608082018281106001600160401b0382111761148857604052606080835f81525f60208201525f60408201520152565b60048210156103b15752565b6001600160a01b0316801561164a575f516020611ec25f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b60025460405163023aa9ab60e61b8152683932b3b4b9ba3930b960b91b600482015290602090829060249082906001600160a01b03165afa90811561172d575f91611738575b50604051636d46114f60e11b815233600482015290602090829060249082906001600160a01b03165afa90811561172d575f916116f2575b50156116e357565b633217675b60e21b5f5260045ffd5b90506020813d602011611725575b8161170d6020938361149c565b8101031261017c5751801515810361017c575f6116db565b3d9150611700565b6040513d5f823e3d90fd5b90506020813d602011611773575b816117536020938361149c565b8101031261017c57516001600160a01b038116810361017c5760206116a3565b3d9150611746565b908061178692611d38565b1561178d57565b6040516305bf8fb360e31b815260206004820152602660248201527f4e616d65206d757374206265206c6f7765726361736520415343494920444e53604482015265081b1858995b60d21b6064820152608490fd5b80516001600160a01b0316151590816117f9575090565b6001600160401b0391506020015116421090565b6040519061181c60608361149c565b602582526430ba34b7b760d91b6040837f52657175697265732046756c6c20706572736f6e686f6f64207665726966696360208201520152565b8161186091611c77565b60028111611978578082039182116110e5576005821115611938578160066002931015908161192c575b506118cf571461189f5760029061155461180d565b5f906040516118af60408261149c565b601081526f105d985a5b18589b19481d1bc8185b1b60821b602082015290565b146118df5760029061155461180d565b6001906040516118f060608261149c565b602681527f5265717569726573204c6967687420706572736f6e686f6f642076657269666960208201526531b0ba34b7b760d11b604082015290565b6008915011155f61188a565b505060039060405161194b60408261149c565b601781527f526573657276656420666f7220476f7665726e616e6365000000000000000000602082015290565b6040516305bf8fb360e31b8152602060048201526024808201527f4e616d652063616e2068617665206d6178696d756d20322064696769742073756044820152630ccccd2f60e31b6064820152608490fd5b908210156119d6570190565b634e487b7160e01b5f52603260045260245ffd5b80156110e5575f190190565b90805b80151580611abc575b80611a8c575b15611a1b57611a16906119ea565b6119f9565b9091611a26826114bd565b92611a34604051948561149c565b828452601f19611a43846114bd565b013660208601375f5b838110611a5a575050505090565b6001600160f81b0319611a6e8284866119ca565b35165f1a9085518110156119d6576001916020828801015301611a4c565b505f1981018181116110e557603960f81b906001600160f81b031990611ab39085876119ca565b35161115611a08565b505f1981018181116110e557600360fc1b906001600160f81b031990611ae39085876119ca565b35161015611a02565b6040805163886af13360e01b81526001600160a01b03909216600483015264646f746e7360d81b602483015281604481630a0100005afa801561172d575f90611b54575b60ff9150511660028114611b4e57600114611b49575f90565b600190565b50600290565b506040813d604011611bb2575b81611b6e6040938361149c565b8101031261017c57604051604081018181106001600160401b0382111761148857604052815160ff8116810361017c5760ff92602091835201516020820152611b30565b3d9150611b61565b60048110156103b15760028114611bf857600114611bd85750600190565b60048110156103b15760018114908115611bf0575090565b600291501490565b5060048110156103b15760021490565b600981106115a757600f811015611c3b575f5490600f0390600f82116110e5578181029181830414901517156110e55790565b505f5460011c90565b5f516020611ec25f395f51905f52546001600160a01b03163303611c6457565b63118cdaa760e01b5f523360045260245ffd5b5f9291908190815b611c8857505050565b909291935f1985018581116110e557600360fc1b6001600160f81b0319611cb08388876119ca565b351610159081611ce7575b5015611cdf575f1981146110e5576001611cd69101946119ea565b91929082611c7f565b935090915050565b603960f81b91506001600160f81b031990611d039087866119ca565b351611155f611cbb565b60ff5f516020611f025f395f51905f525460401c1615611d2957565b631afcd79f60e31b5f5260045ffd5b908215611dff5780156119d65781356001600160f81b031916602d60f81b148015611e06575b611dff575f5b838110611d745750505050600190565b6001600160f81b0319611d888284866119ca565b3516606160f81b8110159081611df0575b600360fc1b81101580611de2575b8215611dda575b508115611dcc575b5015611dc457600101611d64565b505050505f90565b602d60f81b1490505f611db6565b91505f611dae565b50603960f81b811115611da7565b603d60f91b8111159150611d99565b5050505f90565b505f1983018381116110e557602d60f81b906001600160f81b031990611e2d9084866119ca565b351614611d5e565b905f8091602081519101845af48080611eae575b15611e695750506040513d81523d5f602083013e60203d82010160405290565b15611e8e57639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15611e9f576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b503d151580611e495750813b1515611e4956fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203bb05b17ebd03e61457d78bd4b4821d2da326b08f0c17dd203cd8c9dd922de0e64736f6c63430008220033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00", sourceMap: "1077:16231:7:-:0;;;;;;;1084:4:81;1076:13;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;;;;;7894:76:80;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;7983:34:80;7979:146;;-1:-1:-1;1077:16231:7;;;;;;;;1076:13:81;1077:16231:7;;;;;;;;;;;7979:146:80;-1:-1:-1;;;;;;1077:16231:7;-1:-1:-1;;;;;1077:16231:7;;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;;8085:29:80;;1077:16231:7;;8085:29:80;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:80;;-1:-1:-1;7936:23:80;1077:16231:7;;;", linkReferences: {} },
|
|
2818
|
+
deployedBytecode: { object: "0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611364575080632b0282ae146111be5780633017fa331461115657806335696fa714610f36578063453fa0f414610f1d5780634f1ef28614610d5257806352d1902d14610cec57806354fd4d5014610ca557806368e344e914610c885780636bbfce2b14610a39578063715018a6146109d25780637656419f146109aa5780638ac7f0f51461090d5780638da5cb5b146108d95780639180999414610828578063ad3cb1cc146107e1578063b4956ade14610793578063c5c95048146106ff578063d6fbf202146106e3578063da35a26f1461051d578063dbc13dda146103c5578063dcd6257314610248578063f2fde38b1461021d578063f6d3dec2146101805763fe2c61981461012f575f80fd5b3461017c57602036600319011261017c576004356001600160401b03811161017c5761017461016f61016760209336906004016113b7565b80929161177b565b611c08565b604051908152f35b5f80fd5b3461017c57602036600319011261017c5760043561019c611c44565b80156101d7577f0747cfd0d41ccd9050f767151ed72d19992387e6295320adbcb8bd37b84eec3f60405f548151908152836020820152a15f55005b6040516305bf8fb360e31b815260206004820152601c60248201527f5072696365206d7573742062652067726561746572207468616e2030000000006044820152606490fd5b3461017c57602036600319011261017c576102466102396113e4565b610241611c44565b6115ec565b005b3461017c57610256366113fa565b6102619291926115ac565b9161026c848261177b565b6102768482611856565b92909161028282611aec565b60048110156103b157610337966102d5926102c46102d09380155f146103ab576102ab84611c08565b8a526102bb60208b0198896115e0565b60408a016115e0565b606088019687526119f6565b611557565b61031b6040516102e48161146d565b82546001600160a01b0380821680845260a09290921c6001600160401b0316602084015260019094015490931660408201526117e2565b9182610397575b505061033b575b50506040519182918261150e565b0390f35b60405160039261034c60608361149c565b602f82527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060208301526e131a5d19481c9959da5cdd1c985b9d608a1b604083015252528280610329565b6001600160a01b0316141590508580610322565b5f6102ab565b634e487b7160e01b5f52602160045260245ffd5b3461017c57602036600319011261017c576004356001600160401b03811161017c576103f59036906004016113b7565b906103fe61165d565b610408828261177b565b6040518282823760208184810160018152030190206104646040519161042d8361146d565b80546001600160a01b03808216855260a09190911c6001600160401b031660208501526001909101541660408301819052916117e2565b6104bd575b505f60016040518484823760208186810184815203019020828155015581604051928392833781015f81520390207f6ec7cc3dd7f658564fa4443ff7200db64f1eef479f7e2aefae0c716e35502cd45f80a2005b33036104c95782610469565b6040516305bf8fb360e31b815260206004820152602560248201527f4f6e6c7920726573657276696e6720636f6e74726f6c6c65722063616e2072656044820152646c6561736560d81b6064820152608490fd5b3461017c57604036600319011261017c576004356024356001600160a01b0381169081900361017c575f516020611f025f395f51905f52549160ff8360401c1615926001600160401b038116801590816106db575b60011490816106d1575b1590816106c8575b506106b95767ffffffffffffffff1981166001175f516020611f025f395f51905f52558361068d575b506105b6611d0d565b6105be611d0d565b6105c6611d0d565b6105cf336115ec565b6105d7611d0d565b6105df611c44565b80156101d7577f0747cfd0d41ccd9050f767151ed72d19992387e6295320adbcb8bd37b84eec3f60405f548151908152836020820152a15f556bffffffffffffffffffffffff60a01b600254161760025561063657005b68ff0000000000000000195f516020611f025f395f51905f5254165f516020611f025f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001175f516020611f025f395f51905f5255836105ad565b63f92ee8a960e01b5f5260045ffd5b90501585610584565b303b15915061057c565b859150610572565b3461017c575f36600319011261017c5760205f54604051908152f35b3461017c57602036600319011261017c576004356001600160401b03811161017c573660238201121561017c5760208061074560609336906024816004013591016114d8565b604051928184925191829101835e810160018152030190208054906001808060a01b03910154166001600160401b036040519260018060a01b038116845260a01c1660208301526040820152f35b3461017c57602036600319011261017c576004356001600160401b03811161017c576107d86107c860209236906004016113b7565b906107d3828261177b565b611c77565b15604051908152f35b3461017c575f36600319011261017c5761033760405161080260408261149c565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611449565b3461017c57602036600319011261017c576004356001600160401b03811161017c57602061085c60609236906004016113b7565b9190610868838261177b565b82604051938492833781016001815203019020604051906108888261146d565b80546001600160a01b0380821680855260a09290921c6001600160401b031660208501819052600190930154166040840152916108c4906117e2565b91604051921515835260208301526040820152f35b3461017c575f36600319011261017c575f516020611ec25f395f51905f52546040516001600160a01b039091168152602090f35b3461017c57602036600319011261017c576004356001600160401b03811161017c57602061094160409236906004016113b7565b919061094d838261177b565b82845193849283378101600181520301902081519061096b8261146d565b805491836001600160401b0360018060a01b0385169485845260a01c16928360208401526001808060a01b039101541691015282519182526020820152f35b3461017c575f36600319011261017c576002546040516001600160a01b039091168152602090f35b3461017c575f36600319011261017c576109ea611c44565b5f516020611ec25f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017c57610a47366113fa565b9190610a516115ac565b92610a5c828461177b565b610a696102d083856119f6565b610a786040516102e48161146d565b610c15575b50610a8b82610a9394611856565b939091611aec565b92600484101592836103b15784610c0e57610aad90611c08565b8552610abc82602087016115e0565b610ac984604087016115e0565b80606086015260048210156103b15760038214610be5575060028103610b5a57506103b157600203610b0657610337905b6040519182918261150e565b6040516305bf8fb360e31b815260206004820152602560248201527f52657175697265732046756c6c20506572736f6e686f6f64207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b6001915014610b6e575b5061033790610afa565b60018114908115610bda575b5015610b865781610b64565b6040516305bf8fb360e31b815260206004820152602560248201527f526571756972657320506572736f6e686f6f64204c697465207665726966696360448201526430ba34b7b760d91b6064820152608490fd5b600291501482610b7a565b6040516305bf8fb360e31b815260206004820152908190610c0a906024830190611449565b0390fd5b505f610aad565b6001600160a01b03821603610c2a5784610a7d565b6040516305bf8fb360e31b815260206004820152602f60248201527f42617365206e616d6520726573657276656420666f72206f726967696e616c2060448201526e131a5d19481c9959da5cdd1c985b9d608a1b6064820152608490fd5b3461017c575f36600319011261017c576020604051626ebe008152f35b3461017c575f36600319011261017c57610337604051610cc660408261149c565b60058152640312e302e360dc1b6020820152604051918291602083526020830190611449565b3461017c575f36600319011261017c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610d435760206040515f516020611ee25f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261017c57610d666113e4565b6024356001600160401b03811161017c573660238201121561017c57610d969036906024816004013591016114d8565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610efb575b50610d4357610dd9611c44565b6040516352d1902d60e01b81526001600160a01b0382169290602081600481875afa5f9181610ec7575b50610e1b5783634c9c8ce360e01b5f5260045260245ffd5b805f516020611ee25f395f51905f52859203610eb55750823b15610ea3575f516020611ee25f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610e8b5761024691611e35565b505034610e9457005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610ef3575b81610ee36020938361149c565b8101031261017c57519085610e03565b3d9150610ed6565b5f516020611ee25f395f51905f52546001600160a01b03161415905083610dcc565b3461017c576020610174610f30366113fa565b91611576565b3461017c57610f44366113fa565b9190610f4e61165d565b610f58818361177b565b610f628183611856565b5060048110156103b1576001036110f957610f7c916119f6565b604051610fdb825191602081818601948086835e8101600181520301902060405190610fa78261146d565b80546001600160a01b03808216845260a09190911c6001600160401b031660208401526001909101541660408201526117e2565b15610fe257005b626ebe0042018042116110e5577f4d72f477fa240edc1a91eaafd5ec14ee8c94142aa248fafb508ac804c9c5362d916001600160401b0360209216936040519561102b8761146d565b60018060a01b0316958681526001848201878152604083019033825260405187818751808a835e81018681520301902093518454915167ffffffffffffffff60a01b60a091821b166001600160e01b03199093169085901b85900391821667ffffffffffffffff60a01b1916179190911784559051929091018054929091166001600160a01b03166001600160a01b0319909216919091179055604051905190918291908190835e81015f815203902092604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b6040516305bf8fb360e31b815260206004820152602e60248201527f42617365207265736572766174696f6e2072657175697265732061206c69746560448201526d2d656c696769626c65206e616d6560901b6064820152608490fd5b3461017c57602036600319011261017c576004356001600160401b03811161017c5761033761119f61118f6111ad9336906004016113b7565b9061119a828261177b565b611856565b60405193849392849061143c565b604060208401526040830190611449565b3461017c576111cc366113fa565b91906111d661165d565b6111e0818361177b565b6040518183823760208183810160018152030190206112046040516102e48161146d565b611309575b50626ebe0042018042116110e5577f4d72f477fa240edc1a91eaafd5ec14ee8c94142aa248fafb508ac804c9c5362d916001600160401b036020921693604051956112538761146d565b60018060a01b03169586815260018482018781526040830190338252604051868682378087018481528190038801902093518454915167ffffffffffffffff60a01b60a091821b166001600160e01b03199093169085901b85900391821667ffffffffffffffff60a01b1916179190911784559051929091018054929091166001600160a01b03166001600160a01b03199092169190911790556040519182918190833781015f815203902092604051908152a3005b6001600160a01b0384160361131e5783611209565b6040516305bf8fb360e31b815260206004820152601e60248201527f42617365206e616d652068656c6420627920616e6f74686572207573657200006044820152606490fd5b3461017c57602036600319011261017c576004359063ffffffff60e01b821680920361017c5760209163a0c6dda960e01b81149081156113a6575b5015158152f35b6301ffc9a760e01b1490508361139f565b9181601f8401121561017c578235916001600160401b03831161017c576020838186019501011161017c57565b600435906001600160a01b038216820361017c57565b604060031982011261017c57600435906001600160401b03821161017c57611424916004016113b7565b90916024356001600160a01b038116810361017c5790565b9060048210156103b15752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b606081019081106001600160401b0382111761148857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761148857604052565b6001600160401b03811161148857601f01601f191660200190565b9291926114e4826114bd565b916114f2604051938461149c565b82948184528183011161017c578281602093845f960137010152565b60a060606115549360208452805160208501526115336020820151604086019061143c565b61154460408201518386019061143c565b0151916080808201520190611449565b90565b60208091604051928184925191829101835e8101600181520301902090565b9161159461158d8361159a949561119a828261177b565b5091611aec565b90611bba565b6115a75761155490611c08565b505f90565b60405190608082018281106001600160401b0382111761148857604052606080835f81525f60208201525f60408201520152565b60048210156103b15752565b6001600160a01b0316801561164a575f516020611ec25f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b60025460405163023aa9ab60e61b8152683932b3b4b9ba3930b960b91b600482015290602090829060249082906001600160a01b03165afa90811561172d575f91611738575b50604051636d46114f60e11b815233600482015290602090829060249082906001600160a01b03165afa90811561172d575f916116f2575b50156116e357565b633217675b60e21b5f5260045ffd5b90506020813d602011611725575b8161170d6020938361149c565b8101031261017c5751801515810361017c575f6116db565b3d9150611700565b6040513d5f823e3d90fd5b90506020813d602011611773575b816117536020938361149c565b8101031261017c57516001600160a01b038116810361017c5760206116a3565b3d9150611746565b908061178692611d38565b1561178d57565b6040516305bf8fb360e31b815260206004820152602660248201527f4e616d65206d757374206265206c6f7765726361736520415343494920444e53604482015265081b1858995b60d21b6064820152608490fd5b80516001600160a01b0316151590816117f9575090565b6001600160401b0391506020015116421090565b6040519061181c60608361149c565b602582526430ba34b7b760d91b6040837f52657175697265732046756c6c20706572736f6e686f6f64207665726966696360208201520152565b8161186091611c77565b60028111611978578082039182116110e5576005821115611938578160066002931015908161192c575b506118cf571461189f5760029061155461180d565b5f906040516118af60408261149c565b601081526f105d985a5b18589b19481d1bc8185b1b60821b602082015290565b146118df5760029061155461180d565b6001906040516118f060608261149c565b602681527f5265717569726573204c6967687420706572736f6e686f6f642076657269666960208201526531b0ba34b7b760d11b604082015290565b6008915011155f61188a565b505060039060405161194b60408261149c565b601781527f526573657276656420666f7220476f7665726e616e6365000000000000000000602082015290565b6040516305bf8fb360e31b8152602060048201526024808201527f4e616d652063616e2068617665206d6178696d756d20322064696769742073756044820152630ccccd2f60e31b6064820152608490fd5b908210156119d6570190565b634e487b7160e01b5f52603260045260245ffd5b80156110e5575f190190565b90805b80151580611abc575b80611a8c575b15611a1b57611a16906119ea565b6119f9565b9091611a26826114bd565b92611a34604051948561149c565b828452601f19611a43846114bd565b013660208601375f5b838110611a5a575050505090565b6001600160f81b0319611a6e8284866119ca565b35165f1a9085518110156119d6576001916020828801015301611a4c565b505f1981018181116110e557603960f81b906001600160f81b031990611ab39085876119ca565b35161115611a08565b505f1981018181116110e557600360fc1b906001600160f81b031990611ae39085876119ca565b35161015611a02565b6040805163886af13360e01b81526001600160a01b03909216600483015264646f746e7360d81b602483015281604481630a0100005afa801561172d575f90611b54575b60ff9150511660028114611b4e57600114611b49575f90565b600190565b50600290565b506040813d604011611bb2575b81611b6e6040938361149c565b8101031261017c57604051604081018181106001600160401b0382111761148857604052815160ff8116810361017c5760ff92602091835201516020820152611b30565b3d9150611b61565b60048110156103b15760028114611bf857600114611bd85750600190565b60048110156103b15760018114908115611bf0575090565b600291501490565b5060048110156103b15760021490565b600981106115a757600f811015611c3b575f5490600f0390600f82116110e5578181029181830414901517156110e55790565b505f5460011c90565b5f516020611ec25f395f51905f52546001600160a01b03163303611c6457565b63118cdaa760e01b5f523360045260245ffd5b5f9291908190815b611c8857505050565b909291935f1985018581116110e557600360fc1b6001600160f81b0319611cb08388876119ca565b351610159081611ce7575b5015611cdf575f1981146110e5576001611cd69101946119ea565b91929082611c7f565b935090915050565b603960f81b91506001600160f81b031990611d039087866119ca565b351611155f611cbb565b60ff5f516020611f025f395f51905f525460401c1615611d2957565b631afcd79f60e31b5f5260045ffd5b908215611dff5780156119d65781356001600160f81b031916602d60f81b148015611e06575b611dff575f5b838110611d745750505050600190565b6001600160f81b0319611d888284866119ca565b3516606160f81b8110159081611df0575b600360fc1b81101580611de2575b8215611dda575b508115611dcc575b5015611dc457600101611d64565b505050505f90565b602d60f81b1490505f611db6565b91505f611dae565b50603960f81b811115611da7565b603d60f91b8111159150611d99565b5050505f90565b505f1983018381116110e557602d60f81b906001600160f81b031990611e2d9084866119ca565b351614611d5e565b905f8091602081519101845af48080611eae575b15611e695750506040513d81523d5f602083013e60203d82010160405290565b15611e8e57639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15611e9f576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b503d151580611e495750813b1515611e4956fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203bb05b17ebd03e61457d78bd4b4821d2da326b08f0c17dd203cd8c9dd922de0e64736f6c63430008220033", sourceMap: "1077:16231:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;8605:39;8583:4;1077:16231;;;;;;;;:::i;:::-;8583:4;;;;:::i;:::-;8605:39;:::i;:::-;1077:16231;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;2324:62:61;;:::i;:::-;3198:20:7;;1077:16231;;3276:53;1077:16231;;;;;;;;;;;;;3276:53;1077:16231;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;2378:1:61;1077:16231:7;;:::i;:::-;2324:62:61;;:::i;:::-;2378:1;:::i;:::-;1077:16231:7;;;;;;;;:::i;:::-;;;;;;:::i;:::-;7652:4;;;;;:::i;:::-;7727:28;;;;:::i;:::-;7788;;;;;;:::i;:::-;1077:16231;;;;;;;7856:78;1077:16231;7856:78;7986:32;8097:18;7856:78;:32;;:78;:32;;;7891:39;;;:::i;:::-;1077:16231;;7944:32;:15;;;:32;;;:::i;:::-;1077:16231;7986:19;;:32;:::i;:::-;8028:16;;;:33;;;8097:18;:::i;:::-;1077:16231;:::i;:::-;8195:20;1077:16231;;;;;:::i;:::-;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;7944:15;1077:16231;;;;;;;;;;;;;;;8195:20;:::i;:::-;:56;;;;7856:78;8191:215;;;;7856:78;1077:16231;;;;;;;;;:::i;:::-;;;;8191:215;1077:16231;;8367:28;;1077:16231;8028:16;1077:16231;;:::i;:::-;;;;;7944:15;1077:16231;;;-1:-1:-1;;;1077:16231:7;;;;;;8191:215;;;;8195:56;-1:-1:-1;;;;;1077:16231:7;8219:32;;;-1:-1:-1;8195:56:7;;;;7856:78;1077:16231;7856:78;;1077:16231;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;:::i;:::-;1891:67;;;:::i;:::-;16644:8;;;;:::i;:::-;1077:16231;;;;;;;;;;;16696:12;1077:16231;;;;;;17031:20;1077:16231;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;17031:20;:::i;:::-;17027:193;;1077:16231;;;16696:12;1077:16231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1077:16231:7;;;;;17273:26;1077:16231;17273:26;;1077:16231;17027:193;17092:10;:36;1077:16231;;17027:193;;;1077:16231;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;;;;;;4301:16:80;1077:16231:7;-1:-1:-1;;;;;1077:16231:7;;4724:16:80;;:34;;;;1077:16231:7;;4788:16:80;:50;;;;1077:16231:7;4853:13:80;:30;;;;1077:16231:7;4849:91:80;;;-1:-1:-1;;1077:16231:7;;;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;4977:67:80;;1077:16231:7;6891:76:80;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;2472:10:7;6959:1:80;:::i;:::-;6891:76;;:::i;:::-;2324:62:61;;:::i;:::-;3198:20:7;;1077:16231;;3276:53;1077:16231;;;;;;;;;;;;;3276:53;1077:16231;;;;;2563:27;1077:16231;;;2563:27;1077:16231;5064:101:80;;1077:16231:7;5064:101:80;1077:16231:7;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;-1:-1:-1;;;;;;;;;;;1077:16231:7;5140:14:80;1077:16231:7;;;;;;5140:14:80;1077:16231:7;4977:67:80;-1:-1:-1;;1077:16231:7;;;-1:-1:-1;;;;;;;;;;;1077:16231:7;4977:67:80;;;4849:91;4906:23;;;1077:16231:7;4906:23:80;1077:16231:7;;4906:23:80;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:80;;4724:34;;;-1:-1:-1;4724:34:80;;1077:16231:7;;;;;;-1:-1:-1;;1077:16231:7;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1403:71;1077:16231;;;;;;;;;1403:71;1077:16231;;;;;1403:71;;1077:16231;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;5169:30;1077:16231;;;;;;;;:::i;:::-;5133:8;;;;;:::i;:::-;5169:30;:::i;:::-;5216:11;1077:16231;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;:::i;:::-;5866:8;;;;;;:::i;:::-;1077:16231;;;;;;;;;;5918:12;1077:16231;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;5958:20;;;:::i;:::-;1077:16231;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;:::i;:::-;5479:8;;;;;;:::i;:::-;1077:16231;;;;;;;;;;5528:12;1077:16231;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;5528:12;1077:16231;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;1674:46;1077:16231;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;2324:62:61;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1077:16231:7;;-1:-1:-1;;;;;;1077:16231:7;;;;;;;-1:-1:-1;;;;;1077:16231:7;3996:40:61;1077:16231:7;;3996:40:61;1077:16231:7;;;;;;;;:::i;:::-;;;;;:::i;:::-;6283:4;;;;;:::i;:::-;1077:16231;11288:18;;;;:::i;1077:16231::-;11386:20;1077:16231;;;;;:::i;11386:20::-;11382:199;;1077:16231;6411:28;;;6472;6411;;:::i;:::-;6472;;;;:::i;:::-;1077:16231;;;;;;;;;6540:32;;;6575:39;;;:::i;:::-;1077:16231;;6628:32;:15;1077:16231;6628:15;;:32;:::i;:::-;6670;:19;1077:16231;6670:19;;:32;:::i;:::-;6712:16;1077:16231;6712:16;;:33;1077:16231;;;;;;6782:18;6764:36;;1077:16231;;-1:-1:-1;6860:17:7;6842:35;;6860:17;;1077:16231;;;6860:17;6918:31;1077:16231;;;6838:431;;1077:16231;;;;;;;:::i;:::-;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;6838:431;11349:12;1077:16231;;7035:35;7031:238;;6838:431;;1077:16231;6838:431;;;7031:238;11349:12;7111:31;;:66;;;;;7031:238;1077:16231;;;;7031:238;;;1077:16231;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;7111:66;6860:17;1077:16231;;7146:31;7111:66;;;1077:16231;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;6540:78;;1077:16231;6540:78;;11382:199;-1:-1:-1;;;;;1077:16231:7;;11447:32;1077:16231;;11382:199;;;1077:16231;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;;1586:8;1077:16231;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1077:16231:7;;;;4840:6:81;-1:-1:-1;;;;;1077:16231:7;4831:4:81;4823:23;4819:145;;1077:16231:7;;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;;4819:145:81;4594:29;;;1077:16231:7;4924:29:81;1077:16231:7;;4924:29:81;1077:16231:7;;;-1:-1:-1;;1077:16231:7;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;4417:6:81;1077:16231:7;4408:4:81;4400:23;;;:120;;;;1077:16231:7;4383:251:81;;;2324:62:61;;:::i;:::-;1077:16231:7;;-1:-1:-1;;;5881:52:81;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;5881:52:81;;1077:16231:7;;5881:52:81;;;1077:16231:7;-1:-1:-1;5877:437:81;;1805:47:73;;;;1077:16231:7;6243:60:81;1077:16231:7;;;;6243:60:81;5877:437;5975:40;-1:-1:-1;;;;;;;;;;;5975:40:81;;;5971:120;;1748:29:73;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;-1:-1:-1;;;;;;1077:16231:7;;;;;2407:36:73;-1:-1:-1;;2407:36:73;1077:16231:7;;2458:15:73;:11;;2489:53;;;:::i;2454:148::-;6163:9;;;6159:70;;1077:16231:7;6159:70:73;6199:19;;;1077:16231:7;6199:19:73;1077:16231:7;;6199:19:73;1744:119;1805:47;;;1077:16231:7;1805:47:73;1077:16231:7;;;;1805:47:73;5971:120:81;6042:34;;;1077:16231:7;6042:34:81;1077:16231:7;;;;6042:34:81;5881:52;;;;1077:16231:7;5881:52:81;;1077:16231:7;5881:52:81;;;;;;1077:16231:7;5881:52:81;;;:::i;:::-;;;1077:16231:7;;;;2159:16:35;5881:52:81;;;;;;;-1:-1:-1;5881:52:81;;4400:120;-1:-1:-1;;;;;;;;;;;1077:16231:7;-1:-1:-1;;;;;1077:16231:7;4478:42:81;;;-1:-1:-1;4400:120:81;;;1077:16231:7;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;1891:67;;;;:::i;:::-;3878:4;;;;:::i;:::-;3924:28;;;;:::i;:::-;1077:16231;;;;;;;4001:17;3983:35;1077:16231;;4140:18;;;:::i;:::-;1077:16231;;4251:28;1077:16231;;;;;;;;;;;;;;;4001:17;1077:16231;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;4251:28;:::i;:::-;4250:29;4246:723;;1077:16231;4246:723;1586:8;4708:15;1077:16231;4708:15;;1077:16231;;;4903:55;1077:16231;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;:::i;:::-;;;;;;;;;;;4001:17;4806:78;;;1077:16231;;;;4806:78;;4872:10;;1077:16231;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;-1:-1:-1;;;;;;1077:16231:7;;;;;;;;;;;;;-1:-1:-1;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;-1:-1:-1;;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4903:55;1077:16231;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;3625:28;1077:16231;;;;;;;;:::i;:::-;3603:4;;;;;:::i;:::-;3625:28;:::i;:::-;1077:16231;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;1891:67;;;;:::i;:::-;15423:8;;;;:::i;:::-;1077:16231;;;;;;;;;;;15473:12;1077:16231;;;;;;15509:17;1077:16231;;;;;:::i;15509:17::-;15505:531;;1077:16231;16256:15;1586:8;16256:15;1077:16231;16256:15;;1077:16231;;;16435:51;1077:16231;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;:::i;:::-;;;;;;;;;;;15473:12;16342:78;;;1077:16231;;;;16342:78;;16408:10;;1077:16231;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;-1:-1:-1;;;;;;1077:16231:7;;;;;;;;;;;;;-1:-1:-1;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;-1:-1:-1;;;;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1077:16231:7;;;;;;;;;;;16435:51;1077:16231;15505:531;-1:-1:-1;;;;;1077:16231:7;;15951:29;1077:16231;;15505:531;;;1077:16231;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14489:42:7;;;:82;;;;1077:16231;;;;;;;14489:82;-1:-1:-1;;;1119:40:66;;-1:-1:-1;14489:82:7;;;1077:16231;;;;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;:::o;:::-;;-1:-1:-1;;1077:16231:7;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1077:16231:7;;;;;;;;-1:-1:-1;;1077:16231:7;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;:::o;:::-;;;;-1:-1:-1;1077:16231:7;;;;;-1:-1:-1;1077:16231:7;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;:::o;:::-;-1:-1:-1;;;;;1077:16231:7;;;;;;-1:-1:-1;;1077:16231:7;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1077:16231:7;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;11349:12;1077:16231;;;;;;;:::o;8687:418::-;;8983:24;8919:28;8687:418;8961:47;8687:418;;8880:4;;;;:::i;8919:28::-;8983:24;;;:::i;:::-;8961:47;;:::i;:::-;8957:86;;9059:39;;;:::i;8957:86::-;9024:8;1077:16231;9024:8;:::o;1077:16231::-;;;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;;;;-1:-1:-1;1077:16231:7;;-1:-1:-1;1077:16231:7;;;;-1:-1:-1;1077:16231:7;;;;;;:::o;:::-;;;;;;;;:::o;3426:215:61:-;-1:-1:-1;;;;;1077:16231:7;3510:22:61;;3506:91;;-1:-1:-1;;;;;;;;;;;1077:16231:7;;-1:-1:-1;;;;;;1077:16231:7;;;;;;;-1:-1:-1;;;;;1077:16231:7;3996:40:61;-1:-1:-1;;3996:40:61;3426:215::o;3506:91::-;3555:31;;;3530:1;3555:31;3530:1;3555:31;1077:16231:7;;3530:1:61;3555:31;14965:230:7;15056:16;1077:16231;;;-1:-1:-1;;;15056:46:7;;-1:-1:-1;;;15056:46:7;;;1077:16231;;;;;;15056:46;;1077:16231;;-1:-1:-1;;;;;1077:16231:7;15056:46;;;;;;;-1:-1:-1;15056:46:7;;;14965:230;-1:-1:-1;1077:16231:7;;-1:-1:-1;;;15121:51:7;;15160:10;15056:46;15121:51;;1077:16231;;;;;;15056:46;;1077:16231;;-1:-1:-1;;;;;1077:16231:7;15121:51;;;;;;;-1:-1:-1;15121:51:7;;;14965:230;3379:20:35;;;;14965:230:7:o;3379:20:35:-;;;;-1:-1:-1;3379:20:35;15056:46:7;-1:-1:-1;3379:20:35;15121:51:7;;;1077:16231;15121:51;;1077:16231;15121:51;;;;;;1077:16231;15121:51;;;:::i;:::-;;;3379:20:35;;;;;1077:16231:7;;;3379:20:35;;;;15121:51:7;;;;;;-1:-1:-1;15121:51:7;;;1077:16231;;3379:20:35;-1:-1:-1;3379:20:35;;;;;15056:46:7;;;1077:16231;15056:46;;1077:16231;15056:46;;;;;;1077:16231;15056:46;;;:::i;:::-;;;3379:20:35;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;15056:46;;;;;-1:-1:-1;15056:46:7;;14117:166;;;2451:35:39;14117:166:7;2451:35:39;:::i;:::-;1077:16231:7;;;14117:166::o;1077:16231::-;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;11669:174;1077:16231;;-1:-1:-1;;;;;1077:16231:7;11764:31;;;;:72;;11757:79;11669:174;:::o;11764:72::-;-1:-1:-1;;;;;11799:19:7;;;;1077:16231;;11821:15;-1:-1:-1;11669:174:7;:::o;1077:16231::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;:::o;13117:994::-;;13353:26;13117:994;13353:26;:::i;:::-;13416:1;13398:19;;1077:16231;;;;;;;;;;13557:1;13543:15;;;13539:100;;13653:15;13667:1;13416;13653:15;;;:34;;;;13117:994;13649:271;;;13934:19;13930:97;;13416:1;1077:16231;;;:::i;13930:97::-;1077:16231;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1077:16231:7;;;;13969:47;:::o;13649:271::-;13707:19;13703:126;;13416:1;1077:16231;;;:::i;13703:126::-;13754:17;1077:16231;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;13746:68;:::o;13653:34::-;13686:1;13672:15;;;;13653:34;;;13539:100;13574:54;;13582:18;1077:16231;;;;;;;:::i;:::-;;;;;;;;;13574:54;:::o;1077:16231::-;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;;-1:-1:-1;;;1077:16231:7;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;1077:16231:7;;:::o;12544:567::-;;12693:38;12742:176;12762:15;;;:53;;;12742:176;12762:107;;;12742:176;12762:107;;;12894:13;;;:::i;:::-;12742:176;;12762:107;;;1077:16231;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1077:16231:7;;;:::i;:::-;;;;;;;-1:-1:-1;13002:15:7;;;;;;13083:21;;;;12544:567;:::o;13019:3::-;-1:-1:-1;;;;;;13050:12:7;;;;;:::i;:::-;;1077:16231;-1:-1:-1;13038:24:7;1077:16231;;;;;;;;;;;;;;;13038:24;1077:16231;12987:13;;12762:107;-1:-1:-1;;;1077:16231:7;;;;;;;-1:-1:-1;;;1077:16231:7;-1:-1:-1;;;;;;1077:16231:7;12835:26;;;;;:::i;:::-;;1077:16231;12835:34;;12762:107;;:53;-1:-1:-1;;;1077:16231:7;;;;;;;-1:-1:-1;;;1077:16231:7;-1:-1:-1;;;;;;1077:16231:7;12781:26;;;;;:::i;:::-;;1077:16231;12781:34;;12762:53;;9675:392;1077:16231;;;-1:-1:-1;;;9801:112:7;;-1:-1:-1;;;;;1077:16231:7;;;9801:112;;;1077:16231;-1:-1:-1;;;2159:16:35;;;1077:16231:7;;9801:112;1077:16231;1769:42:35;9801:112:7;;;;;;1077:16231;9801:112;;;9675:392;1077:16231;2159:16:35;;;1077:16231:7;9942:1;9927:16;;9923:46;;9998:1;9983:16;9979:46;;1077:16231;9675:392;:::o;9979:46::-;9998:1;10001:24;:::o;9923:46::-;9945:24;9942:1;9945:24;:::o;9801:112::-;;1077:16231;9801:112;;1077:16231;9801:112;;;;;;1077:16231;9801:112;;;:::i;:::-;;;2159:16:35;;;;1077:16231:7;;;;;;;;-1:-1:-1;;;;;1077:16231:7;;;;;;;2159:16:35;;1077:16231:7;;;2159:16:35;;;;1077:16231:7;2159:16:35;;;;;;;;;;;9801:112:7;;;;;-1:-1:-1;9801:112:7;;10356:368;1077:16231;;;;;;10473:17;10461:29;;10457:98;;1077:16231;10568:29;10564:133;;10706:11;1077:16231;10356:368;:::o;10564:133::-;1077:16231;;;;;;;10620:31;;:66;;;;;10613:73;;:::o;10620:66::-;10473:17;1077:16231;;10655:31;10613:73;:::o;10457:98::-;1077:16231;;;;;;;10473:17;10513:31;10506:38;:::o;10730:293::-;10849:1;10836:14;;10832:53;;10913:2;10899:16;;;10895:71;;1077:16231;;;10913:2;1077:16231;;10913:2;1077:16231;;;;;;;;;;;;;;;;;;10730:293;:::o;10895:71::-;1077:16231;;;;;10931:24;:::o;2679:162:61:-;-1:-1:-1;;;;;;;;;;;1077:16231:7;-1:-1:-1;;;;;1077:16231:7;987:10:65;2738:23:61;2734:101;;2679:162::o;2734:101::-;2784:40;;;-1:-1:-1;2784:40:61;987:10:65;2784:40:61;1077:16231:7;;-1:-1:-1;2784:40:61;11995:457:7;1077:16231;;11995:457;;;;;12261:5;;;11995:457;;;:::o;12268:3::-;1077:16231;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;12291:17:7;;;;;:::i;:::-;;1077:16231;12291:25;;:54;;;;12268:3;-1:-1:-1;12287:149:7;;;-1:-1:-1;;1077:16231:7;;;;12306:1;12268:3;1077:16231;;12287:149;12268:3;:::i;:::-;12235:24;;;;;;12287:149;12416:5;-1:-1:-1;12416:5:7;;-1:-1:-1;;11995:457:7:o;12291:54::-;-1:-1:-1;;;1077:16231:7;-1:-1:-1;;;;;;;1077:16231:7;12320:17;;;;;:::i;:::-;;1077:16231;12320:25;;12291:54;;;7082:141:80;1077:16231:7;-1:-1:-1;;;;;;;;;;;1077:16231:7;;;;7148:18:80;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:80;;-1:-1:-1;7189:17:80;5155:618:39;;5334:12;;5330:30;;1077:16231:7;;;;5374:12:39;;-1:-1:-1;;;;;;1077:16231:7;-1:-1:-1;;;5374:28:39;:62;;;;5155:618;5370:80;;-1:-1:-1;5485:7:39;;;;;;5755:11;;;;1077:16231:7;5155:618:39;:::o;5494:3::-;-1:-1:-1;;;;;;5527:8:39;;;;;:::i;:::-;;1077:16231:7;;;;5568:12:39;;;:28;;;;5494:3;-1:-1:-1;;;5625:12:39;;;;:28;;5494:3;5673:22;;;;5494:3;5673:46;;;;;5494:3;5671:49;;5667:67;;1077:16231:7;;5466:17:39;;5667:67;5722:12;;;;-1:-1:-1;5722:12:39;:::o;5673:46::-;-1:-1:-1;;;5699:20:39;;-1:-1:-1;5673:46:39;;;:22;;-1:-1:-1;5673:22:39;;;5625:28;-1:-1:-1;;;;5641:12:39;;;5625:28;;5568;-1:-1:-1;;;5584:12:39;;;;-1:-1:-1;5568:28:39;;5370:80;5438:12;;;-1:-1:-1;5438:12:39;:::o;5374:62::-;-1:-1:-1;;;1077:16231:7;;;;;;;-1:-1:-1;;;1077:16231:7;-1:-1:-1;;;;;;1077:16231:7;5406:14:39;;;;;:::i;:::-;;1077:16231:7;5406:30:39;5374:62;;4691:549:87;;-1:-1:-1;4691:549:87;;3490:129:91;;;;;;;;;;4874:72:87;;4691:549;4870:364;;;4774:252:91;;;;;;;;-1:-1:-1;3490:129:91;4774:252;;;3490:129;4774:252;;;;;;4962:32:87;:::o;4870:364::-;5011:223;;;-1:-1:-1;;;;5045:24:87;;;-1:-1:-1;;;;;1077:16231:7;;;;5045:24:87;1077:16231:7;;;5045:24:87;5011:223;4536:73:91;5090:33:87;4536:73:91;;1077:16231:7;;3379:20:35;-1:-1:-1;3379:20:35;;;;;5086:148:87;5204:19;;;-1:-1:-1;5204:19:87;;-1:-1:-1;5204:19:87;4874:72;-1:-1:-1;4536:73:91;4886:33:87;;;4874:72;4886:59;4923:18;;;:22;;4874:72;", linkReferences: {}, immutableReferences: { "56145": [{ start: 3326, length: 32 }, { start: 3489, length: 32 }] } },
|
|
2819
|
+
methodIdentifiers: { "MAX_RESERVATION_TIME()": "68e344e9", "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", "classifyName(string)": "3017fa33", "getBaseNameReservation(string)": "8ac7f0f5", "initialize(uint256,address)": "da35a26f", "isBaseName(string)": "b4956ade", "isBaseNameReserved(string)": "91809994", "owner()": "8da5cb5b", "price(string)": "fe2c6198", "priceWithCheck(string,address)": "6bbfce2b", "priceWithoutCheck(string,address)": "dcd62573", "protocolRegistry()": "7656419f", "proxiableUUID()": "52d1902d", "reachFee(string,address)": "453fa0f4", "releaseBaseName(string)": "dbc13dda", "renounceOwnership()": "715018a6", "reservations(string)": "c5c95048", "reserveBaseName(string,address)": "35696fa7", "reserveBaseNameForPop(string,address)": "2b0282ae", "startingPrice()": "d6fbf202", "supportsInterface(bytes4)": "01ffc9a7", "transferOwnership(address)": "f2fde38b", "updateStartingPrice(uint256)": "f6d3dec2", "upgradeToAndCall(address,bytes)": "4f1ef286", "version()": "54fd4d50" },
|
|
2820
|
+
rawMetadata: '{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"name":"PopError","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"baseName","type":"string"}],"name":"BaseNameReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"baseName","type":"string"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint64","name":"expires","type":"uint64"}],"name":"BaseNameReserved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"StartingPriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"MAX_RESERVATION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"classifyName","outputs":[{"internalType":"enum IPopRules.PopStatus","name":"requirement","type":"uint8"},{"internalType":"string","name":"message","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"getBaseNameReservation","outputs":[{"internalType":"address","name":"reservationOwner","type":"address"},{"internalType":"uint64","name":"expiryTimestamp","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startingPrice","type":"uint256"},{"internalType":"contract IDotnsProtocolRegistry","name":"registry","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"isBaseName","outputs":[{"internalType":"bool","name":"isBase","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"isBaseNameReserved","outputs":[{"internalType":"bool","name":"isReserved","type":"bool"},{"internalType":"address","name":"reservationOwner","type":"address"},{"internalType":"uint64","name":"expiryTimestamp","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"priceWithCheck","outputs":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"enum IPopRules.PopStatus","name":"status","type":"uint8"},{"internalType":"enum IPopRules.PopStatus","name":"userStatus","type":"uint8"},{"internalType":"string","name":"message","type":"string"}],"internalType":"struct IPopRules.PriceWithMeta","name":"metadata","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"priceWithoutCheck","outputs":[{"components":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"enum IPopRules.PopStatus","name":"status","type":"uint8"},{"internalType":"enum IPopRules.PopStatus","name":"userStatus","type":"uint8"},{"internalType":"string","name":"message","type":"string"}],"internalType":"struct IPopRules.PriceWithMeta","name":"metadata","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolRegistry","outputs":[{"internalType":"contract IDotnsProtocolRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"account","type":"address"}],"name":"reachFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"releaseBaseName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"}],"name":"reservations","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"expires","type":"uint64"},{"internalType":"address","name":"controller","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"reserveBaseName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseName","type":"string"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"reserveBaseNameForPop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newStartingPrice","type":"uint256"}],"name":"updateStartingPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"versionString","type":"string"}],"stateMutability":"pure","type":"function"}],"devdoc":{"custom:security-contact":"admin@parity.io","errors":{"AddressEmptyCode(address)":[{"details":"There\'s no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"InvalidInitialization()":[{"details":"The contract is already initialized."}],"NotInitializing()":[{"details":"The contract is not initializing."}],"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."}],"PopError(string)":[{"params":{"reason":"Human-readable explanation of the failure condition."}}],"UUPSUnauthorizedCallContext()":[{"details":"The call is from an unauthorized context."}],"UUPSUnsupportedProxiableUUID(bytes32)":[{"details":"The storage `slot` is unsupported as a UUID."}]},"events":{"BaseNameReleased(string)":{"params":{"baseName":"The base label whose reservation was released."}},"BaseNameReserved(string,address,uint64)":{"params":{"baseName":"The digit-stripped label receiving the reservation.","expires":"UNIX timestamp when the reservation expires.","owner":"Address obtaining the reservation right."}},"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."},"StartingPriceUpdated(uint256,uint256)":{"details":"Owner-only setter {updateStartingPrice}; the new value is consumed by `_priceValidatedName` on the next pricing read.","params":{"newPrice":"New wei value.","oldPrice":"Previous wei value."}},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"classifyName(string)":{"details":"Pure; inputs are the label bytes only. Callers use the returned tier to decide which pricing and verification branch applies.","params":{"name":"The name label being evaluated."},"returns":{"message":"Explanation of the classification result.","requirement":"Required tier for registration."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getBaseNameReservation(string)":{"details":"Raw accessor: returns the stored slot regardless of expiry. Use {isBaseNameReserved} when live-window semantics are needed.","params":{"baseName":"The base label without trailing digits."},"returns":{"expiryTimestamp":"UNIX timestamp when the reservation expires.","reservationOwner":"The address assigned to the reservation."}},"initialize(uint256,address)":{"custom:reverts":"InvalidInitialization","params":{"_startingPrice":"Base price in wei for NoStatus users.","registry":"Protocol-level address registry used to resolve sibling contracts."}},"isBaseName(string)":{"details":"A base name has no trailing digits; lite-person labels always have at least two trailing digits, so the two spaces are disjoint.","params":{"name":"The label to check."},"returns":{"isBase":"True when the label has no trailing digits."}},"isBaseNameReserved(string)":{"details":"Applies the live-window predicate to the stored slot so an expired reservation reads as free.","params":{"baseName":"The base label without trailing digits."},"returns":{"expiryTimestamp":"UNIX timestamp when the reservation expires.","isReserved":"True if a live reservation is active.","reservationOwner":"The reservation holder (zero when not reserved)."}},"owner()":{"details":"Returns the address of the current owner."},"price(string)":{"details":"Pure length-based pricing; ignores PoP status and reservation state.","params":{"name":"Domain label to price."},"returns":{"_0":"Registration cost in wei."}},"priceWithCheck(string,address)":{"details":"Reverting pricing path used by the commit-reveal controller. Rejects governance-reserved names and base-name registrations held by another user. Price is a spam deterrent and is significant only for NoStatus users; verified users pay zero.","params":{"name":"Domain label.","userAddress":"Registering user for the given label."},"returns":{"metadata":"Price with PoP requirements and classification."}},"priceWithoutCheck(string,address)":{"details":"Non-reverting counterpart to `priceWithCheck`: surfaces the same fields, but reports a `Reserved` status through `metadata` instead of reverting when the base stem is held by another user. Used by front-ends that need to present a price and eligibility preview without forcing a transaction attempt. Governance-reserved names are not rejected here either; the caller decides what to do.","params":{"name":"Domain label.","userAddress":"Registering user for the given label."},"returns":{"metadata":"Price with PoP requirements and classification."}},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation\'s compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"reachFee(string,address)":{"details":"Non-zero only when `account` cannot meet the label\'s required PoP tier; the value is the length-scaled list price. Acts as cross-payer friction at registration time and as the transfer-time floor consumed by `DotnsNameEscrow.chargeTransferFee`.","params":{"account":"Account whose verification reach is being measured.","name":"Domain label being acted on."}},"releaseBaseName(string)":{"details":"Callable by controllers in the registrar\'s `controllers` set. Live reservations may only be cleared by the same controller that wrote them; expired reservations may be cleared by any authorised controller. Used by the PoP controller when a reservation is claimed, relinquished, or a queue head promotion leaves the slot empty.","params":{"baseName":"The base label whose reservation should be cleared."}},"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."},"reserveBaseName(string,address)":{"details":"Commit-reveal reservation path. Callable only by an authorised controller on the registrar. Reverts unless the label is classified as `PopLite`; no-ops when the slot is already live so concurrent registrations cannot stomp the original reserver.","params":{"baseName":"The base label with trailing digits removed.","user":"The address receiving reservation rights."}},"reserveBaseNameForPop(string,address)":{"details":"Gateway-driven reservation path used by the PoP controller. Callable by any controller in the registrar\'s `controllers` set. Does not apply the lite-format classification that `reserveBaseName` enforces; the caller supplies the bare stem directly. Reverts if the slot is already held by another user and still live so the caller\'s local bookkeeping and PopRules state stay in lockstep. If the slot is already live for the same user, refreshes expiry to `block.timestamp + MAX_RESERVATION_TIME`.","params":{"baseName":"The base label to reserve (no trailing digits).","user":"The address receiving reservation rights."}},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateStartingPrice(uint256)":{"details":"Owner-only. The new value flows into `_priceValidatedName` on the next pricing read; no redeploy. Emits {StartingPriceUpdated}.","params":{"newStartingPrice":"New base price in wei."}},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"title":"PopRules","version":1},"userdoc":{"errors":{"NotRegistry()":[{"notice":"Thrown when a caller is not an authorised controller on the registrar."}],"PopError(string)":[{"notice":"Thrown when a name violates PoP-tier or reservation requirements."}]},"events":{"BaseNameReleased(string)":{"notice":"Emitted when a base-name reservation is cleared."},"BaseNameReserved(string,address,uint64)":{"notice":"Emitted when a base name receives a reservation."},"StartingPriceUpdated(uint256,uint256)":{"notice":"Emitted when the spam-deterrent NoStatus starting price is rotated."}},"kind":"user","methods":{"MAX_RESERVATION_TIME()":{"notice":"Maximum time a base name can be reserved."},"classifyName(string)":{"notice":"Classifies a name into a required PoP tier per DotNS naming rules."},"getBaseNameReservation(string)":{"notice":"Retrieves reservation information for a base name."},"initialize(uint256,address)":{"notice":"Initialises the oracle (public entry point)."},"isBaseName(string)":{"notice":"Returns whether `name` is a base name under PoP rules."},"isBaseNameReserved(string)":{"notice":"Indicates whether a base name is currently reserved."},"price(string)":{"notice":"Calculates registration cost for a label."},"priceWithCheck(string,address)":{"notice":"Calculates price with PoP classification and reservation enforcement."},"priceWithoutCheck(string,address)":{"notice":"Calculates price with PoP classification and reservation metadata, without reverting"},"protocolRegistry()":{"notice":"Protocol-level address registry for all DotNS contracts."},"reachFee(string,address)":{"notice":"Friction fee owed when `account` reaches into a label tier above its verification"},"releaseBaseName(string)":{"notice":"Clears a reservation for a base-name stem."},"reservations(string)":{"notice":"Active reservations keyed by digit-stripped base name."},"reserveBaseName(string,address)":{"notice":"Creates a reservation entry for the digit-stripped version of a name."},"reserveBaseNameForPop(string,address)":{"notice":"Writes or refreshes a reservation for a bare base-name stem."},"startingPrice()":{"notice":"Wei price for names with 9 characters and up."},"updateStartingPrice(uint256)":{"notice":"Updates the spam-deterrent starting price for NoStatus pricing."},"version()":{"notice":"Returns implementation version."}},"notice":"Implements DotNS pricing with PoP-tier validation and base-name reservations.","version":1}},"settings":{"compilationTarget":{"contracts/pop/PopRules.sol":"PopRules"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",":forge-std/=lib/forge-std/src/",":halmos-cheatcodes/=lib/halmos-cheatcodes/src/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"],"viaIR":true},"sources":{"contracts/escrow/IDotnsNameEscrow.sol":{"keccak256":"0x6635523fe200a1244bf01aaf55a592700a4f4af0ebfb5fad7fb5bd58e8048855","license":"MIT","urls":["bzz-raw://7999b1f1119b00095c11bb52d10033e9963a741eb942ae181321d6ef8bb5184b","dweb:/ipfs/QmZ5pWhRxidxMNnCLqzQyAGTVpjyu8mB5GCJ3SnivtGRpY"]},"contracts/external/personhood/IPersonhood.sol":{"keccak256":"0xea1aff2d5d7c5220b22c9e917ea404c875bff990129657462d7e9aa160b6af9e","license":"GPL-3.0-only","urls":["bzz-raw://43e3363a16e781b16ebfc321060a1516444ba784c3aa848b527d6c5f9564da35","dweb:/ipfs/QmQ9zLQMehpubHDP6zBDuEvDF7K8hBKuu5X1gX9qJCsi83"]},"contracts/pop/IPopRules.sol":{"keccak256":"0x138186f031e701865eb19b89aebcd724114b25b32d486cee90488b9d1b9a2915","license":"MIT","urls":["bzz-raw://b14c57d9bccd4194d5bb3e4baf282779650c08e109715bc4ce6c42b52d466886","dweb:/ipfs/QmVQeF353sS9ahjza9v46CBnwFkoD3wxGnj2cSJMa5RGG5"]},"contracts/pop/PopRules.sol":{"keccak256":"0xbc30f6b7b2bc57487b7b4fca17823a26428b494cd57f5bf6237cfc279a686d1e","license":"MIT","urls":["bzz-raw://209e3af3f02454787f8c6d0cace67293448d0da6afd0a47f048b5279012df7b4","dweb:/ipfs/QmdUhQdwkNfEiRXzJGBCDX5aepRmYy8cLLJ3edcVCRfc8i"]},"contracts/registrars/DotnsRegistrar.sol":{"keccak256":"0x6819848d9defec02d3497629da938270d18e1c1f7e7178bf909393ae95225916","license":"MIT","urls":["bzz-raw://da6fa64ce598f715ba4a6f7c21db88bbb70c0cde9e90dab244bdd176e2b244e4","dweb:/ipfs/QmQuizsK4RkDzknotuPoazu45mCoXFQgFkoCC1QxHSkn8e"]},"contracts/registrars/IDotnsController.sol":{"keccak256":"0x36304c2a145c90a6d07bb2630e9e599698325dfb01b4ec0f3c1dfb1853858844","license":"MIT","urls":["bzz-raw://7b3098427beb68f49940a93d5feca7c1b5424ee99f9531616326439df81bf0cf","dweb:/ipfs/QmUdyDbSb2eDZyrwsg3pv31PyCe6a2VnjoamXFGr4DxvRu"]},"contracts/registrars/IDotnsRegistrar.sol":{"keccak256":"0x8676a5ffab195b378e9f483b05c8ea52fab07aa20141d1d78dc88c6c2c093a6e","license":"MIT","urls":["bzz-raw://fd57503d29497559921fca75e636a6a579d6a5dc50099e8cd8eb35b59592eaf9","dweb:/ipfs/QmfDCwPkEkMn1FxMnekPeYrq4Q1SLpr9qWFWUSFcJpWMP9"]},"contracts/registry/IDotnsProtocolRegistry.sol":{"keccak256":"0xdc233ef72cd7eb07bf8631b4de779d2f79671b76051d1d0f81aeb5c86567269e","license":"MIT","urls":["bzz-raw://81f992df80f7f53854ef309c5ed76de1180e10a3af66c86a901e46fa1a1aaae5","dweb:/ipfs/QmbL4WUsWrupbvrz8uKPhp7YEePzdE9z8GpZvrZ5DvTWws"]},"contracts/resolvers/IDotnsReverseResolver.sol":{"keccak256":"0xaba5d1260aef33c19489f2f641b6c0ef026d24c9095cf69667818c6a211826e8","license":"MIT","urls":["bzz-raw://4d99905afa1cd71331cb4f602e0c9e0743a903ebc8e70657159af25c3503d0de","dweb:/ipfs/QmRWpZu7TsJ6SVcsDomaK5CGrQSPhYYWgkHayxyuBqQqie"]},"contracts/store/IDotnsStore.sol":{"keccak256":"0xc477b3a4354a66aa9565b7e045504127389956eb4ba0b9c981631f276b598cca","license":"MIT","urls":["bzz-raw://690a2b096d0779395b22062839e2d37338c3db03c248c05779dbf2ffffeb0c71","dweb:/ipfs/QmYVUBLHXGmn71YfYqMFjxbcQtnyPiZwQoBshwwugCZHnv"]},"contracts/store/ILabelStore.sol":{"keccak256":"0xe6097169be43b592b895af7c64d362047f4619fa110ca79d4174167e364465b8","license":"MIT","urls":["bzz-raw://756113c8136ac761b2e3bdc0603f4a43f5a0dd92db4d031e019329de064373be","dweb:/ipfs/QmRB61SofopsXD1bkRFapZmRnpissh6qrbJDHRJHtTcjhr"]},"contracts/store/IStoreFactory.sol":{"keccak256":"0x50eeb2c770feb6392bbfc449bb0c703d99cd440a5db6d0d82bedfdbe1cd3293b","license":"MIT","urls":["bzz-raw://a50699a47ca893f3aa9b13496f0a6e2201acbd3e7871b4579a25c7d4d773b44a","dweb:/ipfs/QmXBMBzZhdv12obarQL6WLFzFxgnmXb8cEt4CHiMkUZTJd"]},"contracts/utils/DotnsConstants.sol":{"keccak256":"0x0336dfe0c896ce13bdce9f63238d344ac900a74fcbc5b0b061f9ab92799862dc","license":"MIT","urls":["bzz-raw://5254d400120263b327c8bd58ed75275a98c4bf5c590090fbb10123beb0dc1298","dweb:/ipfs/QmZoJtKyxdr2MH8ChBjkFjbxSk3HU2gukPo1S3fV9dMUwr"]},"contracts/utils/LabelUtils.sol":{"keccak256":"0x8c6acb887fe9784392da6107d728386452e8179c90436c880cf3d7889a376eb0","license":"MIT","urls":["bzz-raw://45db8cfb3b51bedda0dca11e82cc09618e0d60a939c8029ef8657fc8ba7b4f35","dweb:/ipfs/QmZVFsbuh2baR5b7foXPQmqYdcQ2yVbc83pevGQBNbPy5F"]},"contracts/utils/StoreUtils.sol":{"keccak256":"0xbba43d74813e8af402c17b50253ac48b5e53fbf8769b4d450640596aeee9b584","license":"MIT","urls":["bzz-raw://3d9d68a8712ab5f40f465d900cb96b83962d980fab055f1326cfda81d872796c","dweb:/ipfs/QmSumakToXzU6QjVSpa96VGQqCm4QCZPDd1Z1wXnudNEb3"]},"contracts/utils/StringUtils.sol":{"keccak256":"0xd7a81598d662ccfcfe15cf9e7a854128fb42714a06cfdd7eef43a6986102ee2e","license":"MIT","urls":["bzz-raw://235ebf6c7b3ba60365a44c03849692ac0c082846716bb8cf97233b6f552208cc","dweb:/ipfs/Qme6QfWvtGd8CvHu3apLAe8DxAnr9t8jNKn1A4vw9LUvBz"]},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x85c3b9bac35a90dce9ed9b31532c3739cae432359d8d7ff59cb6712f21c7ed14","license":"MIT","urls":["bzz-raw://a084d32ad4ad5b1d4494124d7695334dbeff81c2d1846a01ef1215153dd38eed","dweb:/ipfs/QmbzDrfeogDd3n65mADjLuy97oAMgh2CtiUxKKEpM3WB8b"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16","license":"MIT","urls":["bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d","dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf","license":"MIT","urls":["bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e","dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt"]},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol":{"keccak256":"0x96db1cd720d5381123c66113f06345e8c101180be02df17e5789440f6526ec9b","license":"MIT","urls":["bzz-raw://e728d30d1c92b4628be875374a4da395ab468859e68ed86b27023708b2d88a18","dweb:/ipfs/QmQEXpkqWVQatvbwXAYadTGD3qs6KjvAiq5yx4xGdFFEbY"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d","license":"MIT","urls":["bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455","dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x16b88aca1f1c3aa38783416d86207ce6fe574fcd1993dfe54403b5c8b6c74224","license":"MIT","urls":["bzz-raw://29f3c5c687fe0d87742b013872f495e67656910530c916a69873860dc8fea812","dweb:/ipfs/QmbspfQXmbhCANqqiunUFm9fiVVQwPet2YKQoJ58km442Y"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","license":"MIT","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"]},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","license":"MIT","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"]},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","license":"MIT","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"]},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","license":"MIT","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"]},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","license":"MIT","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"]},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","license":"MIT","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"]},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a","license":"MIT","urls":["bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34","dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk"]},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x09ad04d9e2513a993bb05229a9b4afbac318ad9b2c365909d2e19d84dbf8bc58","license":"MIT","urls":["bzz-raw://1b32511e1c8289873219c5983508e29b1b8cd6828fb71f1a201577b652d5edf4","dweb:/ipfs/QmQNxLjoQkAZsy1vzN5683DHSbypMnRi1jh5ywAHnVkXew"]},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x88cd5e3bee2e8c36b8d9058fbcaa81ad5704281b25634122234b55ea853d8055","license":"MIT","urls":["bzz-raw://8dc7e7ab5b8ea36c15027ab04221b05d1c970f47a53e9fd47ead8ca665d49c7e","dweb:/ipfs/Qmeeph7fsDyfRr8vb2L8KcDEmKPb224TAayMvgqgGAnqpL"]},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76","license":"MIT","urls":["bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e","dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u"]},"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Utils.sol":{"keccak256":"0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd","license":"MIT","urls":["bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435","dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6"]},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346","license":"MIT","urls":["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710","dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"]},"lib/openzeppelin-contracts/contracts/utils/Bytes.sol":{"keccak256":"0x8140d608316521b1fd71167c3b708ebb8659da070723fc8807609553b296ee33","license":"MIT","urls":["bzz-raw://a7bf7db66869ba1e945a0390b85da2f6afc7e42a4735ca918d0d56ac90c50147","dweb:/ipfs/QmRmNyhpBpgzSdQqLtrQCYE7H7eLnVVxh2Yy4YMrySR8AR"]},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","license":"MIT","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"]},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583","license":"MIT","urls":["bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56","dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG"]},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","license":"MIT","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"]},"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":"0x36d1750bf1aa5fee9c52adb2f7857ab652daca722fc05dff533b364f67a1139a","license":"MIT","urls":["bzz-raw://2e5e7052539b7849d02f3ce25acc1dce29373c11cfae9f0bc918c54b780c549a","dweb:/ipfs/QmRGE32xNkMTo6i4pHHMxjpiu77yPwnTA25SFngw2NXJys"]},"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":"0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c","license":"MIT","urls":["bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c","dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef"]},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","license":"MIT","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"]},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","license":"MIT","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"]}},"version":1}',
|
|
2821
|
+
metadata: { compiler: { version: "0.8.34+commit.80d5c536" }, language: "Solidity", output: { abi: [{ inputs: [], stateMutability: "nonpayable", type: "constructor" }, { inputs: [{ internalType: "address", name: "target", type: "address" }], type: "error", name: "AddressEmptyCode" }, { inputs: [{ internalType: "address", name: "implementation", type: "address" }], type: "error", name: "ERC1967InvalidImplementation" }, { inputs: [], type: "error", name: "ERC1967NonPayable" }, { inputs: [], type: "error", name: "FailedCall" }, { inputs: [], type: "error", name: "InvalidInitialization" }, { inputs: [], type: "error", name: "NotInitializing" }, { inputs: [], type: "error", name: "NotRegistry" }, { inputs: [{ internalType: "address", name: "owner", type: "address" }], type: "error", name: "OwnableInvalidOwner" }, { inputs: [{ internalType: "address", name: "account", type: "address" }], type: "error", name: "OwnableUnauthorizedAccount" }, { inputs: [{ internalType: "string", name: "reason", type: "string" }], type: "error", name: "PopError" }, { inputs: [], type: "error", name: "UUPSUnauthorizedCallContext" }, { inputs: [{ internalType: "bytes32", name: "slot", type: "bytes32" }], type: "error", name: "UUPSUnsupportedProxiableUUID" }, { inputs: [{ internalType: "string", name: "baseName", type: "string", indexed: true }], type: "event", name: "BaseNameReleased", anonymous: false }, { inputs: [{ internalType: "string", name: "baseName", type: "string", indexed: true }, { internalType: "address", name: "owner", type: "address", indexed: true }, { internalType: "uint64", name: "expires", type: "uint64", indexed: false }], type: "event", name: "BaseNameReserved", anonymous: false }, { inputs: [{ internalType: "uint64", name: "version", type: "uint64", indexed: false }], type: "event", name: "Initialized", anonymous: false }, { inputs: [{ internalType: "address", name: "previousOwner", type: "address", indexed: true }, { internalType: "address", name: "newOwner", type: "address", indexed: true }], type: "event", name: "OwnershipTransferred", anonymous: false }, { inputs: [{ internalType: "uint256", name: "oldPrice", type: "uint256", indexed: false }, { internalType: "uint256", name: "newPrice", type: "uint256", indexed: false }], type: "event", name: "StartingPriceUpdated", anonymous: false }, { inputs: [{ internalType: "address", name: "implementation", type: "address", indexed: true }], type: "event", name: "Upgraded", anonymous: false }, { inputs: [], stateMutability: "view", type: "function", name: "MAX_RESERVATION_TIME", outputs: [{ internalType: "uint256", name: "", type: "uint256" }] }, { inputs: [], stateMutability: "view", type: "function", name: "UPGRADE_INTERFACE_VERSION", outputs: [{ internalType: "string", name: "", type: "string" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }], stateMutability: "pure", type: "function", name: "classifyName", outputs: [{ internalType: "enum IPopRules.PopStatus", name: "requirement", type: "uint8" }, { internalType: "string", name: "message", type: "string" }] }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "view", type: "function", name: "getBaseNameReservation", outputs: [{ internalType: "address", name: "reservationOwner", type: "address" }, { internalType: "uint64", name: "expiryTimestamp", type: "uint64" }] }, { inputs: [{ internalType: "uint256", name: "_startingPrice", type: "uint256" }, { internalType: "contract IDotnsProtocolRegistry", name: "registry", type: "address" }], stateMutability: "nonpayable", type: "function", name: "initialize" }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "pure", type: "function", name: "isBaseName", outputs: [{ internalType: "bool", name: "isBase", type: "bool" }] }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "view", type: "function", name: "isBaseNameReserved", outputs: [{ internalType: "bool", name: "isReserved", type: "bool" }, { internalType: "address", name: "reservationOwner", type: "address" }, { internalType: "uint64", name: "expiryTimestamp", type: "uint64" }] }, { inputs: [], stateMutability: "view", type: "function", name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }], stateMutability: "view", type: "function", name: "price", outputs: [{ internalType: "uint256", name: "", type: "uint256" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "view", type: "function", name: "priceWithCheck", outputs: [{ internalType: "struct IPopRules.PriceWithMeta", name: "metadata", type: "tuple", components: [{ internalType: "uint256", name: "price", type: "uint256" }, { internalType: "enum IPopRules.PopStatus", name: "status", type: "uint8" }, { internalType: "enum IPopRules.PopStatus", name: "userStatus", type: "uint8" }, { internalType: "string", name: "message", type: "string" }] }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "view", type: "function", name: "priceWithoutCheck", outputs: [{ internalType: "struct IPopRules.PriceWithMeta", name: "metadata", type: "tuple", components: [{ internalType: "uint256", name: "price", type: "uint256" }, { internalType: "enum IPopRules.PopStatus", name: "status", type: "uint8" }, { internalType: "enum IPopRules.PopStatus", name: "userStatus", type: "uint8" }, { internalType: "string", name: "message", type: "string" }] }] }, { inputs: [], stateMutability: "view", type: "function", name: "protocolRegistry", outputs: [{ internalType: "contract IDotnsProtocolRegistry", name: "", type: "address" }] }, { inputs: [], stateMutability: "view", type: "function", name: "proxiableUUID", outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "account", type: "address" }], stateMutability: "view", type: "function", name: "reachFee", outputs: [{ internalType: "uint256", name: "fee", type: "uint256" }] }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "nonpayable", type: "function", name: "releaseBaseName" }, { inputs: [], stateMutability: "nonpayable", type: "function", name: "renounceOwnership" }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }], stateMutability: "view", type: "function", name: "reservations", outputs: [{ internalType: "address", name: "owner", type: "address" }, { internalType: "uint64", name: "expires", type: "uint64" }, { internalType: "address", name: "controller", type: "address" }] }, { inputs: [{ internalType: "string", name: "name", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "nonpayable", type: "function", name: "reserveBaseName" }, { inputs: [{ internalType: "string", name: "baseName", type: "string" }, { internalType: "address", name: "userAddress", type: "address" }], stateMutability: "nonpayable", type: "function", name: "reserveBaseNameForPop" }, { inputs: [], stateMutability: "view", type: "function", name: "startingPrice", outputs: [{ internalType: "uint256", name: "", type: "uint256" }] }, { inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }], stateMutability: "view", type: "function", name: "supportsInterface", outputs: [{ internalType: "bool", name: "supported", type: "bool" }] }, { inputs: [{ internalType: "address", name: "newOwner", type: "address" }], stateMutability: "nonpayable", type: "function", name: "transferOwnership" }, { inputs: [{ internalType: "uint256", name: "newStartingPrice", type: "uint256" }], stateMutability: "nonpayable", type: "function", name: "updateStartingPrice" }, { inputs: [{ internalType: "address", name: "newImplementation", type: "address" }, { internalType: "bytes", name: "data", type: "bytes" }], stateMutability: "payable", type: "function", name: "upgradeToAndCall" }, { inputs: [], stateMutability: "pure", type: "function", name: "version", outputs: [{ internalType: "string", name: "versionString", type: "string" }] }], devdoc: { kind: "dev", methods: { "classifyName(string)": { details: "Pure; inputs are the label bytes only. Callers use the returned tier to decide which pricing and verification branch applies.", params: { name: "The name label being evaluated." }, returns: { message: "Explanation of the classification result.", requirement: "Required tier for registration." } }, constructor: { "custom:oz-upgrades-unsafe-allow": "constructor" }, "getBaseNameReservation(string)": { details: "Raw accessor: returns the stored slot regardless of expiry. Use {isBaseNameReserved} when live-window semantics are needed.", params: { baseName: "The base label without trailing digits." }, returns: { expiryTimestamp: "UNIX timestamp when the reservation expires.", reservationOwner: "The address assigned to the reservation." } }, "initialize(uint256,address)": { "custom:reverts": "InvalidInitialization", params: { _startingPrice: "Base price in wei for NoStatus users.", registry: "Protocol-level address registry used to resolve sibling contracts." } }, "isBaseName(string)": { details: "A base name has no trailing digits; lite-person labels always have at least two trailing digits, so the two spaces are disjoint.", params: { name: "The label to check." }, returns: { isBase: "True when the label has no trailing digits." } }, "isBaseNameReserved(string)": { details: "Applies the live-window predicate to the stored slot so an expired reservation reads as free.", params: { baseName: "The base label without trailing digits." }, returns: { expiryTimestamp: "UNIX timestamp when the reservation expires.", isReserved: "True if a live reservation is active.", reservationOwner: "The reservation holder (zero when not reserved)." } }, "owner()": { details: "Returns the address of the current owner." }, "price(string)": { details: "Pure length-based pricing; ignores PoP status and reservation state.", params: { name: "Domain label to price." }, returns: { _0: "Registration cost in wei." } }, "priceWithCheck(string,address)": { details: "Reverting pricing path used by the commit-reveal controller. Rejects governance-reserved names and base-name registrations held by another user. Price is a spam deterrent and is significant only for NoStatus users; verified users pay zero.", params: { name: "Domain label.", userAddress: "Registering user for the given label." }, returns: { metadata: "Price with PoP requirements and classification." } }, "priceWithoutCheck(string,address)": { details: "Non-reverting counterpart to `priceWithCheck`: surfaces the same fields, but reports a `Reserved` status through `metadata` instead of reverting when the base stem is held by another user. Used by front-ends that need to present a price and eligibility preview without forcing a transaction attempt. Governance-reserved names are not rejected here either; the caller decides what to do.", params: { name: "Domain label.", userAddress: "Registering user for the given label." }, returns: { metadata: "Price with PoP requirements and classification." } }, "proxiableUUID()": { details: "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." }, "reachFee(string,address)": { details: "Non-zero only when `account` cannot meet the label's required PoP tier; the value is the length-scaled list price. Acts as cross-payer friction at registration time and as the transfer-time floor consumed by `DotnsNameEscrow.chargeTransferFee`.", params: { account: "Account whose verification reach is being measured.", name: "Domain label being acted on." } }, "releaseBaseName(string)": { details: "Callable by controllers in the registrar's `controllers` set. Live reservations may only be cleared by the same controller that wrote them; expired reservations may be cleared by any authorised controller. Used by the PoP controller when a reservation is claimed, relinquished, or a queue head promotion leaves the slot empty.", params: { baseName: "The base label whose reservation should be cleared." } }, "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." }, "reserveBaseName(string,address)": { details: "Commit-reveal reservation path. Callable only by an authorised controller on the registrar. Reverts unless the label is classified as `PopLite`; no-ops when the slot is already live so concurrent registrations cannot stomp the original reserver.", params: { baseName: "The base label with trailing digits removed.", user: "The address receiving reservation rights." } }, "reserveBaseNameForPop(string,address)": { details: "Gateway-driven reservation path used by the PoP controller. Callable by any controller in the registrar's `controllers` set. Does not apply the lite-format classification that `reserveBaseName` enforces; the caller supplies the bare stem directly. Reverts if the slot is already held by another user and still live so the caller's local bookkeeping and PopRules state stay in lockstep. If the slot is already live for the same user, refreshes expiry to `block.timestamp + MAX_RESERVATION_TIME`.", params: { baseName: "The base label to reserve (no trailing digits).", user: "The address receiving reservation rights." } }, "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." }, "transferOwnership(address)": { details: "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." }, "updateStartingPrice(uint256)": { details: "Owner-only. The new value flows into `_priceValidatedName` on the next pricing read; no redeploy. Emits {StartingPriceUpdated}.", params: { newStartingPrice: "New base price in wei." } }, "upgradeToAndCall(address,bytes)": { "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall", details: "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." } }, version: 1 }, userdoc: { kind: "user", methods: { "MAX_RESERVATION_TIME()": { notice: "Maximum time a base name can be reserved." }, "classifyName(string)": { notice: "Classifies a name into a required PoP tier per DotNS naming rules." }, "getBaseNameReservation(string)": { notice: "Retrieves reservation information for a base name." }, "initialize(uint256,address)": { notice: "Initialises the oracle (public entry point)." }, "isBaseName(string)": { notice: "Returns whether `name` is a base name under PoP rules." }, "isBaseNameReserved(string)": { notice: "Indicates whether a base name is currently reserved." }, "price(string)": { notice: "Calculates registration cost for a label." }, "priceWithCheck(string,address)": { notice: "Calculates price with PoP classification and reservation enforcement." }, "priceWithoutCheck(string,address)": { notice: "Calculates price with PoP classification and reservation metadata, without reverting" }, "protocolRegistry()": { notice: "Protocol-level address registry for all DotNS contracts." }, "reachFee(string,address)": { notice: "Friction fee owed when `account` reaches into a label tier above its verification" }, "releaseBaseName(string)": { notice: "Clears a reservation for a base-name stem." }, "reservations(string)": { notice: "Active reservations keyed by digit-stripped base name." }, "reserveBaseName(string,address)": { notice: "Creates a reservation entry for the digit-stripped version of a name." }, "reserveBaseNameForPop(string,address)": { notice: "Writes or refreshes a reservation for a bare base-name stem." }, "startingPrice()": { notice: "Wei price for names with 9 characters and up." }, "updateStartingPrice(uint256)": { notice: "Updates the spam-deterrent starting price for NoStatus pricing." }, "version()": { notice: "Returns implementation version." } }, version: 1 } }, settings: { remappings: ["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/halmos-cheatcodes/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"], optimizer: { enabled: true, runs: 200 }, metadata: { bytecodeHash: "ipfs" }, compilationTarget: { "contracts/pop/PopRules.sol": "PopRules" }, evmVersion: "cancun", libraries: {}, viaIR: true }, sources: { "contracts/escrow/IDotnsNameEscrow.sol": { keccak256: "0x6635523fe200a1244bf01aaf55a592700a4f4af0ebfb5fad7fb5bd58e8048855", urls: ["bzz-raw://7999b1f1119b00095c11bb52d10033e9963a741eb942ae181321d6ef8bb5184b", "dweb:/ipfs/QmZ5pWhRxidxMNnCLqzQyAGTVpjyu8mB5GCJ3SnivtGRpY"], license: "MIT" }, "contracts/external/personhood/IPersonhood.sol": { keccak256: "0xea1aff2d5d7c5220b22c9e917ea404c875bff990129657462d7e9aa160b6af9e", urls: ["bzz-raw://43e3363a16e781b16ebfc321060a1516444ba784c3aa848b527d6c5f9564da35", "dweb:/ipfs/QmQ9zLQMehpubHDP6zBDuEvDF7K8hBKuu5X1gX9qJCsi83"], license: "GPL-3.0-only" }, "contracts/pop/IPopRules.sol": { keccak256: "0x138186f031e701865eb19b89aebcd724114b25b32d486cee90488b9d1b9a2915", urls: ["bzz-raw://b14c57d9bccd4194d5bb3e4baf282779650c08e109715bc4ce6c42b52d466886", "dweb:/ipfs/QmVQeF353sS9ahjza9v46CBnwFkoD3wxGnj2cSJMa5RGG5"], license: "MIT" }, "contracts/pop/PopRules.sol": { keccak256: "0xbc30f6b7b2bc57487b7b4fca17823a26428b494cd57f5bf6237cfc279a686d1e", urls: ["bzz-raw://209e3af3f02454787f8c6d0cace67293448d0da6afd0a47f048b5279012df7b4", "dweb:/ipfs/QmdUhQdwkNfEiRXzJGBCDX5aepRmYy8cLLJ3edcVCRfc8i"], license: "MIT" }, "contracts/registrars/DotnsRegistrar.sol": { keccak256: "0x6819848d9defec02d3497629da938270d18e1c1f7e7178bf909393ae95225916", urls: ["bzz-raw://da6fa64ce598f715ba4a6f7c21db88bbb70c0cde9e90dab244bdd176e2b244e4", "dweb:/ipfs/QmQuizsK4RkDzknotuPoazu45mCoXFQgFkoCC1QxHSkn8e"], license: "MIT" }, "contracts/registrars/IDotnsController.sol": { keccak256: "0x36304c2a145c90a6d07bb2630e9e599698325dfb01b4ec0f3c1dfb1853858844", urls: ["bzz-raw://7b3098427beb68f49940a93d5feca7c1b5424ee99f9531616326439df81bf0cf", "dweb:/ipfs/QmUdyDbSb2eDZyrwsg3pv31PyCe6a2VnjoamXFGr4DxvRu"], license: "MIT" }, "contracts/registrars/IDotnsRegistrar.sol": { keccak256: "0x8676a5ffab195b378e9f483b05c8ea52fab07aa20141d1d78dc88c6c2c093a6e", urls: ["bzz-raw://fd57503d29497559921fca75e636a6a579d6a5dc50099e8cd8eb35b59592eaf9", "dweb:/ipfs/QmfDCwPkEkMn1FxMnekPeYrq4Q1SLpr9qWFWUSFcJpWMP9"], license: "MIT" }, "contracts/registry/IDotnsProtocolRegistry.sol": { keccak256: "0xdc233ef72cd7eb07bf8631b4de779d2f79671b76051d1d0f81aeb5c86567269e", urls: ["bzz-raw://81f992df80f7f53854ef309c5ed76de1180e10a3af66c86a901e46fa1a1aaae5", "dweb:/ipfs/QmbL4WUsWrupbvrz8uKPhp7YEePzdE9z8GpZvrZ5DvTWws"], license: "MIT" }, "contracts/resolvers/IDotnsReverseResolver.sol": { keccak256: "0xaba5d1260aef33c19489f2f641b6c0ef026d24c9095cf69667818c6a211826e8", urls: ["bzz-raw://4d99905afa1cd71331cb4f602e0c9e0743a903ebc8e70657159af25c3503d0de", "dweb:/ipfs/QmRWpZu7TsJ6SVcsDomaK5CGrQSPhYYWgkHayxyuBqQqie"], license: "MIT" }, "contracts/store/IDotnsStore.sol": { keccak256: "0xc477b3a4354a66aa9565b7e045504127389956eb4ba0b9c981631f276b598cca", urls: ["bzz-raw://690a2b096d0779395b22062839e2d37338c3db03c248c05779dbf2ffffeb0c71", "dweb:/ipfs/QmYVUBLHXGmn71YfYqMFjxbcQtnyPiZwQoBshwwugCZHnv"], license: "MIT" }, "contracts/store/ILabelStore.sol": { keccak256: "0xe6097169be43b592b895af7c64d362047f4619fa110ca79d4174167e364465b8", urls: ["bzz-raw://756113c8136ac761b2e3bdc0603f4a43f5a0dd92db4d031e019329de064373be", "dweb:/ipfs/QmRB61SofopsXD1bkRFapZmRnpissh6qrbJDHRJHtTcjhr"], license: "MIT" }, "contracts/store/IStoreFactory.sol": { keccak256: "0x50eeb2c770feb6392bbfc449bb0c703d99cd440a5db6d0d82bedfdbe1cd3293b", urls: ["bzz-raw://a50699a47ca893f3aa9b13496f0a6e2201acbd3e7871b4579a25c7d4d773b44a", "dweb:/ipfs/QmXBMBzZhdv12obarQL6WLFzFxgnmXb8cEt4CHiMkUZTJd"], license: "MIT" }, "contracts/utils/DotnsConstants.sol": { keccak256: "0x0336dfe0c896ce13bdce9f63238d344ac900a74fcbc5b0b061f9ab92799862dc", urls: ["bzz-raw://5254d400120263b327c8bd58ed75275a98c4bf5c590090fbb10123beb0dc1298", "dweb:/ipfs/QmZoJtKyxdr2MH8ChBjkFjbxSk3HU2gukPo1S3fV9dMUwr"], license: "MIT" }, "contracts/utils/LabelUtils.sol": { keccak256: "0x8c6acb887fe9784392da6107d728386452e8179c90436c880cf3d7889a376eb0", urls: ["bzz-raw://45db8cfb3b51bedda0dca11e82cc09618e0d60a939c8029ef8657fc8ba7b4f35", "dweb:/ipfs/QmZVFsbuh2baR5b7foXPQmqYdcQ2yVbc83pevGQBNbPy5F"], license: "MIT" }, "contracts/utils/StoreUtils.sol": { keccak256: "0xbba43d74813e8af402c17b50253ac48b5e53fbf8769b4d450640596aeee9b584", urls: ["bzz-raw://3d9d68a8712ab5f40f465d900cb96b83962d980fab055f1326cfda81d872796c", "dweb:/ipfs/QmSumakToXzU6QjVSpa96VGQqCm4QCZPDd1Z1wXnudNEb3"], license: "MIT" }, "contracts/utils/StringUtils.sol": { keccak256: "0xd7a81598d662ccfcfe15cf9e7a854128fb42714a06cfdd7eef43a6986102ee2e", urls: ["bzz-raw://235ebf6c7b3ba60365a44c03849692ac0c082846716bb8cf97233b6f552208cc", "dweb:/ipfs/Qme6QfWvtGd8CvHu3apLAe8DxAnr9t8jNKn1A4vw9LUvBz"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { keccak256: "0x85c3b9bac35a90dce9ed9b31532c3739cae432359d8d7ff59cb6712f21c7ed14", urls: ["bzz-raw://a084d32ad4ad5b1d4494124d7695334dbeff81c2d1846a01ef1215153dd38eed", "dweb:/ipfs/QmbzDrfeogDd3n65mADjLuy97oAMgh2CtiUxKKEpM3WB8b"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { keccak256: "0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16", urls: ["bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d", "dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": { keccak256: "0x4918e374e9ce84e9b196486bafbd46851d5e72ab315e31f0b1d7c443dcfea5bf", urls: ["bzz-raw://2ced247afc54a93a13922ebbd63add61130abe483ab5b5b78e7e991d564d150e", "dweb:/ipfs/QmTfxjcTgfekiguegjvYMyfqhyRNffui17f8xi86BCZNVt"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol": { keccak256: "0x96db1cd720d5381123c66113f06345e8c101180be02df17e5789440f6526ec9b", urls: ["bzz-raw://e728d30d1c92b4628be875374a4da395ab468859e68ed86b27023708b2d88a18", "dweb:/ipfs/QmQEXpkqWVQatvbwXAYadTGD3qs6KjvAiq5yx4xGdFFEbY"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { keccak256: "0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d", urls: ["bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455", "dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { keccak256: "0x16b88aca1f1c3aa38783416d86207ce6fe574fcd1993dfe54403b5c8b6c74224", urls: ["bzz-raw://29f3c5c687fe0d87742b013872f495e67656910530c916a69873860dc8fea812", "dweb:/ipfs/QmbspfQXmbhCANqqiunUFm9fiVVQwPet2YKQoJ58km442Y"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol": { keccak256: "0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5", urls: ["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c", "dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol": { keccak256: "0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b", urls: ["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422", "dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"], 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/proxy/ERC1967/ERC1967Utils.sol": { keccak256: "0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618", urls: ["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a", "dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { keccak256: "0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b", urls: ["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d", "dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { keccak256: "0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05", urls: ["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08", "dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol": { keccak256: "0x1a26353563a2c63b4120ea0b94727253eeff84fe2241d42c1452308b9080e66a", urls: ["bzz-raw://49a95e36d267828b4357186a79917002d616d8634e25d1f9818e2354cd2e7d34", "dweb:/ipfs/QmWDkqE4KkyLAS2UkLsRgXE1FGB1qfEgBC3zMXBVsVWfdk"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": { keccak256: "0x09ad04d9e2513a993bb05229a9b4afbac318ad9b2c365909d2e19d84dbf8bc58", urls: ["bzz-raw://1b32511e1c8289873219c5983508e29b1b8cd6828fb71f1a201577b652d5edf4", "dweb:/ipfs/QmQNxLjoQkAZsy1vzN5683DHSbypMnRi1jh5ywAHnVkXew"], 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/token/ERC721/extensions/IERC721Metadata.sol": { keccak256: "0xf46268c37522320bb2119a5a394bc5c739a95c0c574c8d08e8c643f4d06e5c76", urls: ["bzz-raw://517e4b295f35b9947c72ad7379a6089439ece7bb6f4a2ea0a159da13046c039e", "dweb:/ipfs/QmZXzkSfLUbvujig3zVbpDHykpHhqLpvQtdiN3B5j4TA3u"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Utils.sol": { keccak256: "0xc7efbc23214ad7dced8bf2249460f4bda114d57f6a0079f84040654280f455bd", urls: ["bzz-raw://1f5bd44efca8c8c0d74439e7b808d1f9c4af1df78f91fef8e8bbca8104645435", "dweb:/ipfs/Qmb42XSd8MKsEitp42sZkSFGqDRigk6QgGXtiJyJqUZJJ6"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { keccak256: "0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346", urls: ["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710", "dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Bytes.sol": { keccak256: "0x8140d608316521b1fd71167c3b708ebb8659da070723fc8807609553b296ee33", urls: ["bzz-raw://a7bf7db66869ba1e945a0390b85da2f6afc7e42a4735ca918d0d56ac90c50147", "dweb:/ipfs/QmRmNyhpBpgzSdQqLtrQCYE7H7eLnVVxh2Yy4YMrySR8AR"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Errors.sol": { keccak256: "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123", urls: ["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf", "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol": { keccak256: "0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583", urls: ["bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56", "dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG"], 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/StorageSlot.sol": { keccak256: "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97", urls: ["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b", "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { keccak256: "0x36d1750bf1aa5fee9c52adb2f7857ab652daca722fc05dff533b364f67a1139a", urls: ["bzz-raw://2e5e7052539b7849d02f3ce25acc1dce29373c11cfae9f0bc918c54b780c549a", "dweb:/ipfs/QmRGE32xNkMTo6i4pHHMxjpiu77yPwnTA25SFngw2NXJys"], 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: "0x09e3f1c72d4c5cbe8e2644ab7313f8f7177533ae2f4c24cdcbbeaf520a73734c", urls: ["bzz-raw://93208401215d539fa2d81626b207c1f611def7883d0e447b3b5969ebaa7b3c2c", "dweb:/ipfs/QmXPxDnQPx8LAweX5ZJqEcwkvs59kP4c64VVDG1Jjq1mef"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { keccak256: "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54", urls: ["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8", "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { keccak256: "0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3", urls: ["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03", "dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"], license: "MIT" } }, version: 1 },
|
|
2822
|
+
storageLayout: { storage: [{ astId: 2235, contract: "contracts/pop/PopRules.sol:PopRules", label: "startingPrice", offset: 0, slot: "0", type: "t_uint256" }, { astId: 2241, contract: "contracts/pop/PopRules.sol:PopRules", label: "reservations", offset: 0, slot: "1", type: "t_mapping(t_string_memory_ptr,t_struct(Reservation)2080_storage)" }, { astId: 2249, contract: "contracts/pop/PopRules.sol:PopRules", label: "protocolRegistry", offset: 0, slot: "2", type: "t_contract(IDotnsProtocolRegistry)8949" }, { astId: 2253, contract: "contracts/pop/PopRules.sol:PopRules", label: "__gap", offset: 0, slot: "3", type: "t_array(t_uint256)50_storage" }], types: { t_address: { encoding: "inplace", label: "address", numberOfBytes: "20" }, "t_array(t_uint256)50_storage": { encoding: "inplace", label: "uint256[50]", numberOfBytes: "1600", base: "t_uint256" }, "t_contract(IDotnsProtocolRegistry)8949": { encoding: "inplace", label: "contract IDotnsProtocolRegistry", numberOfBytes: "20" }, "t_mapping(t_string_memory_ptr,t_struct(Reservation)2080_storage)": { encoding: "mapping", key: "t_string_memory_ptr", label: "mapping(string => struct IPopRules.Reservation)", numberOfBytes: "32", value: "t_struct(Reservation)2080_storage" }, t_string_memory_ptr: { encoding: "bytes", label: "string", numberOfBytes: "32" }, "t_struct(Reservation)2080_storage": { encoding: "inplace", label: "struct IPopRules.Reservation", numberOfBytes: "64", members: [{ astId: 2075, contract: "contracts/pop/PopRules.sol:PopRules", label: "owner", offset: 0, slot: "0", type: "t_address" }, { astId: 2077, contract: "contracts/pop/PopRules.sol:PopRules", label: "expires", offset: 20, slot: "0", type: "t_uint64" }, { astId: 2079, contract: "contracts/pop/PopRules.sol:PopRules", label: "controller", offset: 0, slot: "1", type: "t_address" }] }, t_uint256: { encoding: "inplace", label: "uint256", numberOfBytes: "32" }, t_uint64: { encoding: "inplace", label: "uint64", numberOfBytes: "8" } } },
|
|
2823
|
+
ast: { absolutePath: "contracts/pop/PopRules.sol", id: 3421, exportedSymbols: { DotnsConstants: [12398], DotnsRegistrar: [6098], ERC165Upgradeable: [54754], IDotnsController: [7245], IDotnsProtocolRegistry: [8949], IPersonhood: [2017], IPopRules: [2195], Initializable: [56129], OwnableUpgradeable: [53580], PopRules: [3420], StringUtils: [13173], UUPSUpgradeable: [56295] }, nodeType: "SourceUnit", src: "32:17277:7", nodes: [{ id: 2197, nodeType: "PragmaDirective", src: "32:24:7", nodes: [], literals: ["solidity", "^", "0.8", ".34"] }, { id: 2199, nodeType: "ImportDirective", src: "58:96:7", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", file: "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 53585, symbolAliases: [{ foreign: { id: 2198, name: "Initializable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 56129, src: "66:13:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2201, nodeType: "ImportDirective", src: "155:100:7", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol", file: "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 53589, symbolAliases: [{ foreign: { id: 2200, name: "UUPSUpgradeable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 56295, src: "163:15:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2203, nodeType: "ImportDirective", src: "256:107:7", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", file: "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 53581, symbolAliases: [{ foreign: { id: 2202, name: "OwnableUpgradeable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 53580, src: "269:18:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2205, nodeType: "ImportDirective", src: "364:118:7", nodes: [], absolutePath: "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", file: "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 54755, symbolAliases: [{ foreign: { id: 2204, name: "ERC165Upgradeable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 54754, src: "377:17:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2207, nodeType: "ImportDirective", src: "483:53:7", nodes: [], absolutePath: "contracts/utils/StringUtils.sol", file: "../utils/StringUtils.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 13174, symbolAliases: [{ foreign: { id: 2206, name: "StringUtils", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 13173, src: "491:11:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2209, nodeType: "ImportDirective", src: "537:42:7", nodes: [], absolutePath: "contracts/pop/IPopRules.sol", file: "./IPopRules.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 2196, symbolAliases: [{ foreign: { id: 2208, name: "IPopRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2195, src: "545:9:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2211, nodeType: "ImportDirective", src: "580:78:7", nodes: [], absolutePath: "contracts/registry/IDotnsProtocolRegistry.sol", file: "../registry/IDotnsProtocolRegistry.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 8950, symbolAliases: [{ foreign: { id: 2210, name: "IDotnsProtocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8949, src: "588:22:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2213, nodeType: "ImportDirective", src: "659:68:7", nodes: [], absolutePath: "contracts/registrars/IDotnsController.sol", file: "../registrars/IDotnsController.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 7246, symbolAliases: [{ foreign: { id: 2212, name: "IDotnsController", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 7245, src: "667:16:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2215, nodeType: "ImportDirective", src: "728:64:7", nodes: [], absolutePath: "contracts/registrars/DotnsRegistrar.sol", file: "../registrars/DotnsRegistrar.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 6099, symbolAliases: [{ foreign: { id: 2214, name: "DotnsRegistrar", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 6098, src: "736:14:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2217, nodeType: "ImportDirective", src: "793:59:7", nodes: [], absolutePath: "contracts/utils/DotnsConstants.sol", file: "../utils/DotnsConstants.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 12399, symbolAliases: [{ foreign: { id: 2216, name: "DotnsConstants", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 12398, src: "801:14:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 2219, nodeType: "ImportDirective", src: "853:67:7", nodes: [], absolutePath: "contracts/external/personhood/IPersonhood.sol", file: "../external/personhood/IPersonhood.sol", nameLocation: "-1:-1:-1", scope: 3421, sourceUnit: 2018, symbolAliases: [{ foreign: { id: 2218, name: "IPersonhood", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2017, src: "861:11:7", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 3420, nodeType: "ContractDefinition", src: "1077:16231:7", nodes: [{ id: 2232, nodeType: "UsingForDirective", src: "1205:24:7", nodes: [], global: false, libraryName: { id: 2231, name: "StringUtils", nameLocations: ["1211:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 13173, src: "1211:11:7" } }, { id: 2235, nodeType: "VariableDeclaration", src: "1297:28:7", nodes: [], constant: false, documentation: { id: 2233, nodeType: "StructuredDocumentation", src: "1235:57:7", text: "@notice Wei price for names with 9 characters and up." }, functionSelector: "d6fbf202", mutability: "mutable", name: "startingPrice", nameLocation: "1312:13:7", scope: 3420, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2234, name: "uint256", nodeType: "ElementaryTypeName", src: "1297:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "public" }, { id: 2241, nodeType: "VariableDeclaration", src: "1403:71:7", nodes: [], constant: false, documentation: { id: 2236, nodeType: "StructuredDocumentation", src: "1332:66:7", text: "@notice Active reservations keyed by digit-stripped base name." }, functionSelector: "c5c95048", mutability: "mutable", name: "reservations", nameLocation: "1462:12:7", scope: 3420, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string => struct IPopRules.Reservation)" }, typeName: { id: 2240, keyName: "baseName", keyNameLocation: "1418:8:7", keyType: { id: 2237, name: "string", nodeType: "ElementaryTypeName", src: "1411:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, nodeType: "Mapping", src: "1403:51:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string => struct IPopRules.Reservation)" }, valueName: "reservation", valueNameLocation: "1442:11:7", valueType: { id: 2239, nodeType: "UserDefinedTypeName", pathNode: { id: 2238, name: "Reservation", nameLocations: ["1430:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "1430:11:7" }, referencedDeclaration: 2080, src: "1430:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } } }, visibility: "public" }, { id: 2245, nodeType: "VariableDeclaration", src: "1539:55:7", nodes: [], constant: true, documentation: { id: 2242, nodeType: "StructuredDocumentation", src: "1481:53:7", text: "@notice Maximum time a base name can be reserved." }, functionSelector: "68e344e9", mutability: "constant", name: "MAX_RESERVATION_TIME", nameLocation: "1563:20:7", scope: 3420, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2243, name: "uint256", nodeType: "ElementaryTypeName", src: "1539:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, value: { hexValue: "3132", id: 2244, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1586:8:7", subdenomination: "weeks", typeDescriptions: { typeIdentifier: "t_rational_7257600_by_1", typeString: "int_const 7257600" }, value: "12" }, visibility: "public" }, { id: 2249, nodeType: "VariableDeclaration", src: "1674:46:7", nodes: [], constant: false, documentation: { id: 2246, nodeType: "StructuredDocumentation", src: "1601:68:7", text: "@notice Protocol-level address registry for all DotNS contracts." }, functionSelector: "7656419f", mutability: "mutable", name: "protocolRegistry", nameLocation: "1704:16:7", scope: 3420, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" }, typeName: { id: 2248, nodeType: "UserDefinedTypeName", pathNode: { id: 2247, name: "IDotnsProtocolRegistry", nameLocations: ["1674:22:7"], nodeType: "IdentifierPath", referencedDeclaration: 8949, src: "1674:22:7" }, referencedDeclaration: 8949, src: "1674:22:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, visibility: "public" }, { id: 2253, nodeType: "VariableDeclaration", src: "1785:25:7", nodes: [], constant: false, mutability: "mutable", name: "__gap", nameLocation: "1805:5:7", scope: 3420, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_array$_t_uint256_$50_storage", typeString: "uint256[50]" }, typeName: { baseType: { id: 2250, name: "uint256", nodeType: "ElementaryTypeName", src: "1785:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 2252, length: { hexValue: "3530", id: 2251, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1793:2:7", typeDescriptions: { typeIdentifier: "t_rational_50_by_1", typeString: "int_const 50" }, value: "50" }, nodeType: "ArrayTypeName", src: "1785:11:7", typeDescriptions: { typeIdentifier: "t_array$_t_uint256_$50_storage_ptr", typeString: "uint256[50]" } }, visibility: "private" }, { id: 2261, nodeType: "ModifierDefinition", src: "1891:67:7", nodes: [], body: { id: 2260, nodeType: "Block", src: "1915:43:7", nodes: [], statements: [{ expression: { arguments: [], expression: { argumentTypes: [], id: 2256, name: "_onlyRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3308, src: "1925:13:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$__$returns$__$", typeString: "function () view" } }, id: 2257, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1925:15:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2258, nodeType: "ExpressionStatement", src: "1925:15:7" }, { id: 2259, nodeType: "PlaceholderStatement", src: "1950:1:7" }] }, documentation: { id: 2254, nodeType: "StructuredDocumentation", src: "1817:69:7", text: "@notice Restricts function to any registry-authorised controller." }, name: "onlyRegistry", nameLocation: "1900:12:7", parameters: { id: 2255, nodeType: "ParameterList", parameters: [], src: "1912:2:7" }, virtual: false, visibility: "internal" }, { id: 2269, nodeType: "FunctionDefinition", src: "2017:53:7", nodes: [], body: { id: 2268, nodeType: "Block", src: "2031:39:7", nodes: [], statements: [{ expression: { arguments: [], expression: { argumentTypes: [], id: 2265, name: "_disableInitializers", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 56083, src: "2041:20:7", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$__$returns$__$", typeString: "function ()" } }, id: 2266, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2041:22:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2267, nodeType: "ExpressionStatement", src: "2041:22:7" }] }, documentation: { id: 2262, nodeType: "StructuredDocumentation", src: "1964:48:7", text: "@custom:oz-upgrades-unsafe-allow constructor" }, implemented: true, kind: "constructor", modifiers: [], name: "", nameLocation: "-1:-1:-1", parameters: { id: 2263, nodeType: "ParameterList", parameters: [], src: "2028:2:7" }, returnParameters: { id: 2264, nodeType: "ParameterList", parameters: [], src: "2031:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "public" }, { id: 2297, nodeType: "FunctionDefinition", src: "2299:298:7", nodes: [], body: { id: 2296, nodeType: "Block", src: "2447:150:7", nodes: [], statements: [{ expression: { arguments: [{ expression: { id: 2281, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "2472:3:7", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 2282, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "2476:6:7", memberName: "sender", nodeType: "MemberAccess", src: "2472:10:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 2280, name: "__Ownable_init", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 53440, src: "2457:14:7", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$_t_address_$returns$__$", typeString: "function (address)" } }, id: 2283, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2457:26:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2284, nodeType: "ExpressionStatement", src: "2457:26:7" }, { expression: { arguments: [], expression: { argumentTypes: [], id: 2285, name: "__ERC165_init", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 54731, src: "2493:13:7", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$__$returns$__$", typeString: "function ()" } }, id: 2286, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2493:15:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2287, nodeType: "ExpressionStatement", src: "2493:15:7" }, { expression: { arguments: [{ id: 2289, name: "_startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2272, src: "2538:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2288, name: "updateStartingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2342, src: "2518:19:7", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$_t_uint256_$returns$__$", typeString: "function (uint256)" } }, id: 2290, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2518:35:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2291, nodeType: "ExpressionStatement", src: "2518:35:7" }, { expression: { id: 2294, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 2292, name: "protocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2249, src: "2563:16:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2293, name: "registry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2275, src: "2582:8:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, src: "2563:27:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, id: 2295, nodeType: "ExpressionStatement", src: "2563:27:7" }] }, documentation: { id: 2270, nodeType: "StructuredDocumentation", src: "2076:218:7", text: `@notice Initialises the oracle with pricing parameters.
|
|
2824
|
+
@param _startingPrice Base price in wei for NoStatus users.
|
|
2825
|
+
@param registry Protocol-level address registry used to resolve sibling contracts.` }, implemented: true, kind: "function", modifiers: [{ id: 2278, kind: "modifierInvocation", modifierName: { id: 2277, name: "onlyInitializing", nameLocations: ["2426:16:7"], nodeType: "IdentifierPath", referencedDeclaration: 56024, src: "2426:16:7" }, nodeType: "ModifierInvocation", src: "2426:16:7" }], name: "_popRulesInit", nameLocation: "2308:13:7", parameters: { id: 2276, nodeType: "ParameterList", parameters: [{ constant: false, id: 2272, mutability: "mutable", name: "_startingPrice", nameLocation: "2339:14:7", nodeType: "VariableDeclaration", scope: 2297, src: "2331:22:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2271, name: "uint256", nodeType: "ElementaryTypeName", src: "2331:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }, { constant: false, id: 2275, mutability: "mutable", name: "registry", nameLocation: "2386:8:7", nodeType: "VariableDeclaration", scope: 2297, src: "2363:31:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" }, typeName: { id: 2274, nodeType: "UserDefinedTypeName", pathNode: { id: 2273, name: "IDotnsProtocolRegistry", nameLocations: ["2363:22:7"], nodeType: "IdentifierPath", referencedDeclaration: 8949, src: "2363:22:7" }, referencedDeclaration: 8949, src: "2363:22:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, visibility: "internal" }], src: "2321:79:7" }, returnParameters: { id: 2279, nodeType: "ParameterList", parameters: [], src: "2447:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "internal" }, { id: 2314, nodeType: "FunctionDefinition", src: "2869:194:7", nodes: [], body: { id: 2313, nodeType: "Block", src: "3007:56:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2309, name: "_startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2300, src: "3031:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, { id: 2310, name: "registry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2303, src: "3047:8:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }, { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" }], id: 2308, name: "_popRulesInit", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2297, src: "3017:13:7", typeDescriptions: { typeIdentifier: "t_function_internal_nonpayable$_t_uint256_$_t_contract$_IDotnsProtocolRegistry_$8949_$returns$__$", typeString: "function (uint256,contract IDotnsProtocolRegistry)" } }, id: 2311, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3017:39:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2312, nodeType: "ExpressionStatement", src: "3017:39:7" }] }, documentation: { id: 2298, nodeType: "StructuredDocumentation", src: "2603:261:7", text: `@notice Initialises the oracle (public entry point).
|
|
2826
|
+
@param _startingPrice Base price in wei for NoStatus users.
|
|
2827
|
+
@param registry Protocol-level address registry used to resolve sibling contracts.
|
|
2828
|
+
@custom:reverts InvalidInitialization` }, functionSelector: "da35a26f", implemented: true, kind: "function", modifiers: [{ id: 2306, kind: "modifierInvocation", modifierName: { id: 2305, name: "initializer", nameLocations: ["2991:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 55969, src: "2991:11:7" }, nodeType: "ModifierInvocation", src: "2991:11:7" }], name: "initialize", nameLocation: "2878:10:7", parameters: { id: 2304, nodeType: "ParameterList", parameters: [{ constant: false, id: 2300, mutability: "mutable", name: "_startingPrice", nameLocation: "2906:14:7", nodeType: "VariableDeclaration", scope: 2314, src: "2898:22:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2299, name: "uint256", nodeType: "ElementaryTypeName", src: "2898:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }, { constant: false, id: 2303, mutability: "mutable", name: "registry", nameLocation: "2953:8:7", nodeType: "VariableDeclaration", scope: 2314, src: "2930:31:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" }, typeName: { id: 2302, nodeType: "UserDefinedTypeName", pathNode: { id: 2301, name: "IDotnsProtocolRegistry", nameLocations: ["2930:22:7"], nodeType: "IdentifierPath", referencedDeclaration: 8949, src: "2930:22:7" }, referencedDeclaration: 8949, src: "2930:22:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, visibility: "internal" }], src: "2888:79:7" }, returnParameters: { id: 2307, nodeType: "ParameterList", parameters: [], src: "3007:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "public" }, { id: 2342, nodeType: "FunctionDefinition", src: "3099:279:7", nodes: [], body: { id: 2341, nodeType: "Block", src: "3180:198:7", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2326, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2324, name: "newStartingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2317, src: "3198:16:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { hexValue: "30", id: 2325, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "3217:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "3198:20:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "5072696365206d7573742062652067726561746572207468616e2030", id: 2328, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "3229:30:7", typeDescriptions: { typeIdentifier: "t_stringliteral_f496d2a6b8c6dfd2fdeb51133639f7cbcc6985234f7207231dd11f4a16998dde", typeString: 'literal_string "Price must be greater than 0"' }, value: "Price must be greater than 0" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_f496d2a6b8c6dfd2fdeb51133639f7cbcc6985234f7207231dd11f4a16998dde", typeString: 'literal_string "Price must be greater than 0"' }], id: 2327, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "3220:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 2329, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3220:40:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 2323, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "3190:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 2330, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3190:71:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2331, nodeType: "ExpressionStatement", src: "3190:71:7" }, { eventCall: { arguments: [{ id: 2333, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2235, src: "3297:13:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, { id: 2334, name: "newStartingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2317, src: "3312:16:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }, { typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2332, name: "StartingPriceUpdated", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2052, src: "3276:20:7", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", typeString: "function (uint256,uint256)" } }, id: 2335, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3276:53:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2336, nodeType: "EmitStatement", src: "3271:58:7" }, { expression: { id: 2339, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 2337, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2235, src: "3339:13:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2338, name: "newStartingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2317, src: "3355:16:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "3339:32:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 2340, nodeType: "ExpressionStatement", src: "3339:32:7" }] }, baseFunctions: [2097], documentation: { id: 2315, nodeType: "StructuredDocumentation", src: "3069:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "f6d3dec2", implemented: true, kind: "function", modifiers: [{ id: 2321, kind: "modifierInvocation", modifierName: { id: 2320, name: "onlyOwner", nameLocations: ["3170:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 53475, src: "3170:9:7" }, nodeType: "ModifierInvocation", src: "3170:9:7" }], name: "updateStartingPrice", nameLocation: "3108:19:7", overrides: { id: 2319, nodeType: "OverrideSpecifier", overrides: [], src: "3161:8:7" }, parameters: { id: 2318, nodeType: "ParameterList", parameters: [{ constant: false, id: 2317, mutability: "mutable", name: "newStartingPrice", nameLocation: "3136:16:7", nodeType: "VariableDeclaration", scope: 2342, src: "3128:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2316, name: "uint256", nodeType: "ElementaryTypeName", src: "3128:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "3127:26:7" }, returnParameters: { id: 2322, nodeType: "ParameterList", parameters: [], src: "3180:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "public" }, { id: 2363, nodeType: "FunctionDefinition", src: "3414:246:7", nodes: [], body: { id: 2362, nodeType: "Block", src: "3570:90:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2355, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2345, src: "3603:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2354, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "3580:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2356, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3580:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2357, nodeType: "ExpressionStatement", src: "3580:28:7" }, { expression: { arguments: [{ id: 2359, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2345, src: "3648:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2358, name: "_classifyValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3222, src: "3625:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 2360, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3625:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, functionReturnParameters: 2353, id: 2361, nodeType: "Return", src: "3618:35:7" }] }, baseFunctions: [2091], documentation: { id: 2343, nodeType: "StructuredDocumentation", src: "3384:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "3017fa33", implemented: true, kind: "function", modifiers: [], name: "classifyName", nameLocation: "3423:12:7", overrides: { id: 2347, nodeType: "OverrideSpecifier", overrides: [], src: "3494:8:7" }, parameters: { id: 2346, nodeType: "ParameterList", parameters: [{ constant: false, id: 2345, mutability: "mutable", name: "name", nameLocation: "3452:4:7", nodeType: "VariableDeclaration", scope: 2363, src: "3436:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2344, name: "string", nodeType: "ElementaryTypeName", src: "3436:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "3435:22:7" }, returnParameters: { id: 2353, nodeType: "ParameterList", parameters: [{ constant: false, id: 2350, mutability: "mutable", name: "requirement", nameLocation: "3530:11:7", nodeType: "VariableDeclaration", scope: 2363, src: "3520:21:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2349, nodeType: "UserDefinedTypeName", pathNode: { id: 2348, name: "PopStatus", nameLocations: ["3520:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "3520:9:7" }, referencedDeclaration: 2036, src: "3520:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 2352, mutability: "mutable", name: "message", nameLocation: "3557:7:7", nodeType: "VariableDeclaration", scope: 2363, src: "3543:21:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 2351, name: "string", nodeType: "ElementaryTypeName", src: "3543:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "3519:46:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "public" }, { id: 2442, nodeType: "FunctionDefinition", src: "3696:1279:7", nodes: [], body: { id: 2441, nodeType: "Block", src: "3845:1130:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2375, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2366, src: "3878:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2374, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "3855:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2376, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3855:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2377, nodeType: "ExpressionStatement", src: "3855:28:7" }, { assignments: [2380, null], declarations: [{ constant: false, id: 2380, mutability: "mutable", name: "requiredStatus", nameLocation: "3905:14:7", nodeType: "VariableDeclaration", scope: 2441, src: "3895:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2379, nodeType: "UserDefinedTypeName", pathNode: { id: 2378, name: "PopStatus", nameLocations: ["3895:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "3895:9:7" }, referencedDeclaration: 2036, src: "3895:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, null], id: 2384, initialValue: { arguments: [{ id: 2382, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2366, src: "3947:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2381, name: "_classifyValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3222, src: "3924:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 2383, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3924:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "3894:58:7" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2389, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2386, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2380, src: "3983:14:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2387, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "4001:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2388, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "4011:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "4001:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "3983:35:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "42617365207265736572766174696f6e2072657175697265732061206c6974652d656c696769626c65206e616d65", id: 2391, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "4041:48:7", typeDescriptions: { typeIdentifier: "t_stringliteral_d7191ec14fb29d6cbf8d7745d3989620c29418d9b4a8e8dfed3f3a2e83cf3d9b", typeString: 'literal_string "Base reservation requires a lite-eligible name"' }, value: "Base reservation requires a lite-eligible name" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_d7191ec14fb29d6cbf8d7745d3989620c29418d9b4a8e8dfed3f3a2e83cf3d9b", typeString: 'literal_string "Base reservation requires a lite-eligible name"' }], id: 2390, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "4032:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 2392, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4032:58:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 2385, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "3962:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 2393, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "3962:138:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2394, nodeType: "ExpressionStatement", src: "3962:138:7" }, { assignments: [2396], declarations: [{ constant: false, id: 2396, mutability: "mutable", name: "strippedBase", nameLocation: "4125:12:7", nodeType: "VariableDeclaration", scope: 2441, src: "4111:26:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 2395, name: "string", nodeType: "ElementaryTypeName", src: "4111:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 2400, initialValue: { arguments: [{ id: 2398, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2366, src: "4153:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2397, name: "_stripDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3133, src: "4140:12:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (string memory)" } }, id: 2399, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4140:18:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "VariableDeclarationStatement", src: "4111:47:7" }, { assignments: [2403], declarations: [{ constant: false, id: 2403, mutability: "mutable", name: "existingReservation", nameLocation: "4188:19:7", nodeType: "VariableDeclaration", scope: 2441, src: "4169:38:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 2402, nodeType: "UserDefinedTypeName", pathNode: { id: 2401, name: "Reservation", nameLocations: ["4169:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "4169:11:7" }, referencedDeclaration: 2080, src: "4169:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 2407, initialValue: { baseExpression: { id: 2404, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "4210:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 2406, indexExpression: { id: 2405, name: "strippedBase", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2396, src: "4223:12:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "4210:26:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "4169:67:7" }, { condition: { id: 2411, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "!", prefix: true, src: "4250:29:7", subExpression: { arguments: [{ id: 2409, name: "existingReservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2403, src: "4259:19:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" }], id: 2408, name: "_isLive", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3001, src: "4251:7:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_struct$_Reservation_$2080_memory_ptr_$returns$_t_bool_$", typeString: "function (struct IPopRules.Reservation memory) view returns (bool)" } }, id: 2410, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4251:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2440, nodeType: "IfStatement", src: "4246:723:7", trueBody: { id: 2439, nodeType: "Block", src: "4281:688:7", statements: [{ assignments: [2413], declarations: [{ constant: false, id: 2413, mutability: "mutable", name: "expiryTime", nameLocation: "4688:10:7", nodeType: "VariableDeclaration", scope: 2439, src: "4681:17:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 2412, name: "uint64", nodeType: "ElementaryTypeName", src: "4681:6:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], id: 2421, initialValue: { arguments: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2419, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2416, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "4708:5:7", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 2417, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "4714:9:7", memberName: "timestamp", nodeType: "MemberAccess", src: "4708:15:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "+", rightExpression: { id: 2418, name: "MAX_RESERVATION_TIME", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2245, src: "4726:20:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "4708:38:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2415, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4701:6:7", typeDescriptions: { typeIdentifier: "t_type$_t_uint64_$", typeString: "type(uint64)" }, typeName: { id: 2414, name: "uint64", nodeType: "ElementaryTypeName", src: "4701:6:7", typeDescriptions: {} } }, id: 2420, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4701:46:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "VariableDeclarationStatement", src: "4681:66:7" }, { expression: { id: 2431, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 2422, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "4761:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 2424, indexExpression: { id: 2423, name: "strippedBase", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2396, src: "4774:12:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "4761:26:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ id: 2426, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2368, src: "4826:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 2427, name: "expiryTime", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2413, src: "4848:10:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, { expression: { id: 2428, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "4872:3:7", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 2429, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "4876:6:7", memberName: "sender", nodeType: "MemberAccess", src: "4872:10:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_uint64", typeString: "uint64" }, { typeIdentifier: "t_address", typeString: "address" }], id: 2425, name: "Reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2080, src: "4806:11:7", typeDescriptions: { typeIdentifier: "t_type$_t_struct$_Reservation_$2080_storage_ptr_$", typeString: "type(struct IPopRules.Reservation storage pointer)" } }, id: 2430, isConstant: false, isLValue: false, isPure: false, kind: "structConstructorCall", lValueRequested: false, nameLocations: ["4819:5:7", "4839:7:7", "4860:10:7"], names: ["owner", "expires", "controller"], nodeType: "FunctionCall", src: "4806:78:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, src: "4761:123:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, id: 2432, nodeType: "ExpressionStatement", src: "4761:123:7" }, { eventCall: { arguments: [{ id: 2434, name: "strippedBase", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2396, src: "4920:12:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, { id: 2435, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2368, src: "4934:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 2436, name: "expiryTime", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2413, src: "4947:10:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_memory_ptr", typeString: "string memory" }, { typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_uint64", typeString: "uint64" }], id: 2433, name: "BaseNameReserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2045, src: "4903:16:7", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint64_$returns$__$", typeString: "function (string memory,address,uint64)" } }, id: 2437, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4903:55:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2438, nodeType: "EmitStatement", src: "4898:60:7" }] } }] }, baseFunctions: [2105], documentation: { id: 2364, nodeType: "StructuredDocumentation", src: "3666:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "35696fa7", implemented: true, kind: "function", modifiers: [{ id: 2372, kind: "modifierInvocation", modifierName: { id: 2371, name: "onlyRegistry", nameLocations: ["3828:12:7"], nodeType: "IdentifierPath", referencedDeclaration: 2261, src: "3828:12:7" }, nodeType: "ModifierInvocation", src: "3828:12:7" }], name: "reserveBaseName", nameLocation: "3705:15:7", overrides: { id: 2370, nodeType: "OverrideSpecifier", overrides: [], src: "3811:8:7" }, parameters: { id: 2369, nodeType: "ParameterList", parameters: [{ constant: false, id: 2366, mutability: "mutable", name: "name", nameLocation: "3746:4:7", nodeType: "VariableDeclaration", scope: 2442, src: "3730:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2365, name: "string", nodeType: "ElementaryTypeName", src: "3730:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 2368, mutability: "mutable", name: "userAddress", nameLocation: "3768:11:7", nodeType: "VariableDeclaration", scope: 2442, src: "3760:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2367, name: "address", nodeType: "ElementaryTypeName", src: "3760:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "3720:65:7" }, returnParameters: { id: 2373, nodeType: "ParameterList", parameters: [], src: "3845:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 2466, nodeType: "FunctionDefinition", src: "5011:223:7", nodes: [], body: { id: 2465, nodeType: "Block", src: "5100:134:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2452, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2445, src: "5133:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2451, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "5110:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2453, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5110:32:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2454, nodeType: "ExpressionStatement", src: "5110:32:7" }, { assignments: [2456], declarations: [{ constant: false, id: 2456, mutability: "mutable", name: "digits", nameLocation: "5160:6:7", nodeType: "VariableDeclaration", scope: 2465, src: "5152:14:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2455, name: "uint256", nodeType: "ElementaryTypeName", src: "5152:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 2460, initialValue: { arguments: [{ id: 2458, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2445, src: "5190:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2457, name: "_countTrailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3056, src: "5169:20:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) pure returns (uint256)" } }, id: 2459, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5169:30:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "5152:47:7" }, { expression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2463, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2461, name: "digits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2456, src: "5216:6:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "30", id: 2462, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "5226:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "5216:11:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, functionReturnParameters: 2450, id: 2464, nodeType: "Return", src: "5209:18:7" }] }, baseFunctions: [2186], documentation: { id: 2443, nodeType: "StructuredDocumentation", src: "4981:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "b4956ade", implemented: true, kind: "function", modifiers: [], name: "isBaseName", nameLocation: "5020:10:7", overrides: { id: 2447, nodeType: "OverrideSpecifier", overrides: [], src: "5069:8:7" }, parameters: { id: 2446, nodeType: "ParameterList", parameters: [{ constant: false, id: 2445, mutability: "mutable", name: "baseName", nameLocation: "5047:8:7", nodeType: "VariableDeclaration", scope: 2466, src: "5031:24:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2444, name: "string", nodeType: "ElementaryTypeName", src: "5031:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "5030:26:7" }, returnParameters: { id: 2450, nodeType: "ParameterList", parameters: [{ constant: false, id: 2449, mutability: "mutable", name: "isBase", nameLocation: "5092:6:7", nodeType: "VariableDeclaration", scope: 2466, src: "5087:11:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 2448, name: "bool", nodeType: "ElementaryTypeName", src: "5087:4:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }], src: "5086:13:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "public" }, { id: 2495, nodeType: "FunctionDefinition", src: "5270:338:7", nodes: [], body: { id: 2494, nodeType: "Block", src: "5446:162:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2478, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2469, src: "5479:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2477, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "5456:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2479, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5456:32:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2480, nodeType: "ExpressionStatement", src: "5456:32:7" }, { assignments: [2483], declarations: [{ constant: false, id: 2483, mutability: "mutable", name: "reserved", nameLocation: "5517:8:7", nodeType: "VariableDeclaration", scope: 2494, src: "5498:27:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 2482, nodeType: "UserDefinedTypeName", pathNode: { id: 2481, name: "Reservation", nameLocations: ["5498:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "5498:11:7" }, referencedDeclaration: 2080, src: "5498:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 2487, initialValue: { baseExpression: { id: 2484, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "5528:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 2486, indexExpression: { id: 2485, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2469, src: "5541:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "5528:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "5498:52:7" }, { expression: { components: [{ expression: { id: 2488, name: "reserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2483, src: "5568:8:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2489, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5577:5:7", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 2075, src: "5568:14:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { expression: { id: 2490, name: "reserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2483, src: "5584:8:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2491, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5593:7:7", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 2077, src: "5584:16:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], id: 2492, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "5567:34:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_address_$_t_uint64_$", typeString: "tuple(address,uint64)" } }, functionReturnParameters: 2476, id: 2493, nodeType: "Return", src: "5560:41:7" }] }, baseFunctions: [2134], documentation: { id: 2467, nodeType: "StructuredDocumentation", src: "5240:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "8ac7f0f5", implemented: true, kind: "function", modifiers: [], name: "getBaseNameReservation", nameLocation: "5279:22:7", overrides: { id: 2471, nodeType: "OverrideSpecifier", overrides: [], src: "5366:8:7" }, parameters: { id: 2470, nodeType: "ParameterList", parameters: [{ constant: false, id: 2469, mutability: "mutable", name: "baseName", nameLocation: "5318:8:7", nodeType: "VariableDeclaration", scope: 2495, src: "5302:24:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2468, name: "string", nodeType: "ElementaryTypeName", src: "5302:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "5301:26:7" }, returnParameters: { id: 2476, nodeType: "ParameterList", parameters: [{ constant: false, id: 2473, mutability: "mutable", name: "reservationOwner", nameLocation: "5400:16:7", nodeType: "VariableDeclaration", scope: 2495, src: "5392:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2472, name: "address", nodeType: "ElementaryTypeName", src: "5392:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }, { constant: false, id: 2475, mutability: "mutable", name: "expiryTimestamp", nameLocation: "5425:15:7", nodeType: "VariableDeclaration", scope: 2495, src: "5418:22:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 2474, name: "uint64", nodeType: "ElementaryTypeName", src: "5418:6:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], src: "5391:50:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "external" }, { id: 2529, nodeType: "FunctionDefinition", src: "5644:382:7", nodes: [], body: { id: 2528, nodeType: "Block", src: "5833:193:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2509, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2498, src: "5866:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2508, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "5843:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2510, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5843:32:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2511, nodeType: "ExpressionStatement", src: "5843:32:7" }, { assignments: [2514], declarations: [{ constant: false, id: 2514, mutability: "mutable", name: "reservation", nameLocation: "5904:11:7", nodeType: "VariableDeclaration", scope: 2528, src: "5885:30:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 2513, nodeType: "UserDefinedTypeName", pathNode: { id: 2512, name: "Reservation", nameLocations: ["5885:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "5885:11:7" }, referencedDeclaration: 2080, src: "5885:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 2518, initialValue: { baseExpression: { id: 2515, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "5918:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 2517, indexExpression: { id: 2516, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2498, src: "5931:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "5918:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "5885:55:7" }, { expression: { components: [{ arguments: [{ id: 2520, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2514, src: "5966:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" }], id: 2519, name: "_isLive", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3001, src: "5958:7:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_struct$_Reservation_$2080_memory_ptr_$returns$_t_bool_$", typeString: "function (struct IPopRules.Reservation memory) view returns (bool)" } }, id: 2521, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5958:20:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { expression: { id: 2522, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2514, src: "5980:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2523, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "5992:5:7", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 2075, src: "5980:17:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { expression: { id: 2524, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2514, src: "5999:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2525, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "6011:7:7", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 2077, src: "5999:19:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], id: 2526, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "5957:62:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_bool_$_t_address_$_t_uint64_$", typeString: "tuple(bool,address,uint64)" } }, functionReturnParameters: 2507, id: 2527, nodeType: "Return", src: "5950:69:7" }] }, baseFunctions: [2146], documentation: { id: 2496, nodeType: "StructuredDocumentation", src: "5614:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "91809994", implemented: true, kind: "function", modifiers: [], name: "isBaseNameReserved", nameLocation: "5653:18:7", overrides: { id: 2500, nodeType: "OverrideSpecifier", overrides: [], src: "5736:8:7" }, parameters: { id: 2499, nodeType: "ParameterList", parameters: [{ constant: false, id: 2498, mutability: "mutable", name: "baseName", nameLocation: "5688:8:7", nodeType: "VariableDeclaration", scope: 2529, src: "5672:24:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2497, name: "string", nodeType: "ElementaryTypeName", src: "5672:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "5671:26:7" }, returnParameters: { id: 2507, nodeType: "ParameterList", parameters: [{ constant: false, id: 2502, mutability: "mutable", name: "isReserved", nameLocation: "5767:10:7", nodeType: "VariableDeclaration", scope: 2529, src: "5762:15:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 2501, name: "bool", nodeType: "ElementaryTypeName", src: "5762:4:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }, { constant: false, id: 2504, mutability: "mutable", name: "reservationOwner", nameLocation: "5787:16:7", nodeType: "VariableDeclaration", scope: 2529, src: "5779:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2503, name: "address", nodeType: "ElementaryTypeName", src: "5779:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }, { constant: false, id: 2506, mutability: "mutable", name: "expiryTimestamp", nameLocation: "5812:15:7", nodeType: "VariableDeclaration", scope: 2529, src: "5805:22:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 2505, name: "uint64", nodeType: "ElementaryTypeName", src: "5805:6:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], src: "5761:67:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "external" }, { id: 2652, nodeType: "FunctionDefinition", src: "6062:1330:7", nodes: [], body: { id: 2651, nodeType: "Block", src: "6250:1142:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2542, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2532, src: "6283:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2541, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "6260:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2543, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6260:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2544, nodeType: "ExpressionStatement", src: "6260:28:7" }, { expression: { arguments: [{ id: 2546, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2532, src: "6323:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, { id: 2547, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2534, src: "6329:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }, { typeIdentifier: "t_address", typeString: "address" }], id: 2545, name: "_enforceReservationRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2977, src: "6298:24:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_string_calldata_ptr_$_t_address_$returns$__$", typeString: "function (string calldata,address) view" } }, id: 2548, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6298:43:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2549, nodeType: "ExpressionStatement", src: "6298:43:7" }, { assignments: [2552, 2554], declarations: [{ constant: false, id: 2552, mutability: "mutable", name: "requiredStatus", nameLocation: "6363:14:7", nodeType: "VariableDeclaration", scope: 2651, src: "6353:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2551, nodeType: "UserDefinedTypeName", pathNode: { id: 2550, name: "PopStatus", nameLocations: ["6353:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "6353:9:7" }, referencedDeclaration: 2036, src: "6353:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 2554, mutability: "mutable", name: "classification", nameLocation: "6393:14:7", nodeType: "VariableDeclaration", scope: 2651, src: "6379:28:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 2553, name: "string", nodeType: "ElementaryTypeName", src: "6379:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 2558, initialValue: { arguments: [{ id: 2556, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2532, src: "6434:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2555, name: "_classifyValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3222, src: "6411:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 2557, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6411:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "6352:87:7" }, { assignments: [2561], declarations: [{ constant: false, id: 2561, mutability: "mutable", name: "userStatus", nameLocation: "6459:10:7", nodeType: "VariableDeclaration", scope: 2651, src: "6449:20:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2560, nodeType: "UserDefinedTypeName", pathNode: { id: 2559, name: "PopStatus", nameLocations: ["6449:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "6449:9:7" }, referencedDeclaration: 2036, src: "6449:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], id: 2565, initialValue: { arguments: [{ id: 2563, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2534, src: "6488:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 2562, name: "_personhoodTier", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2867, src: "6472:15:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_address_$returns$_t_enum$_PopStatus_$2036_$", typeString: "function (address) view returns (enum IPopRules.PopStatus)" } }, id: 2564, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6472:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "VariableDeclarationStatement", src: "6449:51:7" }, { expression: { id: 2582, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2566, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2539, src: "6511:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2568, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6520:5:7", memberName: "price", nodeType: "MemberAccess", referencedDeclaration: 2063, src: "6511:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "Assignment", operator: "=", rightHandSide: { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2572, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2569, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2561, src: "6540:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2570, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "6554:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2571, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6564:8:7", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 2032, src: "6554:18:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "6540:32:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseExpression: { hexValue: "30", id: 2580, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "6617:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, id: 2581, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "Conditional", src: "6540:78:7", trueExpression: { arguments: [{ expression: { arguments: [{ id: 2576, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2532, src: "6601:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2575, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "6595:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 2574, name: "bytes", nodeType: "ElementaryTypeName", src: "6595:5:7", typeDescriptions: {} } }, id: 2577, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6595:11:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 2578, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6607:6:7", memberName: "length", nodeType: "MemberAccess", src: "6595:18:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2573, name: "_priceValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2940, src: "6575:19:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", typeString: "function (uint256) view returns (uint256)" } }, id: 2579, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6575:39:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "6511:107:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 2583, nodeType: "ExpressionStatement", src: "6511:107:7" }, { expression: { id: 2588, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2584, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2539, src: "6628:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2586, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6637:6:7", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 2066, src: "6628:15:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2587, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2552, src: "6646:14:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "6628:32:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, id: 2589, nodeType: "ExpressionStatement", src: "6628:32:7" }, { expression: { id: 2594, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2590, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2539, src: "6670:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2592, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6679:10:7", memberName: "userStatus", nodeType: "MemberAccess", referencedDeclaration: 2069, src: "6670:19:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2593, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2561, src: "6692:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "6670:32:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, id: 2595, nodeType: "ExpressionStatement", src: "6670:32:7" }, { expression: { id: 2600, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2596, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2539, src: "6712:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2598, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "6721:7:7", memberName: "message", nodeType: "MemberAccess", referencedDeclaration: 2071, src: "6712:16:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2599, name: "classification", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2554, src: "6731:14:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, src: "6712:33:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 2601, nodeType: "ExpressionStatement", src: "6712:33:7" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2606, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2603, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2552, src: "6764:14:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { expression: { id: 2604, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "6782:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2605, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6792:8:7", memberName: "Reserved", nodeType: "MemberAccess", referencedDeclaration: 2035, src: "6782:18:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "6764:36:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 2608, name: "classification", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2554, src: "6811:14:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_memory_ptr", typeString: "string memory" }], id: 2607, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "6802:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 2609, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6802:24:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 2602, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6756:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 2610, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6756:71:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2611, nodeType: "ExpressionStatement", src: "6756:71:7" }, { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2615, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2612, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2552, src: "6842:14:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2613, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "6860:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2614, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6870:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "6860:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "6842:35:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseBody: { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2630, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2627, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2552, src: "7035:14:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2628, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "7053:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2629, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7063:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "7053:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "7035:35:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2647, nodeType: "IfStatement", src: "7031:238:7", trueBody: { id: 2646, nodeType: "Block", src: "7072:197:7", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 2640, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2635, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2632, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2561, src: "7111:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2633, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "7125:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2634, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7135:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "7125:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "7111:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "||", rightExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2639, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2636, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2561, src: "7146:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2637, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "7160:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2638, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7170:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "7160:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "7146:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "7111:66:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "526571756972657320506572736f6e686f6f64204c69746520766572696669636174696f6e", id: 2642, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "7204:39:7", typeDescriptions: { typeIdentifier: "t_stringliteral_e61bf021a631c1ed9b03b15bf0ff748ddf6d66e356c6301564a716f80911fdd7", typeString: 'literal_string "Requires Personhood Lite verification"' }, value: "Requires Personhood Lite verification" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_e61bf021a631c1ed9b03b15bf0ff748ddf6d66e356c6301564a716f80911fdd7", typeString: 'literal_string "Requires Personhood Lite verification"' }], id: 2641, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "7195:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 2643, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7195:49:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 2631, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "7086:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 2644, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7086:172:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2645, nodeType: "ExpressionStatement", src: "7086:172:7" }] } }, id: 2648, nodeType: "IfStatement", src: "6838:431:7", trueBody: { id: 2626, nodeType: "Block", src: "6879:146:7", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2620, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2617, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2561, src: "6918:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2618, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "6932:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2619, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6942:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "6932:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "6918:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "52657175697265732046756c6c20506572736f6e686f6f6420766572696669636174696f6e", id: 2622, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "6960:39:7", typeDescriptions: { typeIdentifier: "t_stringliteral_44ac9a5113b90ab4f99691399c218699dbf43b454930f2cfc95c461314fe2803", typeString: 'literal_string "Requires Full Personhood verification"' }, value: "Requires Full Personhood verification" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_44ac9a5113b90ab4f99691399c218699dbf43b454930f2cfc95c461314fe2803", typeString: 'literal_string "Requires Full Personhood verification"' }], id: 2621, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "6951:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 2623, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6951:49:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 2616, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6893:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 2624, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6893:121:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2625, nodeType: "ExpressionStatement", src: "6893:121:7" }] } }, { expression: { id: 2649, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2539, src: "7377:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, functionReturnParameters: 2540, id: 2650, nodeType: "Return", src: "7370:15:7" }] }, baseFunctions: [2157], documentation: { id: 2530, nodeType: "StructuredDocumentation", src: "6032:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "6bbfce2b", implemented: true, kind: "function", modifiers: [], name: "priceWithCheck", nameLocation: "6071:14:7", overrides: { id: 2536, nodeType: "OverrideSpecifier", overrides: [], src: "6189:8:7" }, parameters: { id: 2535, nodeType: "ParameterList", parameters: [{ constant: false, id: 2532, mutability: "mutable", name: "name", nameLocation: "6111:4:7", nodeType: "VariableDeclaration", scope: 2652, src: "6095:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2531, name: "string", nodeType: "ElementaryTypeName", src: "6095:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 2534, mutability: "mutable", name: "userAddress", nameLocation: "6133:11:7", nodeType: "VariableDeclaration", scope: 2652, src: "6125:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2533, name: "address", nodeType: "ElementaryTypeName", src: "6125:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "6085:65:7" }, returnParameters: { id: 2540, nodeType: "ParameterList", parameters: [{ constant: false, id: 2539, mutability: "mutable", name: "metadata", nameLocation: "6236:8:7", nodeType: "VariableDeclaration", scope: 2652, src: "6215:29:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta" }, typeName: { id: 2538, nodeType: "UserDefinedTypeName", pathNode: { id: 2537, name: "PriceWithMeta", nameLocations: ["6215:13:7"], nodeType: "IdentifierPath", referencedDeclaration: 2072, src: "6215:13:7" }, referencedDeclaration: 2072, src: "6215:13:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_storage_ptr", typeString: "struct IPopRules.PriceWithMeta" } }, visibility: "internal" }], src: "6214:31:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "external" }, { id: 2760, nodeType: "FunctionDefinition", src: "7428:1010:7", nodes: [], body: { id: 2759, nodeType: "Block", src: "7619:819:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2665, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2655, src: "7652:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2664, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "7629:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2666, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7629:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2667, nodeType: "ExpressionStatement", src: "7629:28:7" }, { assignments: [2670, 2672], declarations: [{ constant: false, id: 2670, mutability: "mutable", name: "requiredStatus", nameLocation: "7679:14:7", nodeType: "VariableDeclaration", scope: 2759, src: "7669:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2669, nodeType: "UserDefinedTypeName", pathNode: { id: 2668, name: "PopStatus", nameLocations: ["7669:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "7669:9:7" }, referencedDeclaration: 2036, src: "7669:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 2672, mutability: "mutable", name: "classification", nameLocation: "7709:14:7", nodeType: "VariableDeclaration", scope: 2759, src: "7695:28:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 2671, name: "string", nodeType: "ElementaryTypeName", src: "7695:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 2676, initialValue: { arguments: [{ id: 2674, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2655, src: "7750:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2673, name: "_classifyValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3222, src: "7727:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 2675, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7727:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "7668:87:7" }, { assignments: [2679], declarations: [{ constant: false, id: 2679, mutability: "mutable", name: "userStatus", nameLocation: "7775:10:7", nodeType: "VariableDeclaration", scope: 2759, src: "7765:20:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2678, nodeType: "UserDefinedTypeName", pathNode: { id: 2677, name: "PopStatus", nameLocations: ["7765:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "7765:9:7" }, referencedDeclaration: 2036, src: "7765:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], id: 2683, initialValue: { arguments: [{ id: 2681, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2657, src: "7804:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 2680, name: "_personhoodTier", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2867, src: "7788:15:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_address_$returns$_t_enum$_PopStatus_$2036_$", typeString: "function (address) view returns (enum IPopRules.PopStatus)" } }, id: 2682, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7788:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "VariableDeclarationStatement", src: "7765:51:7" }, { expression: { id: 2700, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2684, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "7827:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2686, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "7836:5:7", memberName: "price", nodeType: "MemberAccess", referencedDeclaration: 2063, src: "7827:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "Assignment", operator: "=", rightHandSide: { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2690, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2687, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2679, src: "7856:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2688, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "7870:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2689, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "7880:8:7", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 2032, src: "7870:18:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "7856:32:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseExpression: { hexValue: "30", id: 2698, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "7933:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, id: 2699, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "Conditional", src: "7856:78:7", trueExpression: { arguments: [{ expression: { arguments: [{ id: 2694, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2655, src: "7917:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2693, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "7911:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 2692, name: "bytes", nodeType: "ElementaryTypeName", src: "7911:5:7", typeDescriptions: {} } }, id: 2695, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7911:11:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 2696, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "7923:6:7", memberName: "length", nodeType: "MemberAccess", src: "7911:18:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2691, name: "_priceValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2940, src: "7891:19:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", typeString: "function (uint256) view returns (uint256)" } }, id: 2697, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7891:39:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "7827:107:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 2701, nodeType: "ExpressionStatement", src: "7827:107:7" }, { expression: { id: 2706, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2702, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "7944:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2704, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "7953:6:7", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 2066, src: "7944:15:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2705, name: "requiredStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2670, src: "7962:14:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "7944:32:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, id: 2707, nodeType: "ExpressionStatement", src: "7944:32:7" }, { expression: { id: 2712, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2708, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "7986:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2710, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "7995:10:7", memberName: "userStatus", nodeType: "MemberAccess", referencedDeclaration: 2069, src: "7986:19:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2711, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2679, src: "8008:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "7986:32:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, id: 2713, nodeType: "ExpressionStatement", src: "7986:32:7" }, { expression: { id: 2718, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2714, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "8028:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2716, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8037:7:7", memberName: "message", nodeType: "MemberAccess", referencedDeclaration: 2071, src: "8028:16:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 2717, name: "classification", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2672, src: "8047:14:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, src: "8028:33:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 2719, nodeType: "ExpressionStatement", src: "8028:33:7" }, { assignments: [2721], declarations: [{ constant: false, id: 2721, mutability: "mutable", name: "baseName", nameLocation: "8086:8:7", nodeType: "VariableDeclaration", scope: 2759, src: "8072:22:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 2720, name: "string", nodeType: "ElementaryTypeName", src: "8072:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 2725, initialValue: { arguments: [{ id: 2723, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2655, src: "8110:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2722, name: "_stripDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3133, src: "8097:12:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (string memory)" } }, id: 2724, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8097:18:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "VariableDeclarationStatement", src: "8072:43:7" }, { assignments: [2728], declarations: [{ constant: false, id: 2728, mutability: "mutable", name: "reservation", nameLocation: "8144:11:7", nodeType: "VariableDeclaration", scope: 2759, src: "8125:30:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 2727, nodeType: "UserDefinedTypeName", pathNode: { id: 2726, name: "Reservation", nameLocations: ["8125:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "8125:11:7" }, referencedDeclaration: 2080, src: "8125:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 2732, initialValue: { baseExpression: { id: 2729, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "8158:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 2731, indexExpression: { id: 2730, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2721, src: "8171:8:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "8158:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "8125:55:7" }, { condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 2740, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [{ id: 2734, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2728, src: "8203:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" }], id: 2733, name: "_isLive", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3001, src: "8195:7:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_struct$_Reservation_$2080_memory_ptr_$returns$_t_bool_$", typeString: "function (struct IPopRules.Reservation memory) view returns (bool)" } }, id: 2735, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8195:20:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 2739, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2736, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2728, src: "8219:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2737, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "8231:5:7", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 2075, src: "8219:17:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { id: 2738, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2657, src: "8240:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "8219:32:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "8195:56:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2756, nodeType: "IfStatement", src: "8191:215:7", trueBody: { id: 2755, nodeType: "Block", src: "8253:153:7", statements: [{ expression: { id: 2745, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2741, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "8267:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2743, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8276:7:7", memberName: "message", nodeType: "MemberAccess", referencedDeclaration: 2071, src: "8267:16:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { hexValue: "42617365206e616d6520726573657276656420666f72206f726967696e616c204c6974652072656769737472616e74", id: 2744, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "8286:49:7", typeDescriptions: { typeIdentifier: "t_stringliteral_79a01a294a67387a7edaa4823021914cdb681481f514745448d051863f0b7823", typeString: 'literal_string "Base name reserved for original Lite registrant"' }, value: "Base name reserved for original Lite registrant" }, src: "8267:68:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 2746, nodeType: "ExpressionStatement", src: "8267:68:7" }, { expression: { id: 2753, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { expression: { id: 2747, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "8349:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, id: 2749, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, memberLocation: "8358:6:7", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 2066, src: "8349:15:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "Assignment", operator: "=", rightHandSide: { expression: { expression: { id: 2750, name: "IPopRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2195, src: "8367:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IPopRules_$2195_$", typeString: "type(contract IPopRules)" } }, id: 2751, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8377:9:7", memberName: "PopStatus", nodeType: "MemberAccess", referencedDeclaration: 2036, src: "8367:19:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2752, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "8387:8:7", memberName: "Reserved", nodeType: "MemberAccess", referencedDeclaration: 2035, src: "8367:28:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "8349:46:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, id: 2754, nodeType: "ExpressionStatement", src: "8349:46:7" }] } }, { expression: { id: 2757, name: "metadata", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2662, src: "8423:8:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta memory" } }, functionReturnParameters: 2663, id: 2758, nodeType: "Return", src: "8416:15:7" }] }, baseFunctions: [2168], documentation: { id: 2653, nodeType: "StructuredDocumentation", src: "7398:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "dcd62573", implemented: true, kind: "function", modifiers: [], name: "priceWithoutCheck", nameLocation: "7437:17:7", overrides: { id: 2659, nodeType: "OverrideSpecifier", overrides: [], src: "7558:8:7" }, parameters: { id: 2658, nodeType: "ParameterList", parameters: [{ constant: false, id: 2655, mutability: "mutable", name: "name", nameLocation: "7480:4:7", nodeType: "VariableDeclaration", scope: 2760, src: "7464:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2654, name: "string", nodeType: "ElementaryTypeName", src: "7464:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 2657, mutability: "mutable", name: "userAddress", nameLocation: "7502:11:7", nodeType: "VariableDeclaration", scope: 2760, src: "7494:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2656, name: "address", nodeType: "ElementaryTypeName", src: "7494:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "7454:65:7" }, returnParameters: { id: 2663, nodeType: "ParameterList", parameters: [{ constant: false, id: 2662, mutability: "mutable", name: "metadata", nameLocation: "7605:8:7", nodeType: "VariableDeclaration", scope: 2760, src: "7584:29:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_memory_ptr", typeString: "struct IPopRules.PriceWithMeta" }, typeName: { id: 2661, nodeType: "UserDefinedTypeName", pathNode: { id: 2660, name: "PriceWithMeta", nameLocations: ["7584:13:7"], nodeType: "IdentifierPath", referencedDeclaration: 2072, src: "7584:13:7" }, referencedDeclaration: 2072, src: "7584:13:7", typeDescriptions: { typeIdentifier: "t_struct$_PriceWithMeta_$2072_storage_ptr", typeString: "struct IPopRules.PriceWithMeta" } }, visibility: "internal" }], src: "7583:31:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "external" }, { id: 2782, nodeType: "FunctionDefinition", src: "8474:177:7", nodes: [], body: { id: 2781, nodeType: "Block", src: "8550:101:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2770, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2763, src: "8583:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2769, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "8560:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2771, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8560:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2772, nodeType: "ExpressionStatement", src: "8560:28:7" }, { expression: { arguments: [{ expression: { arguments: [{ id: 2776, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2763, src: "8631:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2775, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "8625:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 2774, name: "bytes", nodeType: "ElementaryTypeName", src: "8625:5:7", typeDescriptions: {} } }, id: 2777, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8625:11:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 2778, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8637:6:7", memberName: "length", nodeType: "MemberAccess", src: "8625:18:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2773, name: "_priceValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2940, src: "8605:19:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", typeString: "function (uint256) view returns (uint256)" } }, id: 2779, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8605:39:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 2768, id: 2780, nodeType: "Return", src: "8598:46:7" }] }, baseFunctions: [2194], documentation: { id: 2761, nodeType: "StructuredDocumentation", src: "8444:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "fe2c6198", implemented: true, kind: "function", modifiers: [], name: "price", nameLocation: "8483:5:7", overrides: { id: 2765, nodeType: "OverrideSpecifier", overrides: [], src: "8523:8:7" }, parameters: { id: 2764, nodeType: "ParameterList", parameters: [{ constant: false, id: 2763, mutability: "mutable", name: "name", nameLocation: "8505:4:7", nodeType: "VariableDeclaration", scope: 2782, src: "8489:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2762, name: "string", nodeType: "ElementaryTypeName", src: "8489:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "8488:22:7" }, returnParameters: { id: 2768, nodeType: "ParameterList", parameters: [{ constant: false, id: 2767, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 2782, src: "8541:7:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2766, name: "uint256", nodeType: "ElementaryTypeName", src: "8541:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "8540:9:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "public" }, { id: 2823, nodeType: "FunctionDefinition", src: "8687:418:7", nodes: [], body: { id: 2822, nodeType: "Block", src: "8847:258:7", nodes: [], statements: [{ expression: { arguments: [{ id: 2794, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2785, src: "8880:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2793, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "8857:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 2795, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8857:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2796, nodeType: "ExpressionStatement", src: "8857:28:7" }, { assignments: [2799, null], declarations: [{ constant: false, id: 2799, mutability: "mutable", name: "required", nameLocation: "8906:8:7", nodeType: "VariableDeclaration", scope: 2822, src: "8896:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2798, nodeType: "UserDefinedTypeName", pathNode: { id: 2797, name: "PopStatus", nameLocations: ["8896:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "8896:9:7" }, referencedDeclaration: 2036, src: "8896:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, null], id: 2803, initialValue: { arguments: [{ id: 2801, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2785, src: "8942:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2800, name: "_classifyValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3222, src: "8919:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (enum IPopRules.PopStatus,string memory)" } }, id: 2802, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8919:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_string_memory_ptr_$", typeString: "tuple(enum IPopRules.PopStatus,string memory)" } }, nodeType: "VariableDeclarationStatement", src: "8895:52:7" }, { condition: { arguments: [{ id: 2805, name: "required", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2799, src: "8973:8:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, { arguments: [{ id: 2807, name: "account", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2787, src: "8999:7:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 2806, name: "_personhoodTier", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2867, src: "8983:15:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_address_$returns$_t_enum$_PopStatus_$2036_$", typeString: "function (address) view returns (enum IPopRules.PopStatus)" } }, id: 2808, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8983:24:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }], expression: { argumentTypes: [{ typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }], id: 2804, name: "_meetsReach", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2909, src: "8961:11:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_enum$_PopStatus_$2036_$_t_enum$_PopStatus_$2036_$returns$_t_bool_$", typeString: "function (enum IPopRules.PopStatus,enum IPopRules.PopStatus) pure returns (bool)" } }, id: 2809, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8961:47:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2813, nodeType: "IfStatement", src: "8957:86:7", trueBody: { id: 2812, nodeType: "Block", src: "9010:33:7", statements: [{ expression: { hexValue: "30", id: 2810, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "9031:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, functionReturnParameters: 2792, id: 2811, nodeType: "Return", src: "9024:8:7" }] } }, { expression: { arguments: [{ expression: { arguments: [{ id: 2817, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2785, src: "9085:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2816, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "9079:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 2815, name: "bytes", nodeType: "ElementaryTypeName", src: "9079:5:7", typeDescriptions: {} } }, id: 2818, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9079:11:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 2819, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "9091:6:7", memberName: "length", nodeType: "MemberAccess", src: "9079:18:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 2814, name: "_priceValidatedName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2940, src: "9059:19:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", typeString: "function (uint256) view returns (uint256)" } }, id: 2820, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9059:39:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 2792, id: 2821, nodeType: "Return", src: "9052:46:7" }] }, baseFunctions: [2178], documentation: { id: 2783, nodeType: "StructuredDocumentation", src: "8657:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "453fa0f4", implemented: true, kind: "function", modifiers: [], name: "reachFee", nameLocation: "8696:8:7", overrides: { id: 2789, nodeType: "OverrideSpecifier", overrides: [], src: "8804:8:7" }, parameters: { id: 2788, nodeType: "ParameterList", parameters: [{ constant: false, id: 2785, mutability: "mutable", name: "name", nameLocation: "8730:4:7", nodeType: "VariableDeclaration", scope: 2823, src: "8714:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2784, name: "string", nodeType: "ElementaryTypeName", src: "8714:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 2787, mutability: "mutable", name: "account", nameLocation: "8752:7:7", nodeType: "VariableDeclaration", scope: 2823, src: "8744:15:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2786, name: "address", nodeType: "ElementaryTypeName", src: "8744:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "8704:61:7" }, returnParameters: { id: 2792, nodeType: "ParameterList", parameters: [{ constant: false, id: 2791, mutability: "mutable", name: "fee", nameLocation: "8838:3:7", nodeType: "VariableDeclaration", scope: 2823, src: "8830:11:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2790, name: "uint256", nodeType: "ElementaryTypeName", src: "8830:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "8829:13:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "external" }, { id: 2867, nodeType: "FunctionDefinition", src: "9675:392:7", nodes: [], body: { id: 2866, nodeType: "Block", src: "9750:317:7", nodes: [], statements: [{ assignments: [2836], declarations: [{ constant: false, id: 2836, mutability: "mutable", name: "info", nameLocation: "9794:4:7", nodeType: "VariableDeclaration", scope: 2866, src: "9760:38:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_PersonhoodInfo_$2005_memory_ptr", typeString: "struct IPersonhood.PersonhoodInfo" }, typeName: { id: 2835, nodeType: "UserDefinedTypeName", pathNode: { id: 2834, name: "IPersonhood.PersonhoodInfo", nameLocations: ["9760:11:7", "9772:14:7"], nodeType: "IdentifierPath", referencedDeclaration: 2005, src: "9760:26:7" }, referencedDeclaration: 2005, src: "9760:26:7", typeDescriptions: { typeIdentifier: "t_struct$_PersonhoodInfo_$2005_storage_ptr", typeString: "struct IPersonhood.PersonhoodInfo" } }, visibility: "internal" }], id: 2846, initialValue: { arguments: [{ id: 2842, name: "account", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2826, src: "9870:7:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { expression: { id: 2843, name: "DotnsConstants", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 12398, src: "9879:14:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_DotnsConstants_$12398_$", typeString: "type(library DotnsConstants)" } }, id: 2844, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "9894:18:7", memberName: "PERSONHOOD_CONTEXT", nodeType: "MemberAccess", referencedDeclaration: 12303, src: "9879:33:7", typeDescriptions: { typeIdentifier: "t_bytes32", typeString: "bytes32" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_bytes32", typeString: "bytes32" }], expression: { arguments: [{ expression: { id: 2838, name: "DotnsConstants", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 12398, src: "9813:14:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_DotnsConstants_$12398_$", typeString: "type(library DotnsConstants)" } }, id: 2839, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "9828:10:7", memberName: "PERSONHOOD", nodeType: "MemberAccess", referencedDeclaration: 12296, src: "9813:25:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 2837, name: "IPersonhood", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2017, src: "9801:11:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IPersonhood_$2017_$", typeString: "type(contract IPersonhood)" } }, id: 2840, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9801:38:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IPersonhood_$2017", typeString: "contract IPersonhood" } }, id: 2841, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "9853:16:7", memberName: "personhoodStatus", nodeType: "MemberAccess", referencedDeclaration: 2016, src: "9801:68:7", typeDescriptions: { typeIdentifier: "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_struct$_PersonhoodInfo_$2005_memory_ptr_$", typeString: "function (address,bytes32) view external returns (struct IPersonhood.PersonhoodInfo memory)" } }, id: 2845, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9801:112:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_struct$_PersonhoodInfo_$2005_memory_ptr", typeString: "struct IPersonhood.PersonhoodInfo memory" } }, nodeType: "VariableDeclarationStatement", src: "9760:153:7" }, { condition: { commonType: { typeIdentifier: "t_uint8", typeString: "uint8" }, id: 2850, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2847, name: "info", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2836, src: "9927:4:7", typeDescriptions: { typeIdentifier: "t_struct$_PersonhoodInfo_$2005_memory_ptr", typeString: "struct IPersonhood.PersonhoodInfo memory" } }, id: 2848, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "9932:6:7", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 2002, src: "9927:11:7", typeDescriptions: { typeIdentifier: "t_uint8", typeString: "uint8" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "32", id: 2849, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "9942:1:7", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "9927:16:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2854, nodeType: "IfStatement", src: "9923:46:7", trueBody: { expression: { expression: { id: 2851, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "9952:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2852, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "9962:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "9952:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, functionReturnParameters: 2831, id: 2853, nodeType: "Return", src: "9945:24:7" } }, { condition: { commonType: { typeIdentifier: "t_uint8", typeString: "uint8" }, id: 2858, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2855, name: "info", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2836, src: "9983:4:7", typeDescriptions: { typeIdentifier: "t_struct$_PersonhoodInfo_$2005_memory_ptr", typeString: "struct IPersonhood.PersonhoodInfo memory" } }, id: 2856, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "9988:6:7", memberName: "status", nodeType: "MemberAccess", referencedDeclaration: 2002, src: "9983:11:7", typeDescriptions: { typeIdentifier: "t_uint8", typeString: "uint8" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "31", id: 2857, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "9998:1:7", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "9983:16:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2862, nodeType: "IfStatement", src: "9979:46:7", trueBody: { expression: { expression: { id: 2859, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10008:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2860, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10018:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "10008:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, functionReturnParameters: 2831, id: 2861, nodeType: "Return", src: "10001:24:7" } }, { expression: { expression: { id: 2863, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10042:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2864, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10052:8:7", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 2032, src: "10042:18:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, functionReturnParameters: 2831, id: 2865, nodeType: "Return", src: "10035:25:7" }] }, documentation: { id: 2824, nodeType: "StructuredDocumentation", src: "9111:559:7", text: "@notice Reads `account`'s dotns-scoped personhood tier from the alias-accounts\n precompile and translates it into a `PopStatus`.\n @dev Single source of truth so callers cannot read the precompile directly and\n drift on the status mapping. Tiers are defined incrementally on the\n precompile side: 0=None, 1=Lite, 2=Full. Anything outside that range\n collapses to `NoStatus` so a future tier addition fails closed instead of\n silently being treated as a higher level than it actually is." }, implemented: true, kind: "function", modifiers: [], name: "_personhoodTier", nameLocation: "9684:15:7", parameters: { id: 2827, nodeType: "ParameterList", parameters: [{ constant: false, id: 2826, mutability: "mutable", name: "account", nameLocation: "9708:7:7", nodeType: "VariableDeclaration", scope: 2867, src: "9700:15:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2825, name: "address", nodeType: "ElementaryTypeName", src: "9700:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "9699:17:7" }, returnParameters: { id: 2831, nodeType: "ParameterList", parameters: [{ constant: false, id: 2830, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 2867, src: "9739:9:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2829, nodeType: "UserDefinedTypeName", pathNode: { id: 2828, name: "PopStatus", nameLocations: ["9739:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "9739:9:7" }, referencedDeclaration: 2036, src: "9739:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], src: "9738:11:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "private" }, { id: 2909, nodeType: "FunctionDefinition", src: "10356:368:7", nodes: [], body: { id: 2908, nodeType: "Block", src: "10447:277:7", nodes: [], statements: [{ condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2882, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2879, name: "required", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2871, src: "10461:8:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2880, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10473:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2881, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10483:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "10473:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "10461:29:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2889, nodeType: "IfStatement", src: "10457:98:7", trueBody: { id: 2888, nodeType: "Block", src: "10492:63:7", statements: [{ expression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2886, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2883, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2874, src: "10513:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2884, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10527:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2885, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10537:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "10527:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "10513:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, functionReturnParameters: 2878, id: 2887, nodeType: "Return", src: "10506:38:7" }] } }, { condition: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2893, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2890, name: "required", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2871, src: "10568:8:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2891, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10580:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2892, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10590:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "10580:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "10568:29:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2905, nodeType: "IfStatement", src: "10564:133:7", trueBody: { id: 2904, nodeType: "Block", src: "10599:98:7", statements: [{ expression: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 2902, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2897, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2894, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2874, src: "10620:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2895, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10634:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2896, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10644:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "10634:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "10620:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "||", rightExpression: { commonType: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, id: 2901, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2898, name: "userStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2874, src: "10655:10:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 2899, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "10669:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 2900, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "10679:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "10669:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, src: "10655:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "10620:66:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, functionReturnParameters: 2878, id: 2903, nodeType: "Return", src: "10613:73:7" }] } }, { expression: { hexValue: "74727565", id: 2906, isConstant: false, isLValue: false, isPure: true, kind: "bool", lValueRequested: false, nodeType: "Literal", src: "10713:4:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, value: "true" }, functionReturnParameters: 2878, id: 2907, nodeType: "Return", src: "10706:11:7" }] }, documentation: { id: 2868, nodeType: "StructuredDocumentation", src: "10073:278:7", text: '@notice Single canonical "is `userStatus` at reach for `required`?" predicate.\n @dev Both `reachFee` and `priceWithCheck` build on this so the tier-eligibility rule lives\n in exactly one place and the two callers cannot disagree about who clears a given label.' }, implemented: true, kind: "function", modifiers: [], name: "_meetsReach", nameLocation: "10365:11:7", parameters: { id: 2875, nodeType: "ParameterList", parameters: [{ constant: false, id: 2871, mutability: "mutable", name: "required", nameLocation: "10387:8:7", nodeType: "VariableDeclaration", scope: 2909, src: "10377:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2870, nodeType: "UserDefinedTypeName", pathNode: { id: 2869, name: "PopStatus", nameLocations: ["10377:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "10377:9:7" }, referencedDeclaration: 2036, src: "10377:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 2874, mutability: "mutable", name: "userStatus", nameLocation: "10407:10:7", nodeType: "VariableDeclaration", scope: 2909, src: "10397:20:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 2873, nodeType: "UserDefinedTypeName", pathNode: { id: 2872, name: "PopStatus", nameLocations: ["10397:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "10397:9:7" }, referencedDeclaration: 2036, src: "10397:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }], src: "10376:42:7" }, returnParameters: { id: 2878, nodeType: "ParameterList", parameters: [{ constant: false, id: 2877, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 2909, src: "10441:4:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 2876, name: "bool", nodeType: "ElementaryTypeName", src: "10441:4:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }], src: "10440:6:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "private" }, { id: 2940, nodeType: "FunctionDefinition", src: "10730:293:7", nodes: [], body: { id: 2939, nodeType: "Block", src: "10822:201:7", nodes: [], statements: [{ condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2918, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2916, name: "namelength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2911, src: "10836:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<", rightExpression: { hexValue: "39", id: 2917, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10849:1:7", typeDescriptions: { typeIdentifier: "t_rational_9_by_1", typeString: "int_const 9" }, value: "9" }, src: "10836:14:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2922, nodeType: "IfStatement", src: "10832:53:7", trueBody: { id: 2921, nodeType: "Block", src: "10852:33:7", statements: [{ expression: { hexValue: "30", id: 2919, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10873:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, functionReturnParameters: 2915, id: 2920, nodeType: "Return", src: "10866:8:7" }] } }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2925, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2923, name: "namelength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2911, src: "10899:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "3135", id: 2924, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10913:2:7", typeDescriptions: { typeIdentifier: "t_rational_15_by_1", typeString: "int_const 15" }, value: "15" }, src: "10899:16:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2931, nodeType: "IfStatement", src: "10895:71:7", trueBody: { id: 2930, nodeType: "Block", src: "10917:49:7", statements: [{ expression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2928, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2926, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2235, src: "10938:13:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "/", rightExpression: { hexValue: "32", id: 2927, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "10954:1:7", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "10938:17:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 2915, id: 2929, nodeType: "Return", src: "10931:24:7" }] } }, { expression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2937, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 2932, name: "startingPrice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2235, src: "10983:13:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "*", rightExpression: { components: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2935, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { hexValue: "3135", id: 2933, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "11000:2:7", typeDescriptions: { typeIdentifier: "t_rational_15_by_1", typeString: "int_const 15" }, value: "15" }, nodeType: "BinaryOperation", operator: "-", rightExpression: { id: 2934, name: "namelength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2911, src: "11005:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "11000:15:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], id: 2936, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "10999:17:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "10983:33:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 2915, id: 2938, nodeType: "Return", src: "10976:40:7" }] }, implemented: true, kind: "function", modifiers: [], name: "_priceValidatedName", nameLocation: "10739:19:7", parameters: { id: 2912, nodeType: "ParameterList", parameters: [{ constant: false, id: 2911, mutability: "mutable", name: "namelength", nameLocation: "10767:10:7", nodeType: "VariableDeclaration", scope: 2940, src: "10759:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2910, name: "uint256", nodeType: "ElementaryTypeName", src: "10759:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "10758:20:7" }, returnParameters: { id: 2915, nodeType: "ParameterList", parameters: [{ constant: false, id: 2914, mutability: "mutable", name: "priceValue", nameLocation: "10810:10:7", nodeType: "VariableDeclaration", scope: 2940, src: "10802:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 2913, name: "uint256", nodeType: "ElementaryTypeName", src: "10802:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "10801:20:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "internal" }, { id: 2977, nodeType: "FunctionDefinition", src: "11162:425:7", nodes: [], body: { id: 2976, nodeType: "Block", src: "11253:334:7", nodes: [], statements: [{ assignments: [2949], declarations: [{ constant: false, id: 2949, mutability: "mutable", name: "baseName", nameLocation: "11277:8:7", nodeType: "VariableDeclaration", scope: 2976, src: "11263:22:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 2948, name: "string", nodeType: "ElementaryTypeName", src: "11263:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], id: 2953, initialValue: { arguments: [{ id: 2951, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2943, src: "11301:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 2950, name: "_stripDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3133, src: "11288:12:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_string_memory_ptr_$", typeString: "function (string calldata) pure returns (string memory)" } }, id: 2952, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11288:18:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "VariableDeclarationStatement", src: "11263:43:7" }, { assignments: [2956], declarations: [{ constant: false, id: 2956, mutability: "mutable", name: "reservation", nameLocation: "11335:11:7", nodeType: "VariableDeclaration", scope: 2976, src: "11316:30:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 2955, nodeType: "UserDefinedTypeName", pathNode: { id: 2954, name: "Reservation", nameLocations: ["11316:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "11316:11:7" }, referencedDeclaration: 2080, src: "11316:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 2960, initialValue: { baseExpression: { id: 2957, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "11349:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 2959, indexExpression: { id: 2958, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2949, src: "11362:8:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "11349:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "11316:55:7" }, { condition: { arguments: [{ id: 2962, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2956, src: "11394:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" }], id: 2961, name: "_isLive", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3001, src: "11386:7:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_struct$_Reservation_$2080_memory_ptr_$returns$_t_bool_$", typeString: "function (struct IPopRules.Reservation memory) view returns (bool)" } }, id: 2963, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11386:20:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 2975, nodeType: "IfStatement", src: "11382:199:7", trueBody: { id: 2974, nodeType: "Block", src: "11408:173:7", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 2968, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2965, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2956, src: "11447:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2966, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "11459:5:7", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 2075, src: "11447:17:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { id: 2967, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2945, src: "11468:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "11447:32:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "42617365206e616d6520726573657276656420666f72206f726967696e616c204c6974652072656769737472616e74", id: 2970, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "11506:49:7", typeDescriptions: { typeIdentifier: "t_stringliteral_79a01a294a67387a7edaa4823021914cdb681481f514745448d051863f0b7823", typeString: 'literal_string "Base name reserved for original Lite registrant"' }, value: "Base name reserved for original Lite registrant" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_79a01a294a67387a7edaa4823021914cdb681481f514745448d051863f0b7823", typeString: 'literal_string "Base name reserved for original Lite registrant"' }], id: 2969, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "11497:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 2971, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11497:59:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 2964, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "11422:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 2972, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11422:148:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 2973, nodeType: "ExpressionStatement", src: "11422:148:7" }] } }] }, documentation: { id: 2941, nodeType: "StructuredDocumentation", src: "11029:128:7", text: `@notice Enforces base-name reservation rules.
|
|
2829
|
+
@param name Domain label.
|
|
2830
|
+
@param userAddress Registering user.` }, implemented: true, kind: "function", modifiers: [], name: "_enforceReservationRules", nameLocation: "11171:24:7", parameters: { id: 2946, nodeType: "ParameterList", parameters: [{ constant: false, id: 2943, mutability: "mutable", name: "name", nameLocation: "11212:4:7", nodeType: "VariableDeclaration", scope: 2977, src: "11196:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 2942, name: "string", nodeType: "ElementaryTypeName", src: "11196:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 2945, mutability: "mutable", name: "userAddress", nameLocation: "11226:11:7", nodeType: "VariableDeclaration", scope: 2977, src: "11218:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 2944, name: "address", nodeType: "ElementaryTypeName", src: "11218:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "11195:43:7" }, returnParameters: { id: 2947, nodeType: "ParameterList", parameters: [], src: "11253:0:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "internal" }, { id: 3001, nodeType: "FunctionDefinition", src: "11669:174:7", nodes: [], body: { id: 3000, nodeType: "Block", src: "11747:96:7", nodes: [], statements: [{ expression: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 2998, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 2992, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2986, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2981, src: "11764:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2987, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "11776:5:7", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 2075, src: "11764:17:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 2990, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "11793:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 2989, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "11785:7:7", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 2988, name: "address", nodeType: "ElementaryTypeName", src: "11785:7:7", typeDescriptions: {} } }, id: 2991, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "11785:10:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "11764:31:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 2997, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 2993, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2981, src: "11799:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 2994, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "11811:7:7", memberName: "expires", nodeType: "MemberAccess", referencedDeclaration: 2077, src: "11799:19:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { expression: { id: 2995, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "11821:5:7", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 2996, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "11827:9:7", memberName: "timestamp", nodeType: "MemberAccess", src: "11821:15:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "11799:37:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "11764:72:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, functionReturnParameters: 2985, id: 2999, nodeType: "Return", src: "11757:79:7" }] }, documentation: { id: 2978, nodeType: "StructuredDocumentation", src: "11593:71:7", text: "@notice Returns whether `reservation` is live at `block.timestamp`." }, implemented: true, kind: "function", modifiers: [], name: "_isLive", nameLocation: "11678:7:7", parameters: { id: 2982, nodeType: "ParameterList", parameters: [{ constant: false, id: 2981, mutability: "mutable", name: "reservation", nameLocation: "11705:11:7", nodeType: "VariableDeclaration", scope: 3001, src: "11686:30:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 2980, nodeType: "UserDefinedTypeName", pathNode: { id: 2979, name: "Reservation", nameLocations: ["11686:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "11686:11:7" }, referencedDeclaration: 2080, src: "11686:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], src: "11685:32:7" }, returnParameters: { id: 2985, nodeType: "ParameterList", parameters: [{ constant: false, id: 2984, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 3001, src: "11741:4:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 2983, name: "bool", nodeType: "ElementaryTypeName", src: "11741:4:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }], src: "11740:6:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "internal" }, { id: 3056, nodeType: "FunctionDefinition", src: "11995:457:7", nodes: [], body: { id: 3055, nodeType: "Block", src: "12119:333:7", nodes: [], statements: [{ assignments: [3010], declarations: [{ constant: false, id: 3010, mutability: "mutable", name: "bytesLabel", nameLocation: "12144:10:7", nodeType: "VariableDeclaration", scope: 3055, src: "12129:25:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes" }, typeName: { id: 3009, name: "bytes", nodeType: "ElementaryTypeName", src: "12129:5:7", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 3015, initialValue: { arguments: [{ id: 3013, name: "label", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3004, src: "12163:5:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3012, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "12157:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 3011, name: "bytes", nodeType: "ElementaryTypeName", src: "12157:5:7", typeDescriptions: {} } }, id: 3014, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "12157:12:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, nodeType: "VariableDeclarationStatement", src: "12129:40:7" }, { assignments: [3017], declarations: [{ constant: false, id: 3017, mutability: "mutable", name: "stringlength", nameLocation: "12187:12:7", nodeType: "VariableDeclaration", scope: 3055, src: "12179:20:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3016, name: "uint256", nodeType: "ElementaryTypeName", src: "12179:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3020, initialValue: { expression: { id: 3018, name: "bytesLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3010, src: "12202:10:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3019, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "12213:6:7", memberName: "length", nodeType: "MemberAccess", src: "12202:17:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "12179:40:7" }, { body: { id: 3053, nodeType: "Block", src: "12273:173:7", statements: [{ condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 3045, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 3037, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 3031, name: "bytesLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3010, src: "12291:10:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3035, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3034, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3032, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3022, src: "12302:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 3033, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12306:1:7", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "12302:5:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "12291:17:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "30783330", id: 3036, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12312:4:7", typeDescriptions: { typeIdentifier: "t_rational_48_by_1", typeString: "int_const 48" }, value: "0x30" }, src: "12291:25:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 3044, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 3038, name: "bytesLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3010, src: "12320:10:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3042, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3041, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3039, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3022, src: "12331:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 3040, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12335:1:7", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "12331:5:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "12320:17:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "30783339", id: 3043, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12341:4:7", typeDescriptions: { typeIdentifier: "t_rational_57_by_1", typeString: "int_const 57" }, value: "0x39" }, src: "12320:25:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "12291:54:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseBody: { id: 3051, nodeType: "Block", src: "12398:38:7", statements: [{ id: 3050, nodeType: "Break", src: "12416:5:7" }] }, id: 3052, nodeType: "IfStatement", src: "12287:149:7", trueBody: { id: 3049, nodeType: "Block", src: "12347:45:7", statements: [{ expression: { id: 3047, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "++", prefix: false, src: "12365:12:7", subExpression: { id: 3046, name: "digitCount", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3007, src: "12365:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 3048, nodeType: "ExpressionStatement", src: "12365:12:7" }] } }] }, condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3027, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3025, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3022, src: "12261:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { hexValue: "30", id: 3026, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12265:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "12261:5:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3054, initializationExpression: { assignments: [3022], declarations: [{ constant: false, id: 3022, mutability: "mutable", name: "i", nameLocation: "12243:1:7", nodeType: "VariableDeclaration", scope: 3054, src: "12235:9:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3021, name: "uint256", nodeType: "ElementaryTypeName", src: "12235:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3024, initialValue: { id: 3023, name: "stringlength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3017, src: "12247:12:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "12235:24:7" }, isSimpleCounterLoop: false, loopExpression: { expression: { id: 3029, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "--", prefix: false, src: "12268:3:7", subExpression: { id: 3028, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3022, src: "12268:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 3030, nodeType: "ExpressionStatement", src: "12268:3:7" }, nodeType: "ForStatement", src: "12230:216:7" }] }, documentation: { id: 3002, nodeType: "StructuredDocumentation", src: "11849:141:7", text: `@notice Counts trailing digits in a string.
|
|
2831
|
+
@param label String to analyse.
|
|
2832
|
+
@return digitCount Number of trailing digits.` }, implemented: true, kind: "function", modifiers: [], name: "_countTrailingDigits", nameLocation: "12004:20:7", parameters: { id: 3005, nodeType: "ParameterList", parameters: [{ constant: false, id: 3004, mutability: "mutable", name: "label", nameLocation: "12041:5:7", nodeType: "VariableDeclaration", scope: 3056, src: "12025:21:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 3003, name: "string", nodeType: "ElementaryTypeName", src: "12025:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "12024:23:7" }, returnParameters: { id: 3008, nodeType: "ParameterList", parameters: [{ constant: false, id: 3007, mutability: "mutable", name: "digitCount", nameLocation: "12103:10:7", nodeType: "VariableDeclaration", scope: 3056, src: "12095:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3006, name: "uint256", nodeType: "ElementaryTypeName", src: "12095:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "12094:20:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "internal" }, { id: 3133, nodeType: "FunctionDefinition", src: "12544:567:7", nodes: [], body: { id: 3132, nodeType: "Block", src: "12635:476:7", nodes: [], statements: [{ assignments: [3065], declarations: [{ constant: false, id: 3065, mutability: "mutable", name: "bytesName", nameLocation: "12660:9:7", nodeType: "VariableDeclaration", scope: 3132, src: "12645:24:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes" }, typeName: { id: 3064, name: "bytes", nodeType: "ElementaryTypeName", src: "12645:5:7", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 3070, initialValue: { arguments: [{ id: 3068, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3059, src: "12678:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3067, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "12672:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 3066, name: "bytes", nodeType: "ElementaryTypeName", src: "12672:5:7", typeDescriptions: {} } }, id: 3069, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "12672:11:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, nodeType: "VariableDeclarationStatement", src: "12645:38:7" }, { assignments: [3072], declarations: [{ constant: false, id: 3072, mutability: "mutable", name: "endPosition", nameLocation: "12701:11:7", nodeType: "VariableDeclaration", scope: 3132, src: "12693:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3071, name: "uint256", nodeType: "ElementaryTypeName", src: "12693:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3075, initialValue: { expression: { id: 3073, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3065, src: "12715:9:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3074, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "12725:6:7", memberName: "length", nodeType: "MemberAccess", src: "12715:16:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "12693:38:7" }, { body: { id: 3098, nodeType: "Block", src: "12880:38:7", statements: [{ expression: { id: 3096, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "--", prefix: false, src: "12894:13:7", subExpression: { id: 3095, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3072, src: "12894:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 3097, nodeType: "ExpressionStatement", src: "12894:13:7" }] }, condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 3094, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 3086, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3078, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3076, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3072, src: "12762:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">", rightExpression: { hexValue: "30", id: 3077, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12776:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, src: "12762:15:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 3085, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 3079, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3065, src: "12781:9:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3083, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3082, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3080, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3072, src: "12791:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 3081, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12805:1:7", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "12791:15:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "12781:26:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "30783330", id: 3084, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12811:4:7", typeDescriptions: { typeIdentifier: "t_rational_48_by_1", typeString: "int_const 48" }, value: "0x30" }, src: "12781:34:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "12762:53:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_bytes1", typeString: "bytes1" }, id: 3093, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 3087, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3065, src: "12835:9:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3091, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3090, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3088, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3072, src: "12845:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { hexValue: "31", id: 3089, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12859:1:7", typeDescriptions: { typeIdentifier: "t_rational_1_by_1", typeString: "int_const 1" }, value: "1" }, src: "12845:15:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "12835:26:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "30783339", id: 3092, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12865:4:7", typeDescriptions: { typeIdentifier: "t_rational_57_by_1", typeString: "int_const 57" }, value: "0x39" }, src: "12835:34:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "12762:107:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3099, nodeType: "WhileStatement", src: "12742:176:7" }, { assignments: [3101], declarations: [{ constant: false, id: 3101, mutability: "mutable", name: "output", nameLocation: "12941:6:7", nodeType: "VariableDeclaration", scope: 3132, src: "12928:19:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes" }, typeName: { id: 3100, name: "bytes", nodeType: "ElementaryTypeName", src: "12928:5:7", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 3106, initialValue: { arguments: [{ id: 3104, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3072, src: "12960:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 3103, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "NewExpression", src: "12950:9:7", typeDescriptions: { typeIdentifier: "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", typeString: "function (uint256) pure returns (bytes memory)" }, typeName: { id: 3102, name: "bytes", nodeType: "ElementaryTypeName", src: "12954:5:7", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } } }, id: 3105, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "12950:22:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }, nodeType: "VariableDeclarationStatement", src: "12928:44:7" }, { body: { id: 3125, nodeType: "Block", src: "13024:49:7", statements: [{ expression: { id: 3123, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 3117, name: "output", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3101, src: "13038:6:7", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }, id: 3119, indexExpression: { id: 3118, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3108, src: "13045:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "13038:9:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, nodeType: "Assignment", operator: "=", rightHandSide: { baseExpression: { id: 3120, name: "bytesName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3065, src: "13050:9:7", typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3122, indexExpression: { id: 3121, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3108, src: "13060:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "13050:12:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, src: "13038:24:7", typeDescriptions: { typeIdentifier: "t_bytes1", typeString: "bytes1" } }, id: 3124, nodeType: "ExpressionStatement", src: "13038:24:7" }] }, condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3113, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3111, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3108, src: "13002:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<", rightExpression: { id: 3112, name: "endPosition", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3072, src: "13006:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "13002:15:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3126, initializationExpression: { assignments: [3108], declarations: [{ constant: false, id: 3108, mutability: "mutable", name: "i", nameLocation: "12995:1:7", nodeType: "VariableDeclaration", scope: 3126, src: "12987:9:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3107, name: "uint256", nodeType: "ElementaryTypeName", src: "12987:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3110, initialValue: { hexValue: "30", id: 3109, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "12999:1:7", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }, nodeType: "VariableDeclarationStatement", src: "12987:13:7" }, isSimpleCounterLoop: true, loopExpression: { expression: { id: 3115, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "++", prefix: false, src: "13019:3:7", subExpression: { id: 3114, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3108, src: "13019:1:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 3116, nodeType: "ExpressionStatement", src: "13019:3:7" }, nodeType: "ForStatement", src: "12982:91:7" }, { expression: { arguments: [{ id: 3129, name: "output", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3101, src: "13097:6:7", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" }], id: 3128, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "13090:6:7", typeDescriptions: { typeIdentifier: "t_type$_t_string_storage_ptr_$", typeString: "type(string storage pointer)" }, typeName: { id: 3127, name: "string", nodeType: "ElementaryTypeName", src: "13090:6:7", typeDescriptions: {} } }, id: 3130, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "13090:14:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, functionReturnParameters: 3063, id: 3131, nodeType: "Return", src: "13083:21:7" }] }, documentation: { id: 3057, nodeType: "StructuredDocumentation", src: "12458:81:7", text: `@notice Strips trailing digits from a name.
|
|
2833
|
+
@param name Domain label.` }, implemented: true, kind: "function", modifiers: [], name: "_stripDigits", nameLocation: "12553:12:7", parameters: { id: 3060, nodeType: "ParameterList", parameters: [{ constant: false, id: 3059, mutability: "mutable", name: "name", nameLocation: "12582:4:7", nodeType: "VariableDeclaration", scope: 3133, src: "12566:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 3058, name: "string", nodeType: "ElementaryTypeName", src: "12566:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "12565:22:7" }, returnParameters: { id: 3063, nodeType: "ParameterList", parameters: [{ constant: false, id: 3062, mutability: "mutable", name: "baseName", nameLocation: "12625:8:7", nodeType: "VariableDeclaration", scope: 3133, src: "12611:22:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 3061, name: "string", nodeType: "ElementaryTypeName", src: "12611:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "12610:24:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "internal" }, { id: 3222, nodeType: "FunctionDefinition", src: "13117:994:7", nodes: [], body: { id: 3221, nodeType: "Block", src: "13268:843:7", nodes: [], statements: [{ assignments: [3144], declarations: [{ constant: false, id: 3144, mutability: "mutable", name: "totallength", nameLocation: "13286:11:7", nodeType: "VariableDeclaration", scope: 3221, src: "13278:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3143, name: "uint256", nodeType: "ElementaryTypeName", src: "13278:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3150, initialValue: { expression: { arguments: [{ id: 3147, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3135, src: "13306:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3146, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "13300:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_bytes_storage_ptr_$", typeString: "type(bytes storage pointer)" }, typeName: { id: 3145, name: "bytes", nodeType: "ElementaryTypeName", src: "13300:5:7", typeDescriptions: {} } }, id: 3148, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "13300:11:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_calldata_ptr", typeString: "bytes calldata" } }, id: 3149, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "13312:6:7", memberName: "length", nodeType: "MemberAccess", src: "13300:18:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "13278:40:7" }, { assignments: [3152], declarations: [{ constant: false, id: 3152, mutability: "mutable", name: "trailingDigits", nameLocation: "13336:14:7", nodeType: "VariableDeclaration", scope: 3221, src: "13328:22:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3151, name: "uint256", nodeType: "ElementaryTypeName", src: "13328:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3156, initialValue: { arguments: [{ id: 3154, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3135, src: "13374:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3153, name: "_countTrailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3056, src: "13353:20:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_uint256_$", typeString: "function (string calldata) pure returns (uint256)" } }, id: 3155, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "13353:26:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "13328:51:7" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3160, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3158, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3152, src: "13398:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "32", id: 3159, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "13416:1:7", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "13398:19:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "4e616d652063616e2068617665206d6178696d756d203220646967697420737566666978", id: 3162, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "13428:38:7", typeDescriptions: { typeIdentifier: "t_stringliteral_63492d9571144dcb7601da998aa9bd05b8551a271ab715f8e26ba8398bcee36d", typeString: 'literal_string "Name can have maximum 2 digit suffix"' }, value: "Name can have maximum 2 digit suffix" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_63492d9571144dcb7601da998aa9bd05b8551a271ab715f8e26ba8398bcee36d", typeString: 'literal_string "Name can have maximum 2 digit suffix"' }], id: 3161, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "13419:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 3163, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "13419:48:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 3157, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "13390:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 3164, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "13390:78:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3165, nodeType: "ExpressionStatement", src: "13390:78:7" }, { assignments: [3167], declarations: [{ constant: false, id: 3167, mutability: "mutable", name: "baselength", nameLocation: "13487:10:7", nodeType: "VariableDeclaration", scope: 3221, src: "13479:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 3166, name: "uint256", nodeType: "ElementaryTypeName", src: "13479:7:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 3171, initialValue: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3170, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3168, name: "totallength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3144, src: "13500:11:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { id: 3169, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3152, src: "13514:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "13500:28:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "13479:49:7" }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3174, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3172, name: "baselength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3167, src: "13543:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "35", id: 3173, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "13557:1:7", typeDescriptions: { typeIdentifier: "t_rational_5_by_1", typeString: "int_const 5" }, value: "5" }, src: "13543:15:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3181, nodeType: "IfStatement", src: "13539:100:7", trueBody: { id: 3180, nodeType: "Block", src: "13560:79:7", statements: [{ expression: { components: [{ expression: { id: 3175, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "13582:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 3176, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "13592:8:7", memberName: "Reserved", nodeType: "MemberAccess", referencedDeclaration: 2035, src: "13582:18:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "526573657276656420666f7220476f7665726e616e6365", id: 3177, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "13602:25:7", typeDescriptions: { typeIdentifier: "t_stringliteral_b7956ca3f0978aa4071bf09e113e895a6f37785ed864786f858d0445711ea48f", typeString: 'literal_string "Reserved for Governance"' }, value: "Reserved for Governance" }], id: 3178, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "13581:47:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_stringliteral_b7956ca3f0978aa4071bf09e113e895a6f37785ed864786f858d0445711ea48f_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Reserved for Governance")' } }, functionReturnParameters: 3142, id: 3179, nodeType: "Return", src: "13574:54:7" }] } }, { condition: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 3188, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3184, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3182, name: "baselength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3167, src: "13653:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { hexValue: "36", id: 3183, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "13667:1:7", typeDescriptions: { typeIdentifier: "t_rational_6_by_1", typeString: "int_const 6" }, value: "6" }, src: "13653:15:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "&&", rightExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3187, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3185, name: "baselength", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3167, src: "13672:10:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<=", rightExpression: { hexValue: "38", id: 3186, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "13686:1:7", typeDescriptions: { typeIdentifier: "t_rational_8_by_1", typeString: "int_const 8" }, value: "8" }, src: "13672:15:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "13653:34:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3205, nodeType: "IfStatement", src: "13649:271:7", trueBody: { id: 3204, nodeType: "Block", src: "13689:231:7", statements: [{ condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3191, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3189, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3152, src: "13707:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "32", id: 3190, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "13725:1:7", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "13707:19:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3198, nodeType: "IfStatement", src: "13703:126:7", trueBody: { id: 3197, nodeType: "Block", src: "13728:101:7", statements: [{ expression: { components: [{ expression: { id: 3192, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "13754:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 3193, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "13764:7:7", memberName: "PopLite", nodeType: "MemberAccess", referencedDeclaration: 2033, src: "13754:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "5265717569726573204c6967687420706572736f6e686f6f6420766572696669636174696f6e", id: 3194, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "13773:40:7", typeDescriptions: { typeIdentifier: "t_stringliteral_68ecbc02e8d7f383157306e048c0a9c1f32862047503a6eabba9734ed82ac713", typeString: 'literal_string "Requires Light personhood verification"' }, value: "Requires Light personhood verification" }], id: 3195, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "13753:61:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_stringliteral_68ecbc02e8d7f383157306e048c0a9c1f32862047503a6eabba9734ed82ac713_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Requires Light personhood verification")' } }, functionReturnParameters: 3142, id: 3196, nodeType: "Return", src: "13746:68:7" }] } }, { expression: { components: [{ expression: { id: 3199, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "13850:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 3200, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "13860:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "13850:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "52657175697265732046756c6c20706572736f6e686f6f6420766572696669636174696f6e", id: 3201, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "13869:39:7", typeDescriptions: { typeIdentifier: "t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71", typeString: 'literal_string "Requires Full personhood verification"' }, value: "Requires Full personhood verification" }], id: 3202, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "13849:60:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Requires Full personhood verification")' } }, functionReturnParameters: 3142, id: 3203, nodeType: "Return", src: "13842:67:7" }] } }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3208, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3206, name: "trailingDigits", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3152, src: "13934:14:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { hexValue: "32", id: 3207, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "13952:1:7", typeDescriptions: { typeIdentifier: "t_rational_2_by_1", typeString: "int_const 2" }, value: "2" }, src: "13934:19:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3215, nodeType: "IfStatement", src: "13930:97:7", trueBody: { id: 3214, nodeType: "Block", src: "13955:72:7", statements: [{ expression: { components: [{ expression: { id: 3209, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "13977:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 3210, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "13987:8:7", memberName: "NoStatus", nodeType: "MemberAccess", referencedDeclaration: 2032, src: "13977:18:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "417661696c61626c6520746f20616c6c", id: 3211, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "13997:18:7", typeDescriptions: { typeIdentifier: "t_stringliteral_e245709084d01d1a9a8ee214a6f7bf853604ec8557b914522d179e589afba242", typeString: 'literal_string "Available to all"' }, value: "Available to all" }], id: 3212, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "13976:40:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_stringliteral_e245709084d01d1a9a8ee214a6f7bf853604ec8557b914522d179e589afba242_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Available to all")' } }, functionReturnParameters: 3142, id: 3213, nodeType: "Return", src: "13969:47:7" }] } }, { expression: { components: [{ expression: { id: 3216, name: "PopStatus", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2036, src: "14045:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_enum$_PopStatus_$2036_$", typeString: "type(enum IPopRules.PopStatus)" } }, id: 3217, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "14055:7:7", memberName: "PopFull", nodeType: "MemberAccess", referencedDeclaration: 2034, src: "14045:17:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, { hexValue: "52657175697265732046756c6c20706572736f6e686f6f6420766572696669636174696f6e", id: 3218, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "14064:39:7", typeDescriptions: { typeIdentifier: "t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71", typeString: 'literal_string "Requires Full personhood verification"' }, value: "Requires Full personhood verification" }], id: 3219, isConstant: false, isInlineArray: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "TupleExpression", src: "14044:60:7", typeDescriptions: { typeIdentifier: "t_tuple$_t_enum$_PopStatus_$2036_$_t_stringliteral_fcaf390942bb7b7b418bcf8cdb58c20d680de506cf500f16c439be06ec5c5a71_$", typeString: 'tuple(enum IPopRules.PopStatus,literal_string "Requires Full personhood verification")' } }, functionReturnParameters: 3142, id: 3220, nodeType: "Return", src: "14037:67:7" }] }, implemented: true, kind: "function", modifiers: [], name: "_classifyValidatedName", nameLocation: "13126:22:7", parameters: { id: 3136, nodeType: "ParameterList", parameters: [{ constant: false, id: 3135, mutability: "mutable", name: "name", nameLocation: "13165:4:7", nodeType: "VariableDeclaration", scope: 3222, src: "13149:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 3134, name: "string", nodeType: "ElementaryTypeName", src: "13149:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "13148:22:7" }, returnParameters: { id: 3142, nodeType: "ParameterList", parameters: [{ constant: false, id: 3139, mutability: "mutable", name: "requirement", nameLocation: "13228:11:7", nodeType: "VariableDeclaration", scope: 3222, src: "13218:21:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" }, typeName: { id: 3138, nodeType: "UserDefinedTypeName", pathNode: { id: 3137, name: "PopStatus", nameLocations: ["13218:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2036, src: "13218:9:7" }, referencedDeclaration: 2036, src: "13218:9:7", typeDescriptions: { typeIdentifier: "t_enum$_PopStatus_$2036", typeString: "enum IPopRules.PopStatus" } }, visibility: "internal" }, { constant: false, id: 3141, mutability: "mutable", name: "message", nameLocation: "13255:7:7", nodeType: "VariableDeclaration", scope: 3222, src: "13241:21:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 3140, name: "string", nodeType: "ElementaryTypeName", src: "13241:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "13217:46:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "internal" }, { id: 3237, nodeType: "FunctionDefinition", src: "14117:166:7", nodes: [], body: { id: 3236, nodeType: "Block", src: "14185:98:7", nodes: [], statements: [{ expression: { arguments: [{ arguments: [], expression: { argumentTypes: [], expression: { id: 3228, name: "name", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3224, src: "14203:4:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, id: 3229, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "14208:13:7", memberName: "isSingleLabel", nodeType: "MemberAccess", referencedDeclaration: 12835, src: "14203:18:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$_t_bool_$attached_to$_t_string_calldata_ptr_$", typeString: "function (string calldata) pure returns (bool)" } }, id: 3230, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "14203:20:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "4e616d65206d757374206265206c6f7765726361736520415343494920444e53206c6162656c", id: 3232, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "14234:40:7", typeDescriptions: { typeIdentifier: "t_stringliteral_942317715876f4c711cb3996c127435c90bb1398d8db2afbd968656b2e8643d7", typeString: 'literal_string "Name must be lowercase ASCII DNS label"' }, value: "Name must be lowercase ASCII DNS label" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_942317715876f4c711cb3996c127435c90bb1398d8db2afbd968656b2e8643d7", typeString: 'literal_string "Name must be lowercase ASCII DNS label"' }], id: 3231, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "14225:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 3233, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "14225:50:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 3227, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "14195:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 3234, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "14195:81:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3235, nodeType: "ExpressionStatement", src: "14195:81:7" }] }, implemented: true, kind: "function", modifiers: [], name: "_requireCanonicalLabel", nameLocation: "14126:22:7", parameters: { id: 3225, nodeType: "ParameterList", parameters: [{ constant: false, id: 3224, mutability: "mutable", name: "name", nameLocation: "14165:4:7", nodeType: "VariableDeclaration", scope: 3237, src: "14149:20:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 3223, name: "string", nodeType: "ElementaryTypeName", src: "14149:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "14148:22:7" }, returnParameters: { id: 3226, nodeType: "ParameterList", parameters: [], src: "14185:0:7" }, scope: 3420, stateMutability: "pure", virtual: false, visibility: "internal" }, { id: 3259, nodeType: "FunctionDefinition", src: "14327:251:7", nodes: [], body: { id: 3258, nodeType: "Block", src: "14472:106:7", nodes: [], statements: [{ expression: { commonType: { typeIdentifier: "t_bool", typeString: "bool" }, id: 3256, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { commonType: { typeIdentifier: "t_bytes4", typeString: "bytes4" }, id: 3251, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 3246, name: "interfaceId", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3240, src: "14489:11:7", typeDescriptions: { typeIdentifier: "t_bytes4", typeString: "bytes4" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { arguments: [{ id: 3248, name: "IPopRules", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2195, src: "14509:9:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IPopRules_$2195_$", typeString: "type(contract IPopRules)" } }], expression: { argumentTypes: [{ typeIdentifier: "t_type$_t_contract$_IPopRules_$2195_$", typeString: "type(contract IPopRules)" }], id: 3247, name: "type", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -27, src: "14504:4:7", typeDescriptions: { typeIdentifier: "t_function_metatype_pure$__$returns$__$", typeString: "function () pure" } }, id: 3249, isConstant: false, isLValue: false, isPure: true, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "14504:15:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_magic_meta_type_t_contract$_IPopRules_$2195", typeString: "type(contract IPopRules)" } }, id: 3250, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "14520:11:7", memberName: "interfaceId", nodeType: "MemberAccess", src: "14504:27:7", typeDescriptions: { typeIdentifier: "t_bytes4", typeString: "bytes4" } }, src: "14489:42:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, nodeType: "BinaryOperation", operator: "||", rightExpression: { arguments: [{ id: 3254, name: "interfaceId", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3240, src: "14559:11:7", typeDescriptions: { typeIdentifier: "t_bytes4", typeString: "bytes4" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bytes4", typeString: "bytes4" }], expression: { id: 3252, name: "super", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -25, src: "14535:5:7", typeDescriptions: { typeIdentifier: "t_type$_t_super$_PopRules_$3420_$", typeString: "type(contract super PopRules)" } }, id: 3253, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "14541:17:7", memberName: "supportsInterface", nodeType: "MemberAccess", referencedDeclaration: 54753, src: "14535:23:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", typeString: "function (bytes4) view returns (bool)" } }, id: 3255, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "14535:36:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, src: "14489:82:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, functionReturnParameters: 3245, id: 3257, nodeType: "Return", src: "14482:89:7" }] }, baseFunctions: [54753], documentation: { id: 3238, nodeType: "StructuredDocumentation", src: "14289:33:7", text: "@inheritdoc ERC165Upgradeable" }, functionSelector: "01ffc9a7", implemented: true, kind: "function", modifiers: [], name: "supportsInterface", nameLocation: "14336:17:7", overrides: { id: 3242, nodeType: "OverrideSpecifier", overrides: [], src: "14426:8:7" }, parameters: { id: 3241, nodeType: "ParameterList", parameters: [{ constant: false, id: 3240, mutability: "mutable", name: "interfaceId", nameLocation: "14361:11:7", nodeType: "VariableDeclaration", scope: 3259, src: "14354:18:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bytes4", typeString: "bytes4" }, typeName: { id: 3239, name: "bytes4", nodeType: "ElementaryTypeName", src: "14354:6:7", typeDescriptions: { typeIdentifier: "t_bytes4", typeString: "bytes4" } }, visibility: "internal" }], src: "14353:20:7" }, returnParameters: { id: 3245, nodeType: "ParameterList", parameters: [{ constant: false, id: 3244, mutability: "mutable", name: "supported", nameLocation: "14457:9:7", nodeType: "VariableDeclaration", scope: 3259, src: "14452:14:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" }, typeName: { id: 3243, name: "bool", nodeType: "ElementaryTypeName", src: "14452:4:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, visibility: "internal" }], src: "14451:16:7" }, scope: 3420, stateMutability: "view", virtual: true, visibility: "public" }, { id: 3269, nodeType: "FunctionDefinition", src: "14620:84:7", nodes: [], body: { id: 3268, nodeType: "Block", src: "14702:2:7", nodes: [], statements: [] }, baseFunctions: [56249], documentation: { id: 3260, nodeType: "StructuredDocumentation", src: "14584:31:7", text: "@inheritdoc UUPSUpgradeable" }, implemented: true, kind: "function", modifiers: [{ id: 3266, kind: "modifierInvocation", modifierName: { id: 3265, name: "onlyOwner", nameLocations: ["14692:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 53475, src: "14692:9:7" }, nodeType: "ModifierInvocation", src: "14692:9:7" }], name: "_authorizeUpgrade", nameLocation: "14629:17:7", overrides: { id: 3264, nodeType: "OverrideSpecifier", overrides: [], src: "14683:8:7" }, parameters: { id: 3263, nodeType: "ParameterList", parameters: [{ constant: false, id: 3262, mutability: "mutable", name: "newImplementation", nameLocation: "14655:17:7", nodeType: "VariableDeclaration", scope: 3269, src: "14647:25:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 3261, name: "address", nodeType: "ElementaryTypeName", src: "14647:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "14646:27:7" }, returnParameters: { id: 3267, nodeType: "ParameterList", parameters: [], src: "14702:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "internal" }, { id: 3280, nodeType: "FunctionDefinition", src: "14758:119:7", nodes: [], body: { id: 3279, nodeType: "Block", src: "14837:40:7", nodes: [], statements: [{ expression: { id: 3277, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 3275, name: "versionString", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3273, src: "14847:13:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { hexValue: "312e302e30", id: 3276, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "14863:7:7", typeDescriptions: { typeIdentifier: "t_stringliteral_06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c", typeString: 'literal_string "1.0.0"' }, value: "1.0.0" }, src: "14847:23:7", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 3278, nodeType: "ExpressionStatement", src: "14847:23:7" }] }, documentation: { id: 3270, nodeType: "StructuredDocumentation", src: "14710:43:7", text: "@notice Returns implementation version." }, functionSelector: "54fd4d50", implemented: true, kind: "function", modifiers: [], name: "version", nameLocation: "14767:7:7", parameters: { id: 3271, nodeType: "ParameterList", parameters: [], src: "14774:2:7" }, returnParameters: { id: 3274, nodeType: "ParameterList", parameters: [{ constant: false, id: 3273, mutability: "mutable", name: "versionString", nameLocation: "14822:13:7", nodeType: "VariableDeclaration", scope: 3280, src: "14808:27:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 3272, name: "string", nodeType: "ElementaryTypeName", src: "14808:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "14807:29:7" }, scope: 3420, stateMutability: "pure", virtual: true, visibility: "external" }, { id: 3308, nodeType: "FunctionDefinition", src: "14965:230:7", nodes: [], body: { id: 3307, nodeType: "Block", src: "15004:191:7", nodes: [], statements: [{ assignments: [3286], declarations: [{ constant: false, id: 3286, mutability: "mutable", name: "registrar", nameLocation: "15029:9:7", nodeType: "VariableDeclaration", scope: 3307, src: "15014:24:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_DotnsRegistrar_$6098", typeString: "contract DotnsRegistrar" }, typeName: { id: 3285, nodeType: "UserDefinedTypeName", pathNode: { id: 3284, name: "DotnsRegistrar", nameLocations: ["15014:14:7"], nodeType: "IdentifierPath", referencedDeclaration: 6098, src: "15014:14:7" }, referencedDeclaration: 6098, src: "15014:14:7", typeDescriptions: { typeIdentifier: "t_contract$_DotnsRegistrar_$6098", typeString: "contract DotnsRegistrar" } }, visibility: "internal" }], id: 3294, initialValue: { arguments: [{ arguments: [{ expression: { id: 3290, name: "DotnsConstants", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 12398, src: "15077:14:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_DotnsConstants_$12398_$", typeString: "type(library DotnsConstants)" } }, id: 3291, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "15092:9:7", memberName: "REGISTRAR", nodeType: "MemberAccess", referencedDeclaration: 12320, src: "15077:24:7", typeDescriptions: { typeIdentifier: "t_bytes32", typeString: "bytes32" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bytes32", typeString: "bytes32" }], expression: { id: 3288, name: "protocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2249, src: "15056:16:7", typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, id: 3289, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "15073:3:7", memberName: "get", nodeType: "MemberAccess", referencedDeclaration: 8932, src: "15056:20:7", typeDescriptions: { typeIdentifier: "t_function_external_view$_t_bytes32_$returns$_t_address_$", typeString: "function (bytes32) view external returns (address)" } }, id: 3292, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15056:46:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 3287, name: "DotnsRegistrar", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 6098, src: "15041:14:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_DotnsRegistrar_$6098_$", typeString: "type(contract DotnsRegistrar)" } }, id: 3293, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15041:62:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_DotnsRegistrar_$6098", typeString: "contract DotnsRegistrar" } }, nodeType: "VariableDeclarationStatement", src: "15014:89:7" }, { expression: { arguments: [{ arguments: [{ arguments: [{ expression: { id: 3299, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "15160:3:7", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 3300, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "15164:6:7", memberName: "sender", nodeType: "MemberAccess", src: "15160:10:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 3298, name: "IDotnsController", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 7245, src: "15143:16:7", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IDotnsController_$7245_$", typeString: "type(contract IDotnsController)" } }, id: 3301, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15143:28:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IDotnsController_$7245", typeString: "contract IDotnsController" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_IDotnsController_$7245", typeString: "contract IDotnsController" }], expression: { id: 3296, name: "registrar", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3286, src: "15121:9:7", typeDescriptions: { typeIdentifier: "t_contract$_DotnsRegistrar_$6098", typeString: "contract DotnsRegistrar" } }, id: 3297, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "15131:11:7", memberName: "controllers", nodeType: "MemberAccess", referencedDeclaration: 5038, src: "15121:21:7", typeDescriptions: { typeIdentifier: "t_function_external_view$_t_contract$_IDotnsController_$7245_$returns$_t_bool_$", typeString: "function (contract IDotnsController) view external returns (bool)" } }, id: 3302, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15121:51:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [], expression: { argumentTypes: [], id: 3303, name: "NotRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2060, src: "15174:11:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$__$returns$_t_error_$", typeString: "function () pure returns (error)" } }, id: 3304, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15174:13:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 3295, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "15113:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 3305, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15113:75:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3306, nodeType: "ExpressionStatement", src: "15113:75:7" }] }, documentation: { id: 3281, nodeType: "StructuredDocumentation", src: "14883:77:7", text: "@notice Ensures the caller is any controller authorised on the registrar." }, implemented: true, kind: "function", modifiers: [], name: "_onlyRegistry", nameLocation: "14974:13:7", parameters: { id: 3282, nodeType: "ParameterList", parameters: [], src: "14987:2:7" }, returnParameters: { id: 3283, nodeType: "ParameterList", parameters: [], src: "15004:0:7" }, scope: 3420, stateMutability: "view", virtual: false, visibility: "internal" }, { id: 3373, nodeType: "FunctionDefinition", src: "15231:1262:7", nodes: [], body: { id: 3372, nodeType: "Block", src: "15390:1103:7", nodes: [], statements: [{ expression: { arguments: [{ id: 3320, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3311, src: "15423:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3319, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "15400:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 3321, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15400:32:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3322, nodeType: "ExpressionStatement", src: "15400:32:7" }, { assignments: [3325], declarations: [{ constant: false, id: 3325, mutability: "mutable", name: "existing", nameLocation: "15462:8:7", nodeType: "VariableDeclaration", scope: 3372, src: "15443:27:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 3324, nodeType: "UserDefinedTypeName", pathNode: { id: 3323, name: "Reservation", nameLocations: ["15443:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "15443:11:7" }, referencedDeclaration: 2080, src: "15443:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 3329, initialValue: { baseExpression: { id: 3326, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "15473:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 3328, indexExpression: { id: 3327, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3311, src: "15486:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "15473:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "15443:52:7" }, { condition: { arguments: [{ id: 3331, name: "existing", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3325, src: "15517:8:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" }], id: 3330, name: "_isLive", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3001, src: "15509:7:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_struct$_Reservation_$2080_memory_ptr_$returns$_t_bool_$", typeString: "function (struct IPopRules.Reservation memory) view returns (bool)" } }, id: 3332, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15509:17:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3344, nodeType: "IfStatement", src: "15505:531:7", trueBody: { id: 3343, nodeType: "Block", src: "15528:508:7", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 3337, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 3334, name: "existing", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3325, src: "15951:8:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 3335, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "15960:5:7", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 2075, src: "15951:14:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { id: 3336, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3313, src: "15969:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "15951:29:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "42617365206e616d652068656c6420627920616e6f746865722075736572", id: 3339, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "15991:32:7", typeDescriptions: { typeIdentifier: "t_stringliteral_ebd091e844a24eb80c0f1571463a6696b270fed2885ae0630db6271cee3e1f13", typeString: 'literal_string "Base name held by another user"' }, value: "Base name held by another user" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_ebd091e844a24eb80c0f1571463a6696b270fed2885ae0630db6271cee3e1f13", typeString: 'literal_string "Base name held by another user"' }], id: 3338, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "15982:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 3340, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15982:42:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 3333, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "15943:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 3341, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "15943:82:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3342, nodeType: "ExpressionStatement", src: "15943:82:7" }] } }, { assignments: [3346], declarations: [{ constant: false, id: 3346, mutability: "mutable", name: "expiryTime", nameLocation: "16236:10:7", nodeType: "VariableDeclaration", scope: 3372, src: "16229:17:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" }, typeName: { id: 3345, name: "uint64", nodeType: "ElementaryTypeName", src: "16229:6:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, visibility: "internal" }], id: 3354, initialValue: { arguments: [{ commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 3352, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 3349, name: "block", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -4, src: "16256:5:7", typeDescriptions: { typeIdentifier: "t_magic_block", typeString: "block" } }, id: 3350, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "16262:9:7", memberName: "timestamp", nodeType: "MemberAccess", src: "16256:15:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "+", rightExpression: { id: 3351, name: "MAX_RESERVATION_TIME", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2245, src: "16274:20:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "16256:38:7", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 3348, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "16249:6:7", typeDescriptions: { typeIdentifier: "t_type$_t_uint64_$", typeString: "type(uint64)" }, typeName: { id: 3347, name: "uint64", nodeType: "ElementaryTypeName", src: "16249:6:7", typeDescriptions: {} } }, id: 3353, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "16249:46:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, nodeType: "VariableDeclarationStatement", src: "16229:66:7" }, { expression: { id: 3364, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 3355, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "16305:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 3357, indexExpression: { id: 3356, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3311, src: "16318:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "16305:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ id: 3359, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3313, src: "16362:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 3360, name: "expiryTime", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3346, src: "16384:10:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }, { expression: { id: 3361, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "16408:3:7", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 3362, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "16412:6:7", memberName: "sender", nodeType: "MemberAccess", src: "16408:10:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_uint64", typeString: "uint64" }, { typeIdentifier: "t_address", typeString: "address" }], id: 3358, name: "Reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2080, src: "16342:11:7", typeDescriptions: { typeIdentifier: "t_type$_t_struct$_Reservation_$2080_storage_ptr_$", typeString: "type(struct IPopRules.Reservation storage pointer)" } }, id: 3363, isConstant: false, isLValue: false, isPure: false, kind: "structConstructorCall", lValueRequested: false, nameLocations: ["16355:5:7", "16375:7:7", "16396:10:7"], names: ["owner", "expires", "controller"], nodeType: "FunctionCall", src: "16342:78:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, src: "16305:115:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, id: 3365, nodeType: "ExpressionStatement", src: "16305:115:7" }, { eventCall: { arguments: [{ id: 3367, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3311, src: "16452:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, { id: 3368, name: "userAddress", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3313, src: "16462:11:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 3369, name: "expiryTime", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3346, src: "16475:10:7", typeDescriptions: { typeIdentifier: "t_uint64", typeString: "uint64" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }, { typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_uint64", typeString: "uint64" }], id: 3366, name: "BaseNameReserved", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2045, src: "16435:16:7", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint64_$returns$__$", typeString: "function (string memory,address,uint64)" } }, id: 3370, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "16435:51:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3371, nodeType: "EmitStatement", src: "16430:56:7" }] }, baseFunctions: [2118], documentation: { id: 3309, nodeType: "StructuredDocumentation", src: "15201:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "2b0282ae", implemented: true, kind: "function", modifiers: [{ id: 3317, kind: "modifierInvocation", modifierName: { id: 3316, name: "onlyRegistry", nameLocations: ["15373:12:7"], nodeType: "IdentifierPath", referencedDeclaration: 2261, src: "15373:12:7" }, nodeType: "ModifierInvocation", src: "15373:12:7" }], name: "reserveBaseNameForPop", nameLocation: "15240:21:7", overrides: { id: 3315, nodeType: "OverrideSpecifier", overrides: [], src: "15356:8:7" }, parameters: { id: 3314, nodeType: "ParameterList", parameters: [{ constant: false, id: 3311, mutability: "mutable", name: "baseName", nameLocation: "15287:8:7", nodeType: "VariableDeclaration", scope: 3373, src: "15271:24:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 3310, name: "string", nodeType: "ElementaryTypeName", src: "15271:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }, { constant: false, id: 3313, mutability: "mutable", name: "userAddress", nameLocation: "15313:11:7", nodeType: "VariableDeclaration", scope: 3373, src: "15305:19:7", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 3312, name: "address", nodeType: "ElementaryTypeName", src: "15305:7:7", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "15261:69:7" }, returnParameters: { id: 3318, nodeType: "ParameterList", parameters: [], src: "15390:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 3419, nodeType: "FunctionDefinition", src: "16529:777:7", nodes: [], body: { id: 3418, nodeType: "Block", src: "16611:695:7", nodes: [], statements: [{ expression: { arguments: [{ id: 3383, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3376, src: "16644:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3382, name: "_requireCanonicalLabel", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3237, src: "16621:22:7", typeDescriptions: { typeIdentifier: "t_function_internal_pure$_t_string_calldata_ptr_$returns$__$", typeString: "function (string calldata) pure" } }, id: 3384, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "16621:32:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3385, nodeType: "ExpressionStatement", src: "16621:32:7" }, { assignments: [3388], declarations: [{ constant: false, id: 3388, mutability: "mutable", name: "reservation", nameLocation: "16682:11:7", nodeType: "VariableDeclaration", scope: 3418, src: "16663:30:7", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation" }, typeName: { id: 3387, nodeType: "UserDefinedTypeName", pathNode: { id: 3386, name: "Reservation", nameLocations: ["16663:11:7"], nodeType: "IdentifierPath", referencedDeclaration: 2080, src: "16663:11:7" }, referencedDeclaration: 2080, src: "16663:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage_ptr", typeString: "struct IPopRules.Reservation" } }, visibility: "internal" }], id: 3392, initialValue: { baseExpression: { id: 3389, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "16696:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 3391, indexExpression: { id: 3390, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3376, src: "16709:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "16696:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, nodeType: "VariableDeclarationStatement", src: "16663:55:7" }, { condition: { arguments: [{ id: 3394, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3388, src: "17039:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" }], id: 3393, name: "_isLive", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3001, src: "17031:7:7", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_struct$_Reservation_$2080_memory_ptr_$returns$_t_bool_$", typeString: "function (struct IPopRules.Reservation memory) view returns (bool)" } }, id: 3395, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "17031:20:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 3408, nodeType: "IfStatement", src: "17027:193:7", trueBody: { id: 3407, nodeType: "Block", src: "17053:167:7", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 3401, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 3397, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "17092:3:7", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 3398, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "17096:6:7", memberName: "sender", nodeType: "MemberAccess", src: "17092:10:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 3399, name: "reservation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3388, src: "17106:11:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_memory_ptr", typeString: "struct IPopRules.Reservation memory" } }, id: 3400, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, memberLocation: "17118:10:7", memberName: "controller", nodeType: "MemberAccess", referencedDeclaration: 2079, src: "17106:22:7", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "17092:36:7", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ hexValue: "4f6e6c7920726573657276696e6720636f6e74726f6c6c65722063616e2072656c65617365", id: 3403, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "17155:39:7", typeDescriptions: { typeIdentifier: "t_stringliteral_163b694623048e733106fb52ae00f126e3917ddf6c89415a11e6986321cf54b4", typeString: 'literal_string "Only reserving controller can release"' }, value: "Only reserving controller can release" }], expression: { argumentTypes: [{ typeIdentifier: "t_stringliteral_163b694623048e733106fb52ae00f126e3917ddf6c89415a11e6986321cf54b4", typeString: 'literal_string "Only reserving controller can release"' }], id: 3402, name: "PopError", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2057, src: "17146:8:7", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$", typeString: "function (string memory) pure returns (error)" } }, id: 3404, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "17146:49:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 3396, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "17067:7:7", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 3405, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "17067:142:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3406, nodeType: "ExpressionStatement", src: "17067:142:7" }] } }, { expression: { id: 3412, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "delete", prefix: true, src: "17229:29:7", subExpression: { baseExpression: { id: 3409, name: "reservations", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2241, src: "17236:12:7", typeDescriptions: { typeIdentifier: "t_mapping$_t_string_memory_ptr_$_t_struct$_Reservation_$2080_storage_$", typeString: "mapping(string memory => struct IPopRules.Reservation storage ref)" } }, id: 3411, indexExpression: { id: 3410, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3376, src: "17249:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "17236:22:7", typeDescriptions: { typeIdentifier: "t_struct$_Reservation_$2080_storage", typeString: "struct IPopRules.Reservation storage ref" } }, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3413, nodeType: "ExpressionStatement", src: "17229:29:7" }, { eventCall: { arguments: [{ id: 3415, name: "baseName", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 3376, src: "17290:8:7", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" } }], expression: { argumentTypes: [{ typeIdentifier: "t_string_calldata_ptr", typeString: "string calldata" }], id: 3414, name: "BaseNameReleased", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 2110, src: "17273:16:7", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", typeString: "function (string memory)" } }, id: 3416, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "17273:26:7", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 3417, nodeType: "EmitStatement", src: "17268:31:7" }] }, baseFunctions: [2124], documentation: { id: 3374, nodeType: "StructuredDocumentation", src: "16499:25:7", text: "@inheritdoc IPopRules" }, functionSelector: "dbc13dda", implemented: true, kind: "function", modifiers: [{ id: 3380, kind: "modifierInvocation", modifierName: { id: 3379, name: "onlyRegistry", nameLocations: ["16598:12:7"], nodeType: "IdentifierPath", referencedDeclaration: 2261, src: "16598:12:7" }, nodeType: "ModifierInvocation", src: "16598:12:7" }], name: "releaseBaseName", nameLocation: "16538:15:7", overrides: { id: 3378, nodeType: "OverrideSpecifier", overrides: [], src: "16589:8:7" }, parameters: { id: 3377, nodeType: "ParameterList", parameters: [{ constant: false, id: 3376, mutability: "mutable", name: "baseName", nameLocation: "16570:8:7", nodeType: "VariableDeclaration", scope: 3419, src: "16554:24:7", stateVariable: false, storageLocation: "calldata", typeDescriptions: { typeIdentifier: "t_string_calldata_ptr", typeString: "string" }, typeName: { id: 3375, name: "string", nodeType: "ElementaryTypeName", src: "16554:6:7", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "16553:26:7" }, returnParameters: { id: 3381, nodeType: "ParameterList", parameters: [], src: "16611:0:7" }, scope: 3420, stateMutability: "nonpayable", virtual: false, visibility: "external" }], abstract: false, baseContracts: [{ baseName: { id: 2221, name: "Initializable", nameLocations: ["1102:13:7"], nodeType: "IdentifierPath", referencedDeclaration: 56129, src: "1102:13:7" }, id: 2222, nodeType: "InheritanceSpecifier", src: "1102:13:7" }, { baseName: { id: 2223, name: "UUPSUpgradeable", nameLocations: ["1121:15:7"], nodeType: "IdentifierPath", referencedDeclaration: 56295, src: "1121:15:7" }, id: 2224, nodeType: "InheritanceSpecifier", src: "1121:15:7" }, { baseName: { id: 2225, name: "OwnableUpgradeable", nameLocations: ["1142:18:7"], nodeType: "IdentifierPath", referencedDeclaration: 53580, src: "1142:18:7" }, id: 2226, nodeType: "InheritanceSpecifier", src: "1142:18:7" }, { baseName: { id: 2227, name: "ERC165Upgradeable", nameLocations: ["1166:17:7"], nodeType: "IdentifierPath", referencedDeclaration: 54754, src: "1166:17:7" }, id: 2228, nodeType: "InheritanceSpecifier", src: "1166:17:7" }, { baseName: { id: 2229, name: "IPopRules", nameLocations: ["1189:9:7"], nodeType: "IdentifierPath", referencedDeclaration: 2195, src: "1189:9:7" }, id: 2230, nodeType: "InheritanceSpecifier", src: "1189:9:7" }], canonicalName: "PopRules", contractDependencies: [], contractKind: "contract", documentation: { id: 2220, nodeType: "StructuredDocumentation", src: "922:155:7", text: `@title PopRules
|
|
2834
|
+
@notice Implements DotNS pricing with PoP-tier validation and base-name reservations.
|
|
2835
|
+
@custom:security-contact admin@parity.io` }, fullyImplemented: true, linearizedBaseContracts: [3420, 2195, 54754, 60790, 53580, 54714, 56295, 56129, 55016], name: "PopRules", nameLocation: "1086:8:7", scope: 3421, usedErrors: [2057, 2060, 53416, 53421, 55211, 55224, 55878, 55881, 56152, 56157, 57504, 58638], usedEvents: [2045, 2052, 2110, 53427, 54993, 55886] }], license: "MIT" },
|
|
2836
|
+
id: 7
|
|
2837
2837
|
};
|
|
2838
2838
|
});
|
|
2839
2839
|
|
|
@@ -2841,20 +2841,16 @@ var init_PopRules = __esm(() => {
|
|
|
2841
2841
|
var StoreFactory_default;
|
|
2842
2842
|
var init_StoreFactory = __esm(() => {
|
|
2843
2843
|
StoreFactory_default = {
|
|
2844
|
-
abi: [{ type: "function", name: "
|
|
2845
|
-
bytecode: { object: "0x608080604052346015576111af908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163775c300c1461024257508063b6e896e11461017a578063f2fde38b146100955763fa381b521461004a575f80fd5b34610092576020366003190112610092576004356001600160a01b0381169081900361009057815260208181526040918290205491516001600160a01b03909216825290f35b505b80fd5b5034610092576020366003190112610092576004356001600160a01b0381168082036101765733808452602084905260408420546001600160a01b031692906100e0908415156104ab565b8161014f575b5080337f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee678580a3825281602052604082209060018060a01b03166001600160601b0360a01b82541617905533815280602052604081206001600160601b0360a01b815416905580f35b8184526020849052604084205461017091906001600160a01b0316156104ab565b5f6100e6565b8280fd5b503461009257806003193601126100925760405180602060015491828152018091600185527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690855b81811061022357505050826101d9910383610489565b604051928392602084019060208552518091526040840192915b818110610201575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101f3565b82546001600160a01b03168452602090930192600192830192016101c3565b90503461045f575f36600319011261045f57335f908152602081905260409020546001600160a01b0316806104775750610ca680820182811067ffffffffffffffff8211176104635782916104d4833903905ff0801561045457335f90815260208190526040902080546001600160a01b0319166001600160a01b0392909216918217905590813b1561045f5760405163f2fde38b60e01b81523360048201525f8160248183875af1801561045457610441575b50604051638da5cb5b60e01b8152602081600481865afa9081156104365782916103f4575b50336001600160a01b03909116036103e25760015491680100000000000000008310156103ce5760018301806001558310156103ba57602092600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601816001600160601b0360a01b82541617905580604051927f91b07bde3f171aaf8e319f803c8eeb44f3fb40713e794d4d683edb4b59978d97339180a38152f35b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b60249163139ab47360e11b8252600452fd5b90506020813d60201161042e575b8161040f60209383610489565b8101031261009057516001600160a01b0381168103610090575f61031b565b3d9150610402565b6040513d84823e3d90fd5b61044d91505f90610489565b5f5f6102f6565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6329ab51bf60e01b5f5260045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b156104b35750565b6316028a3760e01b5f9081526001600160a01b0391909116600452602490fdfe608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610c3090816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630bdd8aeb1461087f5750806311182b971461081a57806319eb4a901461072857806331bf85fa146106df5780633ecfef6e1461057c5780636984394014610548578063715018a6146104f157806388c5ef46146104895780638da5cb5b14610462578063b489b365146103fa578063c47fe6ca146103bc578063c7bfebd61461030e578063d0f5d136146102a9578063d7abb79f1461024d578063ddd875d81461019d578063f2fde38b146101185763fe9fbb80146100d7575f80fd5b34610114576020366003190112610114576001600160a01b036100f86108b8565b165f526003602052602060ff60405f2054166040519015158152f35b5f80fd5b34610114576020366003190112610114576101316108b8565b610139610b95565b6001600160a01b0316801561018a575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b34610114576020366003190112610114576004356101bb8133610bbb565b335f52600160205260405f20815f5260205260405f206101db8154610942565b908161020a575b82337f6428dc73ea23d7708b9e0792e2c9b2ea9d258d7f9373d69b0b2643edf2b85a165f80a3005b81601f5f93116001146102215750555b81806101e2565b8183526020832061023d91601f0160051c810190600101610a1a565b808252816020812091555561021a565b34610114576040366003190112610114576001600160a01b0361026e6108b8565b165f52600160205260405f206024355f526020526102a561029160405f2061097a565b6040519182916020835260208301906108ce565b0390f35b34610114576020366003190112610114576102c26108b8565b6102ca610b95565b6001600160a01b03165f818152600460205260408120805460ff191690557faa8fcdfccf445f021f8b4a213ae1a63f6f3267aa4522972c47c01d457ff3727b9080a2005b346101145760403660031901126101145760043560243567ffffffffffffffff8111610114577f329b0bde0bfd3b1f63461d9197f2dea5bb1ed9040a3cc8dbe154b115c2e30a496103666103b79236906004016108f2565b6103738594929433610bbb565b335f52600160205260405f20855f52602052610393818560405f20610a30565b335f5260026020526103a9818560405f20610b27565b604051918291339583610b6e565b0390a3005b3461011457602036600319011261011457335f52600160205260405f206004355f5260205260206103f060405f2054610942565b1515604051908152f35b34610114576020366003190112610114576104136108b8565b61041b610b95565b6001600160a01b03165f818152600360205260408120805460ff191660011790557fa7de06aa60b69f67f419b34647ad6da74e5177ecca58e49f670e63e078786ae79080a2005b34610114575f366003190112610114575f546040516001600160a01b039091168152602090f35b34610114576020366003190112610114576104a26108b8565b6104aa610b95565b6001600160a01b03165f818152600460205260408120805460ff191660011790557faa64744d19b2d9220a88e1b74da1cd399b8b6c9e14605654149475ca15d259909080a2005b34610114575f36600319011261011457610509610b95565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461011457602036600319011261011457335f52600160205260405f206004355f526020526102a561029160405f2061097a565b34610114576060366003190112610114576105956108b8565b60243560443567ffffffffffffffff8111610114576105b9829136906004016108f2565b93335f52600460205260ff60405f205416156106ae575b806105fc847f329b0bde0bfd3b1f63461d9197f2dea5bb1ed9040a3cc8dbe154b115c2e30a4993610bbb565b60018060a01b0316948592835f52600160205260405f20855f52602052610627828260405f20610a30565b835f52600260205261063d828260405f20610b27565b61064c60405192839283610b6e565b0390a3335f52600460205260ff60405f20541661066557005b815f52600560205260405f20815f5260205260405f20600160ff1982541617905533917fd263f2dadb54eb8b54eb5d786c7ea4c6fd62c873b613deeee99c6ce71b4ed4f95f80a4005b9150335f52600360205260ff60405f205416156106cc5782916105d0565b6310ac496560e01b5f523360045260245ffd5b34610114576040366003190112610114576001600160a01b036107006108b8565b165f52600560205260405f206024355f52602052602060ff60405f2054166040519015158152f35b34610114575f36600319011261011457335f52600260205260405f2080549067ffffffffffffffff8211610806576040519161076a60208260051b0184610920565b8083526020830180925f5260205f205f915b8383106107e957848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106107ba57505050500390f35b919360019193955060206107d98192603f198a820301865288516108ce565b96019201920185949391926107ab565b6001602081926107f88561097a565b81520192019201919061077c565b634e487b7160e01b5f52604160045260245ffd5b34610114576020366003190112610114576108336108b8565b61083b610b95565b6001600160a01b03165f818152600360205260408120805460ff191690557f7bd79b6f5373362a5b314e087a7061c39b65f0d57ef52a4eb43610d6d4fb58099080a2005b34610114576020366003190112610114576020906001600160a01b036108a36108b8565b165f526004825260ff60405f20541615158152f35b600435906001600160a01b038216820361011457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f840112156101145782359167ffffffffffffffff8311610114576020838186019501011161011457565b90601f8019910116810190811067ffffffffffffffff82111761080657604052565b90600182811c92168015610970575b602083101461095c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610951565b9060405191825f82549261098d84610942565b80845293600181169081156109f857506001146109b4575b506109b292500383610920565b565b90505f9291925260205f20905f915b8183106109dc5750509060206109b2928201015f6109a5565b60209193508060019154838589010152019101909184926109c3565b9050602092506109b294915060ff191682840152151560051b8201015f6109a5565b818110610a25575050565b5f8155600101610a1a565b90929167ffffffffffffffff811161080657610a4c8254610942565b601f8111610aec575b505f601f8211600114610a8d57819293945f92610a82575b50508160011b915f199060031b1c1916179055565b013590505f80610a6d565b601f19821694835f5260205f20915f5b878110610ad4575083600195969710610abb575b505050811b019055565b01355f19600384901b60f8161c191690555f8080610ab1565b90926020600181928686013581550194019101610a9d565b610b1790835f5260205f20601f840160051c81019160208510610b1d575b601f0160051c0190610a1a565b5f610a55565b9091508190610b0a565b91908254680100000000000000008110156108065760018101808555811015610b5a576109b2935f5260205f2001610a30565b634e487b7160e01b5f52603260045260245ffd5b90918060409360208452816020850152848401375f828201840152601f01601f1916010190565b5f546001600160a01b03163303610ba857565b63118cdaa760e01b5f523360045260245ffd5b60018060a01b0316805f52600560205260405f20825f5260205260ff60405f205416610be5575050565b630375d9a560e21b5f5260045260245260445ffdfea2646970667358221220a6459067d7e4cad3c01d6316d6411cf00b0d112578b0e326c550e2c2ecdbea9e64736f6c634300081e0033a2646970667358221220b895e8466b668afb2ebdf02fcaf9ed297ea8da1f7bac31ce187a83b6e79fbc4364736f6c634300081e0033", sourceMap: "423:1899:20:-:0;;;;;;;;;;;;;;;;;", linkReferences: {} },
|
|
2846
|
-
deployedBytecode: { object: "0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163775c300c1461024257508063b6e896e11461017a578063f2fde38b146100955763fa381b521461004a575f80fd5b34610092576020366003190112610092576004356001600160a01b0381169081900361009057815260208181526040918290205491516001600160a01b03909216825290f35b505b80fd5b5034610092576020366003190112610092576004356001600160a01b0381168082036101765733808452602084905260408420546001600160a01b031692906100e0908415156104ab565b8161014f575b5080337f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee678580a3825281602052604082209060018060a01b03166001600160601b0360a01b82541617905533815280602052604081206001600160601b0360a01b815416905580f35b8184526020849052604084205461017091906001600160a01b0316156104ab565b5f6100e6565b8280fd5b503461009257806003193601126100925760405180602060015491828152018091600185527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690855b81811061022357505050826101d9910383610489565b604051928392602084019060208552518091526040840192915b818110610201575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101f3565b82546001600160a01b03168452602090930192600192830192016101c3565b90503461045f575f36600319011261045f57335f908152602081905260409020546001600160a01b0316806104775750610ca680820182811067ffffffffffffffff8211176104635782916104d4833903905ff0801561045457335f90815260208190526040902080546001600160a01b0319166001600160a01b0392909216918217905590813b1561045f5760405163f2fde38b60e01b81523360048201525f8160248183875af1801561045457610441575b50604051638da5cb5b60e01b8152602081600481865afa9081156104365782916103f4575b50336001600160a01b03909116036103e25760015491680100000000000000008310156103ce5760018301806001558310156103ba57602092600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601816001600160601b0360a01b82541617905580604051927f91b07bde3f171aaf8e319f803c8eeb44f3fb40713e794d4d683edb4b59978d97339180a38152f35b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b60249163139ab47360e11b8252600452fd5b90506020813d60201161042e575b8161040f60209383610489565b8101031261009057516001600160a01b0381168103610090575f61031b565b3d9150610402565b6040513d84823e3d90fd5b61044d91505f90610489565b5f5f6102f6565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6329ab51bf60e01b5f5260045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b156104b35750565b6316028a3760e01b5f9081526001600160a01b0391909116600452602490fdfe608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610c3090816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630bdd8aeb1461087f5750806311182b971461081a57806319eb4a901461072857806331bf85fa146106df5780633ecfef6e1461057c5780636984394014610548578063715018a6146104f157806388c5ef46146104895780638da5cb5b14610462578063b489b365146103fa578063c47fe6ca146103bc578063c7bfebd61461030e578063d0f5d136146102a9578063d7abb79f1461024d578063ddd875d81461019d578063f2fde38b146101185763fe9fbb80146100d7575f80fd5b34610114576020366003190112610114576001600160a01b036100f86108b8565b165f526003602052602060ff60405f2054166040519015158152f35b5f80fd5b34610114576020366003190112610114576101316108b8565b610139610b95565b6001600160a01b0316801561018a575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b34610114576020366003190112610114576004356101bb8133610bbb565b335f52600160205260405f20815f5260205260405f206101db8154610942565b908161020a575b82337f6428dc73ea23d7708b9e0792e2c9b2ea9d258d7f9373d69b0b2643edf2b85a165f80a3005b81601f5f93116001146102215750555b81806101e2565b8183526020832061023d91601f0160051c810190600101610a1a565b808252816020812091555561021a565b34610114576040366003190112610114576001600160a01b0361026e6108b8565b165f52600160205260405f206024355f526020526102a561029160405f2061097a565b6040519182916020835260208301906108ce565b0390f35b34610114576020366003190112610114576102c26108b8565b6102ca610b95565b6001600160a01b03165f818152600460205260408120805460ff191690557faa8fcdfccf445f021f8b4a213ae1a63f6f3267aa4522972c47c01d457ff3727b9080a2005b346101145760403660031901126101145760043560243567ffffffffffffffff8111610114577f329b0bde0bfd3b1f63461d9197f2dea5bb1ed9040a3cc8dbe154b115c2e30a496103666103b79236906004016108f2565b6103738594929433610bbb565b335f52600160205260405f20855f52602052610393818560405f20610a30565b335f5260026020526103a9818560405f20610b27565b604051918291339583610b6e565b0390a3005b3461011457602036600319011261011457335f52600160205260405f206004355f5260205260206103f060405f2054610942565b1515604051908152f35b34610114576020366003190112610114576104136108b8565b61041b610b95565b6001600160a01b03165f818152600360205260408120805460ff191660011790557fa7de06aa60b69f67f419b34647ad6da74e5177ecca58e49f670e63e078786ae79080a2005b34610114575f366003190112610114575f546040516001600160a01b039091168152602090f35b34610114576020366003190112610114576104a26108b8565b6104aa610b95565b6001600160a01b03165f818152600460205260408120805460ff191660011790557faa64744d19b2d9220a88e1b74da1cd399b8b6c9e14605654149475ca15d259909080a2005b34610114575f36600319011261011457610509610b95565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461011457602036600319011261011457335f52600160205260405f206004355f526020526102a561029160405f2061097a565b34610114576060366003190112610114576105956108b8565b60243560443567ffffffffffffffff8111610114576105b9829136906004016108f2565b93335f52600460205260ff60405f205416156106ae575b806105fc847f329b0bde0bfd3b1f63461d9197f2dea5bb1ed9040a3cc8dbe154b115c2e30a4993610bbb565b60018060a01b0316948592835f52600160205260405f20855f52602052610627828260405f20610a30565b835f52600260205261063d828260405f20610b27565b61064c60405192839283610b6e565b0390a3335f52600460205260ff60405f20541661066557005b815f52600560205260405f20815f5260205260405f20600160ff1982541617905533917fd263f2dadb54eb8b54eb5d786c7ea4c6fd62c873b613deeee99c6ce71b4ed4f95f80a4005b9150335f52600360205260ff60405f205416156106cc5782916105d0565b6310ac496560e01b5f523360045260245ffd5b34610114576040366003190112610114576001600160a01b036107006108b8565b165f52600560205260405f206024355f52602052602060ff60405f2054166040519015158152f35b34610114575f36600319011261011457335f52600260205260405f2080549067ffffffffffffffff8211610806576040519161076a60208260051b0184610920565b8083526020830180925f5260205f205f915b8383106107e957848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106107ba57505050500390f35b919360019193955060206107d98192603f198a820301865288516108ce565b96019201920185949391926107ab565b6001602081926107f88561097a565b81520192019201919061077c565b634e487b7160e01b5f52604160045260245ffd5b34610114576020366003190112610114576108336108b8565b61083b610b95565b6001600160a01b03165f818152600360205260408120805460ff191690557f7bd79b6f5373362a5b314e087a7061c39b65f0d57ef52a4eb43610d6d4fb58099080a2005b34610114576020366003190112610114576020906001600160a01b036108a36108b8565b165f526004825260ff60405f20541615158152f35b600435906001600160a01b038216820361011457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f840112156101145782359167ffffffffffffffff8311610114576020838186019501011161011457565b90601f8019910116810190811067ffffffffffffffff82111761080657604052565b90600182811c92168015610970575b602083101461095c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610951565b9060405191825f82549261098d84610942565b80845293600181169081156109f857506001146109b4575b506109b292500383610920565b565b90505f9291925260205f20905f915b8183106109dc5750509060206109b2928201015f6109a5565b60209193508060019154838589010152019101909184926109c3565b9050602092506109b294915060ff191682840152151560051b8201015f6109a5565b818110610a25575050565b5f8155600101610a1a565b90929167ffffffffffffffff811161080657610a4c8254610942565b601f8111610aec575b505f601f8211600114610a8d57819293945f92610a82575b50508160011b915f199060031b1c1916179055565b013590505f80610a6d565b601f19821694835f5260205f20915f5b878110610ad4575083600195969710610abb575b505050811b019055565b01355f19600384901b60f8161c191690555f8080610ab1565b90926020600181928686013581550194019101610a9d565b610b1790835f5260205f20601f840160051c81019160208510610b1d575b601f0160051c0190610a1a565b5f610a55565b9091508190610b0a565b91908254680100000000000000008110156108065760018101808555811015610b5a576109b2935f5260205f2001610a30565b634e487b7160e01b5f52603260045260245ffd5b90918060409360208452816020850152848401375f828201840152601f01601f1916010190565b5f546001600160a01b03163303610ba857565b63118cdaa760e01b5f523360045260245ffd5b60018060a01b0316805f52600560205260405f20825f5260205260ff60405f205416610be5575050565b630375d9a560e21b5f5260045260245260445ffdfea2646970667358221220a6459067d7e4cad3c01d6316d6411cf00b0d112578b0e326c550e2c2ecdbea9e64736f6c634300081e0033a2646970667358221220b895e8466b668afb2ebdf02fcaf9ed297ea8da1f7bac31ce187a83b6e79fbc4364736f6c634300081e0033", sourceMap: "423:1899:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;423:1899:20;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;;;;;;;;;;;;-1:-1:-1;;423:1899:20;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;1611:10;423:1899;;;;;;;;;;;-1:-1:-1;;;;;423:1899:20;;1611:10;1632:66;;1640:28;;;1632:66;:::i;:::-;1713:22;1709:137;;423:1899;1611:10;;;1861:41;;;;423:1899;;;;;;;;;;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;1611:10;423:1899;;;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;;1709:137;423:1899;;;;;;;;;;;1751:84;;423:1899;-1:-1:-1;;;;;423:1899:20;1759:48;1751:84;:::i;:::-;1709:137;;;423:1899;;;;;;;;;;;;;;;;;;;;;2303:10;423:1899;;;;;;;;2303:10;423:1899;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;-1:-1:-1;423:1899:20;;;;;;;;;2303:10;423:1899;;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;2303:10;423:1899;;;;;;;;;;;;;;;-1:-1:-1;;423:1899:20;;;;998:10;423:1899;;;;;;;;;;;;-1:-1:-1;;;;;423:1899:20;;;;1132:11;;;;;;;;;;;;;;;;;;;;;423:1899;1132:11;;;;;998:10;423:1899;;;;;;;;;;;;;-1:-1:-1;;;;;;423:1899:20;-1:-1:-1;;;;;423:1899:20;;;;;;;;;;1218:38;;;;;423:1899;;-1:-1:-1;;;1218:38:20;;998:10;423:1899;1218:38;;423:1899;-1:-1:-1;423:1899:20;1218:38;423:1899;-1:-1:-1;1218:38:20;;;;;;;;;423:1899;-1:-1:-1;423:1899:20;;-1:-1:-1;;;1274:16:20;;423:1899;;;;1274:16;;;;;;;;;;;;423:1899;-1:-1:-1;998:10:20;-1:-1:-1;;;;;423:1899:20;;;1274:30;423:1899;;1352:10;423:1899;;;;;;;;1352:10;423:1899;;;1352:10;423:1899;;;;;;;;1352:10;423:1899;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;;;;998:10;1409:35;998:10;1409:35;;;423:1899;;;;-1:-1:-1;;;423:1899:20;;;;;1218:38;423:1899;;;-1:-1:-1;;;423:1899:20;;;;;1218:38;423:1899;;;1218:38;423:1899;;;;;;;;;1274:16;;;423:1899;1274:16;;423:1899;1274:16;;;;;;423:1899;1274:16;;;:::i;:::-;;;423:1899;;;;;-1:-1:-1;;;;;423:1899:20;;;;;;1274:16;;;;;;-1:-1:-1;1274:16:20;;;423:1899;;;;;;;;;1218:38;;;;423:1899;1218:38;;:::i;:::-;423:1899;1218:38;;;;423:1899;;;;;;;;;1218:38;423:1899;;;1132:11;423:1899;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::o;:::-;-1:-1:-1;;;423:1899:20;;;;-1:-1:-1;;;;;423:1899:20;;;;;;;;", linkReferences: {} },
|
|
2847
|
-
methodIdentifiers: { "
|
|
2848
|
-
rawMetadata: '{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"existingStore","type":"address"}],"name":"AlreadyDeployed","type":"error"},{"inputs":[{"internalType":"address","name":"store","type":"address"}],"name":"InvalidOwnership","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"InvalidTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"contract IStore","name":"store","type":"address"}],"name":"StoreDeployed","type":"event"},{"inputs":[],"name":"deploy","outputs":[{"internalType":"contract IStore","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllDeployedStores","outputs":[{"internalType":"contract IStore[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getDeployedStore","outputs":[{"internalType":"contract IStore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"custom:security-contact":"admin@parity.io","details":"Uses CREATE opcode for deployment. Each address can deploy exactly one store.","errors":{"AlreadyDeployed(address)":[{"params":{"existingStore":"The address of the store already deployed by the caller"}}],"InvalidOwnership(address)":[{"params":{"store":"The address of the store which failed to transfer ownership"}}],"InvalidTransfer(address)":[{"params":{"caller":"The address attempting to make the transfer"}}]},"events":{"OwnershipTransfered(address,address)":{"params":{"newOwner":"The address which owns the new store","oldOwner":"The address which owned the store"}},"StoreDeployed(address,address)":{"params":{"owner":"The address that deployed and owns the store","store":"The address of the newly deployed store contract"}}},"kind":"dev","methods":{"deploy()":{"details":"Creates a store instance owned by msg.sender. Reverts if caller already has a deployed store."},"getAllDeployedStores()":{"returns":{"_0":"An array of all IStore instances deployed via this factory"}},"getDeployedStore(address)":{"details":"Returns the zero address if no store has been deployed by the specified address","params":{"who":"The address of the store owner to query"},"returns":{"_0":"The IStore instance deployed by the specified address, or zero address if none exists"}},"transferOwnership(address)":{"details":"The ownership refers to the address which owned the original deployment The ownership reffered to here is the mapping not the actual store ownership The Factory is an easy way of query all stores deployed so it could happen that The actual ownership of the store hasnt changed hands and its advised That the owner transfers the store ownership to the owner passed in here","params":{"newOwner":"The new owner"}}},"stateVariables":{"_allStores":{"details":"Its possible that some user will have duplicated stores if they transfer ownership"},"_deployedStores":{"details":"Zero address indicates no store has been deployed for that address"}},"title":"StoreFactory","version":1},"userdoc":{"errors":{"AlreadyDeployed(address)":[{"notice":"Thrown when attempting to deploy a store for an address that already has one"}],"InvalidOwnership(address)":[{"notice":"Thrown when attempting to transfer ownership of the store to the caller"}],"InvalidTransfer(address)":[{"notice":"Thrown when a non owner tries transferring a deployed store"}]},"events":{"OwnershipTransfered(address,address)":{"notice":"Emmitted when a store has been transferred to a new owner"},"StoreDeployed(address,address)":{"notice":"Emitted when a store is successfully deployed"}},"kind":"user","methods":{"deploy()":{"notice":"Deploys a new store contract for the caller"},"getAllDeployedStores()":{"notice":"Retrieves all deployed stores"},"getDeployedStore(address)":{"notice":"Retrieves the store contract address deployed by a specific user"},"transferOwnership(address)":{"notice":"Transfers ownership of a store"}},"notice":"Factory contract for deploying and tracking user-specific store instances","version":1}},"settings":{"compilationTarget":{"contracts/store/StoreFactory.sol":"StoreFactory"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",":forge-std/=lib/forge-std/src/",":halmos-cheatcodes/=lib/halmos-cheatcodes/src/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"],"viaIR":true},"sources":{"contracts/store/IStore.sol":{"keccak256":"0xb7e00aeed18772193ff762b49c6f26084bcff6866d746572ef5cfe7dd501a62e","license":"MIT","urls":["bzz-raw://42cc75ec22bd3391a56fb08538c751928ee44d7e44e9c2c08d6bc18cb52d00f1","dweb:/ipfs/QmXiNm3TnM1JcWjxUjWmdZeo9BD5iKpS4vx69w9HZr1wxj"]},"contracts/store/IStoreFactory.sol":{"keccak256":"0x063983e182adc329ff80cd07d5b55b81d0ce74b2b93c5443ab9aa428d95098cc","license":"MIT","urls":["bzz-raw://4bb432989023d9700e9333760c2efec7392e04bbbf90c8f8d900aad6b1f2bb6b","dweb:/ipfs/QmT1MVPkyEyQSVcWi5qBPL8dtRNDQtnJqSCSD9kSZvBHAD"]},"contracts/store/Store.sol":{"keccak256":"0x4538875c0ac89e83da0807175d899816b6268034aa4eccd60c76e4b83edfa960","license":"MIT","urls":["bzz-raw://cc2d72e6d916a835b504db314889e933a8c956fbb0fe2349ac3958d32dcccd20","dweb:/ipfs/QmRhFpdj2RG6iARGtYWy2cVF2JSfCzwknnUvmT7qFqA8Ja"]},"contracts/store/StoreFactory.sol":{"keccak256":"0x67af4fdcabae5fb4b38461de4c7787a78b7e377670ead83c900c5917a123848f","license":"MIT","urls":["bzz-raw://2eddd3a3facc821cb88bcee2e32a8d1fba2e0ee0f2de1fac50d9aa5c3e9b5d9d","dweb:/ipfs/QmX53N3gbCJwR1doyGUDjcmFpKyPoQQerfiVnETmm2hmXP"]},"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}',
|
|
2849
|
-
metadata: { compiler: { version: "0.8.30+commit.73712a01" }, language: "Solidity", output: { abi: [{ inputs: [{ internalType: "address", name: "existingStore", type: "address" }], type: "error", name: "AlreadyDeployed" }, { inputs: [{ internalType: "address", name: "store", type: "address" }], type: "error", name: "InvalidOwnership" }, { inputs: [{ internalType: "address", name: "caller", type: "address" }], type: "error", name: "InvalidTransfer" }, { inputs: [{ internalType: "address", name: "oldOwner", type: "address", indexed: true }, { internalType: "address", name: "newOwner", type: "address", indexed: true }], type: "event", name: "OwnershipTransfered", anonymous: false }, { inputs: [{ internalType: "address", name: "owner", type: "address", indexed: true }, { internalType: "contract IStore", name: "store", type: "address", indexed: true }], type: "event", name: "StoreDeployed", anonymous: false }, { inputs: [], stateMutability: "nonpayable", type: "function", name: "deploy", outputs: [{ internalType: "contract IStore", name: "", type: "address" }] }, { inputs: [], stateMutability: "view", type: "function", name: "getAllDeployedStores", outputs: [{ internalType: "contract IStore[]", name: "", type: "address[]" }] }, { inputs: [{ internalType: "address", name: "who", type: "address" }], stateMutability: "view", type: "function", name: "getDeployedStore", outputs: [{ internalType: "contract IStore", name: "", type: "address" }] }, { inputs: [{ internalType: "address", name: "newOwner", type: "address" }], stateMutability: "nonpayable", type: "function", name: "transferOwnership" }], devdoc: { kind: "dev", methods: { "deploy()": { details: "Creates a store instance owned by msg.sender. Reverts if caller already has a deployed store." }, "getAllDeployedStores()": { returns: { _0: "An array of all IStore instances deployed via this factory" } }, "getDeployedStore(address)": { details: "Returns the zero address if no store has been deployed by the specified address", params: { who: "The address of the store owner to query" }, returns: { _0: "The IStore instance deployed by the specified address, or zero address if none exists" } }, "transferOwnership(address)": { details: "The ownership refers to the address which owned the original deployment The ownership reffered to here is the mapping not the actual store ownership The Factory is an easy way of query all stores deployed so it could happen that The actual ownership of the store hasnt changed hands and its advised That the owner transfers the store ownership to the owner passed in here", params: { newOwner: "The new owner" } } }, version: 1 }, userdoc: { kind: "user", methods: { "deploy()": { notice: "Deploys a new store contract for the caller" }, "getAllDeployedStores()": { notice: "Retrieves all deployed stores" }, "getDeployedStore(address)": { notice: "Retrieves the store contract address deployed by a specific user" }, "transferOwnership(address)": { notice: "Transfers ownership of a store" } }, version: 1 } }, settings: { remappings: ["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/halmos-cheatcodes/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"], optimizer: { enabled: true, runs: 200 }, metadata: { bytecodeHash: "ipfs" }, compilationTarget: { "contracts/store/StoreFactory.sol": "StoreFactory" }, evmVersion: "cancun", libraries: {}, viaIR: true }, sources: { "contracts/store/IStore.sol": { keccak256: "0xb7e00aeed18772193ff762b49c6f26084bcff6866d746572ef5cfe7dd501a62e", urls: ["bzz-raw://42cc75ec22bd3391a56fb08538c751928ee44d7e44e9c2c08d6bc18cb52d00f1", "dweb:/ipfs/QmXiNm3TnM1JcWjxUjWmdZeo9BD5iKpS4vx69w9HZr1wxj"], license: "MIT" }, "contracts/store/IStoreFactory.sol": { keccak256: "0x063983e182adc329ff80cd07d5b55b81d0ce74b2b93c5443ab9aa428d95098cc", urls: ["bzz-raw://4bb432989023d9700e9333760c2efec7392e04bbbf90c8f8d900aad6b1f2bb6b", "dweb:/ipfs/QmT1MVPkyEyQSVcWi5qBPL8dtRNDQtnJqSCSD9kSZvBHAD"], license: "MIT" }, "contracts/store/Store.sol": { keccak256: "0x4538875c0ac89e83da0807175d899816b6268034aa4eccd60c76e4b83edfa960", urls: ["bzz-raw://cc2d72e6d916a835b504db314889e933a8c956fbb0fe2349ac3958d32dcccd20", "dweb:/ipfs/QmRhFpdj2RG6iARGtYWy2cVF2JSfCzwknnUvmT7qFqA8Ja"], license: "MIT" }, "contracts/store/StoreFactory.sol": { keccak256: "0x67af4fdcabae5fb4b38461de4c7787a78b7e377670ead83c900c5917a123848f", urls: ["bzz-raw://2eddd3a3facc821cb88bcee2e32a8d1fba2e0ee0f2de1fac50d9aa5c3e9b5d9d", "dweb:/ipfs/QmX53N3gbCJwR1doyGUDjcmFpKyPoQQerfiVnETmm2hmXP"], license: "MIT" }, "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 },
|
|
2850
|
-
storageLayout: { storage: [{ astId:
|
|
2851
|
-
ast: { absolutePath: "contracts/store/StoreFactory.sol", id: 5973, exportedSymbols: { IStore: [5252], IStoreFactory: [5318], Store: [5748], StoreFactory: [5972] }, nodeType: "SourceUnit", src: "32:2291:20", nodes: [{ id: 5750, nodeType: "PragmaDirective", src: "32:23:20", nodes: [], literals: ["solidity", "0.8", ".30"] }, { id: 5752, nodeType: "ImportDirective", src: "57:50:20", nodes: [], absolutePath: "contracts/store/IStoreFactory.sol", file: "./IStoreFactory.sol", nameLocation: "-1:-1:-1", scope: 5973, sourceUnit: 5319, symbolAliases: [{ foreign: { id: 5751, name: "IStoreFactory", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5318, src: "65:13:20", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 5754, nodeType: "ImportDirective", src: "108:36:20", nodes: [], absolutePath: "contracts/store/IStore.sol", file: "./IStore.sol", nameLocation: "-1:-1:-1", scope: 5973, sourceUnit: 5253, symbolAliases: [{ foreign: { id: 5753, name: "IStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5252, src: "116:6:20", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 5756, nodeType: "ImportDirective", src: "145:34:20", nodes: [], absolutePath: "contracts/store/Store.sol", file: "./Store.sol", nameLocation: "-1:-1:-1", scope: 5973, sourceUnit: 5749, symbolAliases: [{ foreign: { id: 5755, name: "Store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5748, src: "153:5:20", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 5972, nodeType: "ContractDefinition", src: "423:1899:20", nodes: [{ id: 5765, nodeType: "VariableDeclaration", src: "619:62:20", nodes: [], constant: false, documentation: { id: 5760, nodeType: "StructuredDocumentation", src: "468:146:20", text: `@notice Maps owner addresses to their deployed store contracts
|
|
2852
|
-
@dev Zero address indicates no store has been deployed for that address` }, mutability: "mutable", name: "_deployedStores", nameLocation: "666:15:20", scope: 5972, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" }, typeName: { id: 5764, keyName: "owner", keyNameLocation: "635:5:20", keyType: { id: 5761, name: "address", nodeType: "ElementaryTypeName", src: "627:7:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Mapping", src: "619:38:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" }, valueName: "store", valueNameLocation: "651:5:20", valueType: { id: 5763, nodeType: "UserDefinedTypeName", pathNode: { id: 5762, name: "IStore", nameLocations: ["644:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "644:6:20" }, referencedDeclaration: 5252, src: "644:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } } }, visibility: "private" }, { id: 5770, nodeType: "VariableDeclaration", src: "837:27:20", nodes: [], constant: false, documentation: { id: 5766, nodeType: "StructuredDocumentation", src: "687:145:20", text: `@notice Array of all deployed store contracts
|
|
2853
|
-
@dev Its possible that some user will have duplicated stores if they transfer ownership` }, mutability: "mutable", name: "_allStores", nameLocation: "854:10:20", scope: 5972, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_array$_t_contract$_IStore_$5252_$dyn_storage", typeString: "contract IStore[]" }, typeName: { baseType: { id: 5768, nodeType: "UserDefinedTypeName", pathNode: { id: 5767, name: "IStore", nameLocations: ["837:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "837:6:20" }, referencedDeclaration: 5252, src: "837:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, id: 5769, nodeType: "ArrayTypeName", src: "837:8:20", typeDescriptions: { typeIdentifier: "t_array$_t_contract$_IStore_$5252_$dyn_storage_ptr", typeString: "contract IStore[]" } }, visibility: "private" }, { id: 5865, nodeType: "FunctionDefinition", src: "905:571:20", nodes: [], body: { id: 5864, nodeType: "Block", src: "949:527:20", nodes: [], statements: [{ assignments: [5779], declarations: [{ constant: false, id: 5779, mutability: "mutable", name: "existingStore", nameLocation: "966:13:20", nodeType: "VariableDeclaration", scope: 5864, src: "959:20:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }, typeName: { id: 5778, nodeType: "UserDefinedTypeName", pathNode: { id: 5777, name: "IStore", nameLocations: ["959:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "959:6:20" }, referencedDeclaration: 5252, src: "959:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, visibility: "internal" }], id: 5784, initialValue: { baseExpression: { id: 5780, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "982:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5783, indexExpression: { expression: { id: 5781, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "998:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5782, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1002:6:20", memberName: "sender", nodeType: "MemberAccess", src: "998:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "982:27:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, nodeType: "VariableDeclarationStatement", src: "959:50:20" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 5794, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [{ id: 5788, name: "existingStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5779, src: "1035:13:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }], id: 5787, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1027:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5786, name: "address", nodeType: "ElementaryTypeName", src: "1027:7:20", typeDescriptions: {} } }, id: 5789, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1027:22:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { arguments: [{ hexValue: "30", id: 5792, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1061:1:20", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 5791, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1053:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5790, name: "address", nodeType: "ElementaryTypeName", src: "1053:7:20", typeDescriptions: {} } }, id: 5793, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1053:10:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "1027:36:20", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ arguments: [{ id: 5798, name: "existingStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5779, src: "1089:13:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }], id: 5797, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1081:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5796, name: "address", nodeType: "ElementaryTypeName", src: "1081:7:20", typeDescriptions: {} } }, id: 5799, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1081:22:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5795, name: "AlreadyDeployed", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5300, src: "1065:15:20", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 5800, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1065:39:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 5785, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "1019:7:20", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 5801, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1019:86:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5802, nodeType: "ExpressionStatement", src: "1019:86:20" }, { assignments: [5805], declarations: [{ constant: false, id: 5805, mutability: "mutable", name: "newStore", nameLocation: "1121:8:20", nodeType: "VariableDeclaration", scope: 5864, src: "1115:14:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" }, typeName: { id: 5804, nodeType: "UserDefinedTypeName", pathNode: { id: 5803, name: "Store", nameLocations: ["1115:5:20"], nodeType: "IdentifierPath", referencedDeclaration: 5748, src: "1115:5:20" }, referencedDeclaration: 5748, src: "1115:5:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }, visibility: "internal" }], id: 5810, initialValue: { arguments: [], expression: { argumentTypes: [], id: 5808, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "1132:9:20", typeDescriptions: { typeIdentifier: "t_function_creation_nonpayable$__$returns$_t_contract$_Store_$5748_$", typeString: "function () returns (contract Store)" }, typeName: { id: 5807, nodeType: "UserDefinedTypeName", pathNode: { id: 5806, name: "Store", nameLocations: ["1136:5:20"], nodeType: "IdentifierPath", referencedDeclaration: 5748, src: "1136:5:20" }, referencedDeclaration: 5748, src: "1136:5:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } } }, id: 5809, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1132:11:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }, nodeType: "VariableDeclarationStatement", src: "1115:28:20" }, { expression: { id: 5821, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 5811, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "1153:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5814, indexExpression: { expression: { id: 5812, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1169:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5813, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1173:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1169:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "1153:27:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ arguments: [{ id: 5818, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1198:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" }], id: 5817, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1190:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5816, name: "address", nodeType: "ElementaryTypeName", src: "1190:7:20", typeDescriptions: {} } }, id: 5819, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1190:17:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5815, name: "IStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5252, src: "1183:6:20", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IStore_$5252_$", typeString: "type(contract IStore)" } }, id: 5820, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1183:25:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, src: "1153:55:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, id: 5822, nodeType: "ExpressionStatement", src: "1153:55:20" }, { expression: { arguments: [{ expression: { id: 5826, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1245:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5827, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1249:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1245:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { id: 5823, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1218:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }, id: 5825, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1227:17:20", memberName: "transferOwnership", nodeType: "MemberAccess", referencedDeclaration: 43449, src: "1218:26:20", typeDescriptions: { typeIdentifier: "t_function_external_nonpayable$_t_address_$returns$__$", typeString: "function (address) external" } }, id: 5828, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1218:38:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5829, nodeType: "ExpressionStatement", src: "1218:38:20" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 5836, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [], expression: { argumentTypes: [], expression: { id: 5831, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1274:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }, id: 5832, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1283:5:20", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 43390, src: "1274:14:20", typeDescriptions: { typeIdentifier: "t_function_external_view$__$returns$_t_address_$", typeString: "function () view external returns (address)" } }, id: 5833, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1274:16:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 5834, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1294:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5835, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1298:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1294:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "1274:30:20", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ arguments: [{ id: 5840, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1331:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" }], id: 5839, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1323:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5838, name: "address", nodeType: "ElementaryTypeName", src: "1323:7:20", typeDescriptions: {} } }, id: 5841, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1323:17:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5837, name: "InvalidOwnership", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5305, src: "1306:16:20", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 5842, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1306:35:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 5830, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "1266:7:20", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 5843, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1266:76:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5844, nodeType: "ExpressionStatement", src: "1266:76:20" }, { expression: { arguments: [{ arguments: [{ arguments: [{ id: 5851, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1383:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" }], id: 5850, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1375:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5849, name: "address", nodeType: "ElementaryTypeName", src: "1375:7:20", typeDescriptions: {} } }, id: 5852, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1375:17:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5848, name: "IStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5252, src: "1368:6:20", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IStore_$5252_$", typeString: "type(contract IStore)" } }, id: 5853, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1368:25:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }], expression: { id: 5845, name: "_allStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5770, src: "1352:10:20", typeDescriptions: { typeIdentifier: "t_array$_t_contract$_IStore_$5252_$dyn_storage", typeString: "contract IStore[] storage ref" } }, id: 5847, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1363:4:20", memberName: "push", nodeType: "MemberAccess", src: "1352:15:20", typeDescriptions: { typeIdentifier: "t_function_arraypush_nonpayable$_t_array$_t_contract$_IStore_$5252_$dyn_storage_ptr_$_t_contract$_IStore_$5252_$returns$__$attached_to$_t_array$_t_contract$_IStore_$5252_$dyn_storage_ptr_$", typeString: "function (contract IStore[] storage pointer,contract IStore)" } }, id: 5854, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1352:42:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5855, nodeType: "ExpressionStatement", src: "1352:42:20" }, { eventCall: { arguments: [{ expression: { id: 5857, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1423:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5858, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1427:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1423:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 5859, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1435:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" }], id: 5856, name: "StoreDeployed", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5295, src: "1409:13:20", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$_t_contract$_IStore_$5252_$returns$__$", typeString: "function (address,contract IStore)" } }, id: 5860, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1409:35:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5861, nodeType: "EmitStatement", src: "1404:40:20" }, { expression: { id: 5862, name: "newStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5805, src: "1461:8:20", typeDescriptions: { typeIdentifier: "t_contract$_Store_$5748", typeString: "contract Store" } }, functionReturnParameters: 5776, id: 5863, nodeType: "Return", src: "1454:15:20" }] }, baseFunctions: [5264], documentation: { id: 5771, nodeType: "StructuredDocumentation", src: "871:29:20", text: "@inheritdoc IStoreFactory" }, functionSelector: "775c300c", implemented: true, kind: "function", modifiers: [], name: "deploy", nameLocation: "914:6:20", parameters: { id: 5772, nodeType: "ParameterList", parameters: [], src: "920:2:20" }, returnParameters: { id: 5776, nodeType: "ParameterList", parameters: [{ constant: false, id: 5775, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 5865, src: "941:6:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }, typeName: { id: 5774, nodeType: "UserDefinedTypeName", pathNode: { id: 5773, name: "IStore", nameLocations: ["941:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "941:6:20" }, referencedDeclaration: 5252, src: "941:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, visibility: "internal" }], src: "940:8:20" }, scope: 5972, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 5945, nodeType: "FunctionDefinition", src: "1516:495:20", nodes: [], body: { id: 5944, nodeType: "Block", src: "1570:441:20", nodes: [], statements: [{ assignments: [5873], declarations: [{ constant: false, id: 5873, mutability: "mutable", name: "store", nameLocation: "1587:5:20", nodeType: "VariableDeclaration", scope: 5944, src: "1580:12:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }, typeName: { id: 5872, nodeType: "UserDefinedTypeName", pathNode: { id: 5871, name: "IStore", nameLocations: ["1580:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "1580:6:20" }, referencedDeclaration: 5252, src: "1580:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, visibility: "internal" }], id: 5878, initialValue: { baseExpression: { id: 5874, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "1595:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5877, indexExpression: { expression: { id: 5875, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1611:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5876, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1615:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1611:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "1595:27:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, nodeType: "VariableDeclarationStatement", src: "1580:42:20" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 5888, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [{ id: 5882, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5873, src: "1648:5:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }], id: 5881, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1640:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5880, name: "address", nodeType: "ElementaryTypeName", src: "1640:7:20", typeDescriptions: {} } }, id: 5883, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1640:14:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 5886, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1666:1:20", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 5885, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1658:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5884, name: "address", nodeType: "ElementaryTypeName", src: "1658:7:20", typeDescriptions: {} } }, id: 5887, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1658:10:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "1640:28:20", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ expression: { id: 5890, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1686:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5891, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1690:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1686:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5889, name: "InvalidTransfer", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5310, src: "1670:15:20", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 5892, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1670:27:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 5879, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "1632:7:20", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 5893, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1632:66:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5894, nodeType: "ExpressionStatement", src: "1632:66:20" }, { condition: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 5900, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 5895, name: "newOwner", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5868, src: "1713:8:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 5898, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1733:1:20", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 5897, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1725:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5896, name: "address", nodeType: "ElementaryTypeName", src: "1725:7:20", typeDescriptions: {} } }, id: 5899, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1725:10:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "1713:22:20", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 5919, nodeType: "IfStatement", src: "1709:137:20", trueBody: { id: 5918, nodeType: "Block", src: "1737:109:20", statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 5912, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [{ baseExpression: { id: 5904, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "1767:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5906, indexExpression: { id: 5905, name: "newOwner", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5868, src: "1783:8:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "1767:25:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }], id: 5903, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1759:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5902, name: "address", nodeType: "ElementaryTypeName", src: "1759:7:20", typeDescriptions: {} } }, id: 5907, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1759:34:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { arguments: [{ hexValue: "30", id: 5910, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "1805:1:20", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 5909, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1797:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5908, name: "address", nodeType: "ElementaryTypeName", src: "1797:7:20", typeDescriptions: {} } }, id: 5911, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1797:10:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "1759:48:20", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 5914, name: "newOwner", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5868, src: "1825:8:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5913, name: "InvalidTransfer", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5310, src: "1809:15:20", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 5915, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1809:25:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 5901, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "1751:7:20", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 5916, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1751:84:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5917, nodeType: "ExpressionStatement", src: "1751:84:20" }] } }, { eventCall: { arguments: [{ expression: { id: 5921, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1881:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5922, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1885:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1881:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 5923, name: "newOwner", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5868, src: "1893:8:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 5920, name: "OwnershipTransfered", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5317, src: "1861:19:20", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", typeString: "function (address,address)" } }, id: 5924, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1861:41:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 5925, nodeType: "EmitStatement", src: "1856:46:20" }, { expression: { id: 5930, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 5926, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "1913:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5928, indexExpression: { id: 5927, name: "newOwner", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5868, src: "1929:8:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "1913:25:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 5929, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5873, src: "1941:5:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, src: "1913:33:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, id: 5931, nodeType: "ExpressionStatement", src: "1913:33:20" }, { expression: { id: 5942, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 5932, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "1956:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5935, indexExpression: { expression: { id: 5933, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "1972:3:20", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 5934, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "1976:6:20", memberName: "sender", nodeType: "MemberAccess", src: "1972:10:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "1956:27:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ arguments: [{ hexValue: "30", id: 5939, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "2001:1:20", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 5938, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "1993:7:20", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 5937, name: "address", nodeType: "ElementaryTypeName", src: "1993:7:20", typeDescriptions: {} } }, id: 5940, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1993:10:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 5936, name: "IStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5252, src: "1986:6:20", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IStore_$5252_$", typeString: "type(contract IStore)" } }, id: 5941, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "1986:18:20", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, src: "1956:48:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, id: 5943, nodeType: "ExpressionStatement", src: "1956:48:20" }] }, baseFunctions: [5270], documentation: { id: 5866, nodeType: "StructuredDocumentation", src: "1482:29:20", text: "@inheritdoc IStoreFactory" }, functionSelector: "f2fde38b", implemented: true, kind: "function", modifiers: [], name: "transferOwnership", nameLocation: "1525:17:20", parameters: { id: 5869, nodeType: "ParameterList", parameters: [{ constant: false, id: 5868, mutability: "mutable", name: "newOwner", nameLocation: "1551:8:20", nodeType: "VariableDeclaration", scope: 5945, src: "1543:16:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 5867, name: "address", nodeType: "ElementaryTypeName", src: "1543:7:20", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "1542:18:20" }, returnParameters: { id: 5870, nodeType: "ParameterList", parameters: [], src: "1570:0:20" }, scope: 5972, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 5959, nodeType: "FunctionDefinition", src: "2051:114:20", nodes: [], body: { id: 5958, nodeType: "Block", src: "2121:44:20", nodes: [], statements: [{ expression: { baseExpression: { id: 5954, name: "_deployedStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5765, src: "2138:15:20", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_contract$_IStore_$5252_$", typeString: "mapping(address => contract IStore)" } }, id: 5956, indexExpression: { id: 5955, name: "who", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5948, src: "2154:3:20", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "2138:20:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, functionReturnParameters: 5953, id: 5957, nodeType: "Return", src: "2131:27:20" }] }, baseFunctions: [5279], documentation: { id: 5946, nodeType: "StructuredDocumentation", src: "2017:29:20", text: "@inheritdoc IStoreFactory" }, functionSelector: "fa381b52", implemented: true, kind: "function", modifiers: [], name: "getDeployedStore", nameLocation: "2060:16:20", parameters: { id: 5949, nodeType: "ParameterList", parameters: [{ constant: false, id: 5948, mutability: "mutable", name: "who", nameLocation: "2085:3:20", nodeType: "VariableDeclaration", scope: 5959, src: "2077:11:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 5947, name: "address", nodeType: "ElementaryTypeName", src: "2077:7:20", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "2076:13:20" }, returnParameters: { id: 5953, nodeType: "ParameterList", parameters: [{ constant: false, id: 5952, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 5959, src: "2113:6:20", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" }, typeName: { id: 5951, nodeType: "UserDefinedTypeName", pathNode: { id: 5950, name: "IStore", nameLocations: ["2113:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "2113:6:20" }, referencedDeclaration: 5252, src: "2113:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, visibility: "internal" }], src: "2112:8:20" }, scope: 5972, stateMutability: "view", virtual: false, visibility: "external" }, { id: 5971, nodeType: "FunctionDefinition", src: "2205:115:20", nodes: [], body: { id: 5970, nodeType: "Block", src: "2286:34:20", nodes: [], statements: [{ expression: { id: 5968, name: "_allStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 5770, src: "2303:10:20", typeDescriptions: { typeIdentifier: "t_array$_t_contract$_IStore_$5252_$dyn_storage", typeString: "contract IStore[] storage ref" } }, functionReturnParameters: 5967, id: 5969, nodeType: "Return", src: "2296:17:20" }] }, baseFunctions: [5287], documentation: { id: 5960, nodeType: "StructuredDocumentation", src: "2171:29:20", text: "@inheritdoc IStoreFactory" }, functionSelector: "b6e896e1", implemented: true, kind: "function", modifiers: [], name: "getAllDeployedStores", nameLocation: "2214:20:20", overrides: { id: 5962, nodeType: "OverrideSpecifier", overrides: [], src: "2251:8:20" }, parameters: { id: 5961, nodeType: "ParameterList", parameters: [], src: "2234:2:20" }, returnParameters: { id: 5967, nodeType: "ParameterList", parameters: [{ constant: false, id: 5966, mutability: "mutable", name: "", nameLocation: "-1:-1:-1", nodeType: "VariableDeclaration", scope: 5971, src: "2269:15:20", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_array$_t_contract$_IStore_$5252_$dyn_memory_ptr", typeString: "contract IStore[]" }, typeName: { baseType: { id: 5964, nodeType: "UserDefinedTypeName", pathNode: { id: 5963, name: "IStore", nameLocations: ["2269:6:20"], nodeType: "IdentifierPath", referencedDeclaration: 5252, src: "2269:6:20" }, referencedDeclaration: 5252, src: "2269:6:20", typeDescriptions: { typeIdentifier: "t_contract$_IStore_$5252", typeString: "contract IStore" } }, id: 5965, nodeType: "ArrayTypeName", src: "2269:8:20", typeDescriptions: { typeIdentifier: "t_array$_t_contract$_IStore_$5252_$dyn_storage_ptr", typeString: "contract IStore[]" } }, visibility: "internal" }], src: "2268:17:20" }, scope: 5972, stateMutability: "view", virtual: false, visibility: "external" }], abstract: false, baseContracts: [{ baseName: { id: 5758, name: "IStoreFactory", nameLocations: ["448:13:20"], nodeType: "IdentifierPath", referencedDeclaration: 5318, src: "448:13:20" }, id: 5759, nodeType: "InheritanceSpecifier", src: "448:13:20" }], canonicalName: "StoreFactory", contractDependencies: [5748], contractKind: "contract", documentation: { id: 5757, nodeType: "StructuredDocumentation", src: "181:242:20", text: `@title StoreFactory
|
|
2854
|
-
@notice Factory contract for deploying and tracking user-specific store instances
|
|
2855
|
-
@dev Uses CREATE opcode for deployment. Each address can deploy exactly one store.
|
|
2856
|
-
@custom:security-contact admin@parity.io` }, fullyImplemented: true, linearizedBaseContracts: [5972, 5318], name: "StoreFactory", nameLocation: "432:12:20", scope: 5973, usedErrors: [5300, 5305, 5310], usedEvents: [5295, 5317] }], license: "MIT" },
|
|
2857
|
-
id: 20
|
|
2844
|
+
abi: [{ type: "constructor", inputs: [{ name: "protocolRegistry_", type: "address", internalType: "address" }], stateMutability: "nonpayable" }, { type: "function", name: "claimUserStore", inputs: [], outputs: [{ name: "store", type: "address", internalType: "address" }], stateMutability: "nonpayable" }, { type: "function", name: "deployLabelStoreFor", inputs: [{ name: "user", type: "address", internalType: "address" }], outputs: [{ name: "store", type: "address", internalType: "address" }], stateMutability: "nonpayable" }, { type: "function", name: "getLabelStore", inputs: [{ name: "user", type: "address", internalType: "address" }], outputs: [{ name: "store", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "getLabelStoreCount", inputs: [], outputs: [{ name: "count", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "getLabelStores", inputs: [{ name: "offset", type: "uint256", internalType: "uint256" }, { name: "limit", type: "uint256", internalType: "uint256" }], outputs: [{ name: "stores", type: "address[]", internalType: "address[]" }], stateMutability: "view" }, { type: "function", name: "getUserStore", inputs: [{ name: "user", type: "address", internalType: "address" }], outputs: [{ name: "store", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "getUserStoreCount", inputs: [], outputs: [{ name: "count", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "getUserStores", inputs: [{ name: "offset", type: "uint256", internalType: "uint256" }, { name: "limit", type: "uint256", internalType: "uint256" }], outputs: [{ name: "stores", type: "address[]", internalType: "address[]" }], stateMutability: "view" }, { type: "function", name: "labelStoreBeacon", inputs: [], outputs: [{ name: "", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "owner", inputs: [], outputs: [{ name: "", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "protocolRegistry", 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: "function", name: "upgradeLabelStoreImplementation", inputs: [{ name: "newImplementation", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "upgradeUserStoreImplementation", inputs: [{ name: "newImplementation", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "userStoreBeacon", inputs: [], outputs: [{ name: "", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "version", inputs: [], outputs: [{ name: "versionString", type: "string", internalType: "string" }], stateMutability: "pure" }, { type: "event", name: "LabelStoreDeployed", inputs: [{ name: "user", type: "address", indexed: true, internalType: "address" }, { name: "store", type: "address", indexed: true, internalType: "address" }], anonymous: false }, { type: "event", name: "LabelStoreImplementationUpgraded", inputs: [{ name: "newImplementation", type: "address", indexed: true, internalType: "address" }], anonymous: false }, { type: "event", name: "OwnershipTransferred", inputs: [{ name: "previousOwner", type: "address", indexed: true, internalType: "address" }, { name: "newOwner", type: "address", indexed: true, internalType: "address" }], anonymous: false }, { type: "event", name: "UserStoreClaimed", inputs: [{ name: "user", type: "address", indexed: true, internalType: "address" }, { name: "store", type: "address", indexed: true, internalType: "address" }], anonymous: false }, { type: "event", name: "UserStoreImplementationUpgraded", inputs: [{ name: "newImplementation", type: "address", indexed: true, internalType: "address" }], anonymous: false }, { type: "error", name: "AlreadyDeployed", inputs: [{ name: "user", type: "address", internalType: "address" }, { name: "existingStore", type: "address", internalType: "address" }] }, { type: "error", name: "ImplementationBindingMismatch", inputs: [] }, { type: "error", name: "InvalidImplementation", inputs: [{ name: "implementation", type: "address", internalType: "address" }] }, { type: "error", name: "InvalidProtocolRegistry", inputs: [{ name: "protocolRegistry", type: "address", internalType: "address" }] }, { type: "error", name: "InvalidUser", inputs: [{ name: "user", type: "address", internalType: "address" }] }, { type: "error", name: "NotAuthorised", inputs: [{ name: "caller", type: "address", internalType: "address" }] }, { type: "error", name: "OwnableInvalidOwner", inputs: [{ name: "owner", type: "address", internalType: "address" }] }, { type: "error", name: "OwnableUnauthorizedAccount", inputs: [{ name: "account", type: "address", internalType: "address" }] }],
|
|
2845
|
+
bytecode: { object: "0x60e0806040523461025a576020816134ed803803809161001f828561028b565b83398101031261025a57516001600160a01b03811680820361025a573315610278575f8054336001600160a01b0319821681178355604051939290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a380156102665781602481602093631b618f9560e31b82525f60048301525afa801561020f5761022e575b5060c052604051610dd68082016001600160401b0381118382101761021a5782916115a9833903905ff0801561020f576040516103be808201929091906001600160401b0384118285101761021a57610128829161237f95858785396001600160a01b03909116815230602082015260400190565b03905ff0801561020f576001600160a01b0316608052604051610db08082016001600160401b0381118382101761021a57829161273d833903905ff091821561020f57604051928284016001600160401b0381118582101761021a5784936101a59385396001600160a01b03909116815230602082015260400190565b03905ff0801561020f576001600160a01b031660a0526040516112fa90816102af82396080518181816103b2015281816105b00152610897015260a0518181816101fd015281816104410152610a77015260c0518181816106ca0152818161082e0152610c320152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6020813d60201161025e575b816102476020938361028b565b8101031261025a575180151581146100b3575b5f80fd5b3d915061023a565b63059c24ad60e41b5f5260045260245ffd5b631e4fbdf760e01b5f525f60045260245ffd5b601f909101601f19168101906001600160401b0382119082101761021a5760405256fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301d5c15f14610a655750806322b2708b14610a215780634fc5dce9146109dd5780635269fc58146107bc57806354fd4d5014610750578063715018a6146106f95780637656419f146106b557806376a294181461069b578063803b130114610671578063811244e0146105595780638da5cb5b146105325780638f0c0f3614610514578063adff70ee146103e1578063ca7ad4231461039c578063d6fefb141461037e578063eccf8f55146101675763f2fde38b146100d9575f80fd5b34610164576020366003190112610164576004356001600160a01b0381169081900361016257610107610cc2565b801561014e5781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346101645780600319360112610164573380825260026020818152604080852054848652929091528320546101ac926001600160a01b039182169290911615610b22565b60405163189acdbd60e31b6020820152336024820152602481526101d1604482610b4f565b604051906104588083019083821067ffffffffffffffff83111761036a5791610222918493610e6d85397f000000000000000000000000000000000000000000000000000000000000000090610b71565b039082f0801561035d57604051638da5cb5b60e01b81526001600160a01b03919091169190602081600481865afa908115610352578291610323575b50336001600160a01b03909116036103145733815260026020526040812080546001600160a01b0319166001600160a01b03841617905560045491600160401b831015610300576102b9836001602095016004556004610bb5565b81549060031b9083821b9160018060a01b03901b191617905580604051927f06ac7c9c10355bc43f184759d7b4314153af79956fdb67a18ea95e69d6d11209339180a38152f35b634e487b7160e01b82526041600452602482fd5b636f2b988d60e11b8152600490fd5b610345915060203d60201161034b575b61033d8183610b4f565b810190610b96565b5f61025e565b503d610333565b6040513d84823e3d90fd5b50604051903d90823e3d90fd5b634e487b7160e01b85526041600452602485fd5b50346101645780600319360112610164576020600354604051908152f35b50346101645780600319360112610164576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610164576020366003190112610164576004356001600160a01b038116908181036104fd5761041c90610414610cc2565b821515610bde565b60405163ee1ce84160e01b8152602081600481855afa8015610509576104d6575b50817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b1561016257818091602460405180948193631b2ce7f360e11b83528860048401525af18015610352576104c1575b50807f9b1a9f05ed531f4ad23baba39ac270dfe92e4c89b638107959a4b7f5050ce71e91a280f35b816104cb91610b4f565b61016257815f610499565b6020813d602011610501575b816104ef60209383610b4f565b810103126104fd575161043d565b8280fd5b3d91506104e2565b6040513d85823e3d90fd5b50346101645780600319360112610164576020600454604051908152f35b5034610164578060031936011261016457546040516001600160a01b039091168152602090f35b5034610650576020366003190112610650576004356001600160a01b038116908181036106505761058c90610414610cc2565b604051637656419f60e01b8152602081600481855afa801561064557610654575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b15610650575f8091602460405180948193631b2ce7f360e11b83528760048401525af1801561064557610630575b507fefa2deb621cf345468e8c22862b260aa183290f4768870fdfcfce406b7161c808280a280f35b61063d9192505f90610b4f565b5f905f610608565b6040513d5f823e3d90fd5b5f80fd5b61066c9060203d60201161034b5761033d8183610b4f565b6105ad565b346106505761069761068b61068536610aca565b90610de7565b60405191829182610ae0565b0390f35b346106505761069761068b6106af36610aca565b90610d32565b34610650575f366003190112610650576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610650575f36600319011261065057610711610cc2565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610650575f36600319011261065057604051604081019080821067ffffffffffffffff8311176107a8576106979160405260058152640312e302e360dc1b6020820152604051918291602083526020830190610aa6565b634e487b7160e01b5f52604160045260245ffd5b34610650576020366003190112610650576004356001600160a01b03811690818103610650576107ea610c06565b81156109ca575f82815260016020526040902054610815916001600160a01b03909116908115610b22565b60405163485cc95560e01b6020820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316604480830191909152815261086c606482610b4f565b604051906104588083019183831067ffffffffffffffff8411176107a85783926108bc92610e6d85397f000000000000000000000000000000000000000000000000000000000000000090610b71565b03905ff0801561064557604051638da5cb5b60e01b81526001600160a01b03919091169190602081600481865afa80156106455782915f916109ab575b506001600160a01b03160361099c575f81815260016020526040902080546001600160a01b0319166001600160a01b03841617905560035491600160401b8310156107a857610952836001602095016003556003610bb5565b81546001600160a01b0360039290921b91821b19169083901b1790556040519181907f6294914f6f12fb260c6b69d8a5435317a9318b45790f0b19b42cdd06708fcdea5f80a38152f35b636f2b988d60e11b5f5260045ffd5b6109c4915060203d60201161034b5761033d8183610b4f565b846108f9565b50632e86c5bb60e21b5f5260045260245ffd5b34610650576020366003190112610650576004356001600160a01b03811690819003610650575f526001602052602060018060a01b0360405f205416604051908152f35b34610650576020366003190112610650576004356001600160a01b03811690819003610650575f526002602052602060018060a01b0360405f205416604051908152f35b34610650575f366003190112610650577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040906003190112610650576004359060243590565b60206040818301928281528451809452019201905f5b818110610b035750505090565b82516001600160a01b0316845260209384019390920191600101610af6565b15610b2b575050565b63f3d358af60e01b5f9081526001600160a01b039182166004529116602452604490fd5b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b039091168152604060208201819052610b9392910190610aa6565b90565b9081602091031261065057516001600160a01b03811681036106505790565b8054821015610bca575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15610be65750565b630c76093760e01b5f9081526001600160a01b0391909116600452602490fd5b5f546001600160a01b03163314610cc057604051631b618f9560e31b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610645575f91610c85575b5015610c7257565b6310ac496560e01b5f523360045260245ffd5b90506020813d602011610cb8575b81610ca060209383610b4f565b8101031261065057518015158103610650575f610c6a565b3d9150610c93565b565b5f546001600160a01b03163303610cd557565b63118cdaa760e01b5f523360045260245ffd5b67ffffffffffffffff81116107a85760051b60200190565b90610d0a82610ce8565b610d176040519182610b4f565b8281528092610d28601f1991610ce8565b0190602036910137565b919060035480841015610dcb57838103908111610db05780821015610dc457505b610d5c81610d00565b925f5b828110610d6b57505050565b808201808311610db057610d80906003610bb5565b9054865160039290921b1c6001600160a01b03169190811015610bca5760019160208260051b8801015201610d5f565b634e487b7160e01b5f52601160045260245ffd5b9050610d53565b50509050604051610ddd602082610b4f565b5f81525f36813790565b919060045480841015610dcb57838103908111610db05780821015610e6557505b610e1181610d00565b925f5b828110610e2057505050565b808201808311610db057610e35906004610bb5565b9054865160039290921b1c6001600160a01b03169190811015610bca5760019160208260051b8801015201610e14565b9050610e0856fe60a08060405261045880380380916100178285610271565b833981016040828203126101b45761002e82610294565b602083015190926001600160401b0382116101b4570181601f820112156101b4578051906001600160401b03821161025d5760405192610078601f8401601f191660200185610271565b828452602083830101116101b457815f9260208093018386015e83010152813b1561023c577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b038416908117909155604051635c60da1b60e01b8152909190602081600481865afa9081156101c0575f91610202575b50803b156101e25750817f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e5f80a28051156101cb57602060049260405193848092635c60da1b60e01b82525afa80156101c0575f90610181575b61016592506102a8565b505b608052604051610123908161033582396080518160180152f35b506020823d6020116101b8575b8161019b60209383610271565b810103126101b4576101af61016592610294565b61015b565b5f80fd5b3d915061018e565b6040513d5f823e3d90fd5b505034156101675763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b90506020813d602011610234575b8161021d60209383610271565b810103126101b45761022e90610294565b5f610101565b3d9150610210565b50631933b43b60e21b5f9081526001600160a01b0391909116600452602490fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761025d57604052565b51906001600160a01b03821682036101b457565b905f8091602081519101845af48080610321575b156102dc5750506040513d81523d5f602083013e60203d82010160405290565b1561030157639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15610312576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b503d1515806102bc5750813b15156102bc56fe60806040819052635c60da1b60e01b81526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801560a2575f901560d1575060203d602011609c575b601f19601f820116608001906080821067ffffffffffffffff83111760885760849160405260800160ad565b60d1565b634e487b7160e01b5f52604160045260245ffd5b503d6058565b6040513d5f823e3d90fd5b602090607f19011260cd576080516001600160a01b038116810360cd5790565b5f80fd5b5f8091368280378136915af43d5f803e1560e9573d5ff35b3d5ffdfea2646970667358221220dd3a5de3d94daf41d42176f8dbe3440745ebdff2c1ac662fc1c6ac528bd2a35264736f6c63430008220033a264697066735822122062068dfced4f56c29730e500b967dfb4c39ce214a4a0aac89c540e64627c359164736f6c634300082200336080806040523460aa575f516020610db65f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051610d0790816100af8239f35b6001600160401b0319166001600160401b039081175f516020610db65f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816311f81901146109325750806320f0e6ce146105f05780632d7b57941461057357806332a16f4e14610544578063485cc9551461038e5780635330c1b5146102f657806354fd4d501461028a5780637656419f14610262578063847f2cd0146102075780638da5cb5b146101e0578063a716560b146101b3578063b1ae65a5146101965763daf13ed6146100ab575f80fd5b34610192576020366003190112610192576100c76004356109cc565b90549060031b1c5f52600260205260405f20604051905f908054906100eb82610994565b808552916001811690811561016b575060011461012b575b61012784610113818603826109f8565b604051918291602083526020830190610970565b0390f35b5f90815260208120939250905b8082106101515750909150810160200161011382610103565b919260018160209254838588010152019101909291610138565b60ff191660208087019190915292151560051b850190920192506101139150839050610103565b5f80fd5b34610192575f366003190112610192576020600454604051908152f35b346101925760203660031901126101925760206101d16004356109cc565b90549060031b1c604051908152f35b34610192575f366003190112610192575f546040516001600160a01b039091168152602090f35b346101925761021e6102183661095a565b90610c08565b6040518091602082016020835281518091526020604084019201905f5b818110610249575050500390f35b825184528594506020938401939092019160010161023b565b34610192575f366003190112610192576001546040516001600160a01b039091168152602090f35b34610192575f36600319011261019257604051604081019080821067ffffffffffffffff8311176102e2576101279160405260058152640312e302e360dc1b6020820152604051918291602083526020830190610970565b634e487b7160e01b5f52604160045260245ffd5b34610192576020366003190112610192576004355f52600260205260405f20604051905f9080549061032782610994565b808552916001811690811561016b575060011461034e5761012784610113818603826109f8565b5f90815260208120939250905b8082106103745750909150810160200161011382610103565b91926001816020925483858801015201910190929161035b565b34610192576040366003190112610192576004356001600160a01b03811690819003610192576024356001600160a01b03811690819003610192575f516020610cb25f395f51905f52549160ff8360401c16159267ffffffffffffffff81168015908161053c575b6001149081610532575b159081610529575b5061051a5767ffffffffffffffff1981166001175f516020610cb25f395f51905f5255836104ee575b5080156104dc5781156104c9576bffffffffffffffffffffffff60a01b5f5416175f556bffffffffffffffffffffffff60a01b600154161760015561047257005b68ff0000000000000000195f516020610cb25f395f51905f5254165f516020610cb25f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b5063059c24ad60e41b5f5260045260245ffd5b632e86c5bb60e21b5f5260045260245ffd5b68ffffffffffffffffff191668010000000000000001175f516020610cb25f395f51905f525583610431565b63f92ee8a960e01b5f5260045ffd5b90501585610408565b303b159150610400565b8591506103f6565b34610192576020366003190112610192576004355f526003602052602060ff60405f2054166040519015158152f35b346101925761058a6105843661095a565b90610a74565b6040518091602082016020835281518091526040830190602060408260051b8601019301915f905b8282106105c157505050500390f35b919360019193955060206105e08192603f198a82030186528851610970565b96019201920185949391926105b2565b346101925760403660031901126101925760243560043567ffffffffffffffff8211610192573660238301121561019257816004013567ffffffffffffffff811161019257366024828501011161019257600154604051631b618f9560e31b815233600482015290602090829060249082906001600160a01b03165afa908115610927575f916108ec575b50156108d95781156108c657815f52600360205260ff60405f2054166108b357815f52600560205260405f20546108a057815f52600260205260405f206106c28154610994565b601f811161084f575b50815f601f82116001146107e5575f916107d7575b508260011b905f198460031b1c19161790555b60045490680100000000000000008210156102e2576107198260018594016004556109cc565b81549060031b9084821b915f19901b1916179055600454825f52600560205260405f2055815f52600360205260405f20600160ff198254161790557f75d15e304dde965ced7d2c2ae58c149528a3346e9ac6a8df51bdd9c4ca3911c56024604060018060a01b035f54169684889583519485936020855282602086015201848401375f828201840152601f01601f19168101030190a333917f77a4f4644c1ca20be006a07bdef23f250cc63c21e7e3ffdf345e6754d185b89b5f80a4005b6024915085010135856106e0565b5f8381526020812092508490601f198216905b818110610831575010610815575b5050600182811b0190556106f3565b8501602401355f19600385901b60f8161c191690558480610806565b888401602401358555600190940193602093840193879350016107f8565b828111156106cb57815f5260205f20601f840160051c9060208510610898575b81601f9101920160051c03905f5b82811061088b5750506106cb565b5f8282015560010161087d565b5f915061086f565b5063f3f1647360e01b5f5260045260245ffd5b50632ff49d2d60e21b5f5260045260245ffd5b5063022680d160e41b5f5260045260245ffd5b6310ac496560e01b5f523360045260245ffd5b90506020813d60201161091f575b81610907602093836109f8565b8101031261019257518015158103610192578461067b565b3d91506108fa565b6040513d5f823e3d90fd5b34610192576020366003190112610192576020906004355f526005825260405f205415158152f35b6040906003190112610192576004359060243590565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90600182811c921680156109c2575b60208310146109ae57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916109a3565b6004548110156109e45760045f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176102e257604052565b67ffffffffffffffff81116102e25760051b60200190565b91908203918211610a3f57565b634e487b7160e01b5f52601160045260245ffd5b91908201809211610a3f57565b80518210156109e45760209160051b010190565b919060606004549081851015610bd0575083610a8f91610a32565b80821015610bc957505b610aa281610a1a565b90610ab060405192836109f8565b808252601f19610abf82610a1a565b015f5b818110610bb857505081935f5b828110610adc5750505050565b610aee610ae98284610a53565b6109cc565b90549060031b1c5f52600260205260405f20604051905f90805490610b1282610994565b8085529160018116908115610b915750600114610b58575b505090610b3c816001949303826109f8565b610b468287610a60565b52610b518186610a60565b5001610acf565b5f908152602081209092505b818310610b7b5750508101602001610b3c82610b2a565b6001816020925483868801015201920191610b64565b60ff191660208087019190915292151560051b85019092019250610b3c9150839050610b2a565b806060602080938701015201610ac2565b9050610a99565b929350505060405190610be46020836109f8565b5f82525f90815b828110610bf85750505090565b8082602080938701015201610beb565b919060045480841015610c955783610c1f91610a32565b80821015610c8e57505b610c3281610a1a565b610c3f60405191826109f8565b818152601f19610c4e83610a1a565b0136602083013780935f5b838110610c665750505050565b80610c76610ae960019385610a53565b90549060031b1c610c878286610a60565b5201610c59565b9050610c29565b50509050604051610ca76020826109f8565b5f81525f3681379056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212200bf4f22174cf2977d6d4946006ad513c7d0197e23a9e47f30f2a8b71e178499164736f6c63430008220033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060803461013457601f6103be38819003918201601f19168301916001600160401b03831184841017610138578084926040948552833981010312610134576100468161014c565b906001600160a01b039061005c9060200161014c565b16908115610121575f80546001600160a01b031981168417825560405193916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3803b1561010157600180546001600160a01b0319166001600160a01b039290921691821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a261025d90816101618239f35b63211eb15960e21b5f9081526001600160a01b0391909116600452602490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101345756fe60806040526004361015610011575f80fd5b5f3560e01c80633659cfe6146101835780635c60da1b1461015b578063715018a6146101045780638da5cb5b146100dd5763f2fde38b14610050575f80fd5b346100d95760203660031901126100d9576004356001600160a01b038116908190036100d95761007e610201565b80156100c6575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b346100d9575f3660031901126100d9575f546040516001600160a01b039091168152602090f35b346100d9575f3660031901126100d95761011c610201565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100d9575f3660031901126100d9576001546040516001600160a01b039091168152602090f35b346100d95760203660031901126100d9576004356001600160a01b038116908181036100d9576101b1610201565b3b156101ef57600180546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b63211eb15960e21b5f5260045260245ffd5b5f546001600160a01b0316330361021457565b63118cdaa760e01b5f523360045260245ffdfea2646970667358221220beda2de86c8e4ea0530f51bf1980e7440d9bef48e05b233e1f89311d54f67a2464736f6c634300082200336080806040523460aa575f516020610d905f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051610ce190816100af8239f35b6001600160401b0319166001600160401b039081175f516020610d905f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816349ccb3ab146108355750806354fd4d50146107f057806369843940146107a85780638ba8bbb6146107205780638da5cb5b146106f95780638f3b2b9f146106a25780639358adf5146102f55780639777f31e146102c8578063b4d1cbad14610265578063c47fe6ca14610231578063c4d66de8146100c15763ee1ce841146100a0575f80fd5b346100bd575f3660031901126100bd576020600354604051908152f35b5f80fd5b346100bd5760203660031901126100bd576004356001600160a01b038116908190036100bd575f516020610c8c5f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610229575b600114908161021f575b159081610216575b506102075767ffffffffffffffff1981166001175f516020610c8c5f395f51905f5255826101db575b5080156101c9576bffffffffffffffffffffffff60a01b5f5416175f5561017257005b68ff0000000000000000195f516020610c8c5f395f51905f5254165f516020610c8c5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b632e86c5bb60e21b5f5260045260245ffd5b68ffffffffffffffffff191668010000000000000001175f516020610c8c5f395f51905f52558261014f565b63f92ee8a960e01b5f5260045ffd5b90501584610126565b303b15915061011e565b849150610114565b346100bd5760203660031901126100bd576004355f526001602052602061025b60405f20546108dd565b1515604051908152f35b346100bd5760403660031901126100bd57610284602435600435610bdd565b6040518091602082016020835281518091526020604084019201905f5b8181106102af575050500390f35b82518452859450602093840193909201916001016102a1565b346100bd5760203660031901126100bd5760206102e6600435610bc5565b90549060031b1c604051908152f35b346100bd5760403660031901126100bd5760043560243567ffffffffffffffff81116100bd57366023820112156100bd5780600401359067ffffffffffffffff82116100bd5736602483830101116100bd575f546001600160a01b0316330361068f57821561068057825f52600160205260405f2061037481546108dd565b610535575b50825f52600160205260405f2061039a8361039483546108dd565b83610b67565b5f83601f81116001146104cc57806103c6925f916104be575b508160011b915f199060031b1c19161790565b90555b825f52600460205260405f205415610438575b602460407ff080de3eec6e73c2a8b5502cdab171d59dda1c076f071ad922f3ab09738274089260018060a01b035f5416948083519485936020855282602086015201848401375f828201840152601f01601f19168101030190a3005b60035490600160401b8210156104aa57604060249161047e8460017ff080de3eec6e73c2a8b5502cdab171d59dda1c076f071ad922f3ab09738274089601600355610bc5565b81549060031b9088821b915f19901b1916179055600354865f526004602052825f2055925050506103dc565b634e487b7160e01b5f52604160045260245ffd5b6024915085010135876103b3565b50601f19841690825f528460205f20925f5b8181106105175750106104fb575b5050600183811b0190556103c9565b8301602401355f19600386901b60f8161c1916905584806104ec565b868401602401358555600190940193602093840193889350016104de565b835f52600260205260405f20610560610567604051936105548561089f565b60405192838092610915565b03826108bb565b825260208201904282528054600160401b8110156104aa5761058e916001820181556109f5565b92909261066d575180519067ffffffffffffffff82116104aa576105bc826105b686546108dd565b86610b67565b602090601f83116001146106075791806105ef92600195945f926105fc575b50508160011b915f199060031b1c19161790565b83555b5191015583610379565b0151905089806105db565b90601f19831691855f52815f20925f5b818110610655575091600195949291838795931061063d575b505050811b0183556105f2565b01515f1960f88460031b161c19169055888080610630565b92936020600181928786015181550195019301610617565b634e487b7160e01b5f525f60045260245ffd5b630eda9c3d60e31b5f5260045ffd5b63245aecd360e01b5f523360045260245ffd5b346100bd5760403660031901126100bd576106bb6109ae565b506004355f5260026020526106f56106e16106db60243560405f206109f5565b50610a36565b60405191829160208352602083019061087f565b0390f35b346100bd575f3660031901126100bd575f546040516001600160a01b039091168152602090f35b346100bd5760603660031901126100bd57610742604435602435600435610a63565b6040518091602082016020835281518091526040830190602060408260051b8601019301915f905b82821061077957505050500390f35b919360019193955060206107988192603f198a8203018652885161087f565b960192019201859493919261076a565b346100bd5760203660031901126100bd576004355f5260016020526106f56105606107dc60405f2060405192838092610915565b60405191829160208352602083019061085b565b346100bd575f3660031901126100bd576106f560405161080f8161089f565b60058152640312e302e360dc1b602082015260405191829160208352602083019061085b565b346100bd5760203660031901126100bd576020906004355f526002825260405f20548152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080610896845160408552604085019061085b565b93015191015290565b6040810190811067ffffffffffffffff8211176104aa57604052565b90601f8019910116810190811067ffffffffffffffff8211176104aa57604052565b90600182811c9216801561090b575b60208310146108f757565b634e487b7160e01b5f52602260045260245ffd5b91607f16916108ec565b5f9291815491610924836108dd565b8083529260018116908115610979575060011461094057505050565b5f9081526020812093945091925b83831061095f575060209250010190565b60018160209294939454838587010152019101919061094e565b915050602093945060ff929192191683830152151560051b010190565b67ffffffffffffffff81116104aa5760051b60200190565b604051906109bb8261089f565b5f602083606081520152565b919082039182116109d457565b634e487b7160e01b5f52601160045260245ffd5b919082018092116109d457565b8054821015610a0e575f5260205f209060011b01905f90565b634e487b7160e01b5f52603260045260245ffd5b8051821015610a0e5760209160051b010190565b90604051610a438161089f565b602060018294604051610a5a816105608185610915565b84520154910152565b929190925f52600260205260405f2090815480851015610b2a5784610a87916109c7565b80821015610b225750905b610a9b82610996565b90610aa960405192836108bb565b828252601f19610ab884610996565b015f5b818110610b0b57505081945f5b848110610ad6575050505050565b80610aef6106db610ae9600194866109e8565b866109f5565b610af98287610a22565b52610b048186610a22565b5001610ac8565b602090610b166109ae565b82828701015201610abb565b905090610a92565b509192505050604051610b3e6020826108bb565b5f81525f805b818110610b5057505090565b602090610b5b6109ae565b82828601015201610b44565b919091601f8311610b78575b505050565b818311610b8457505050565b5f5260205f206020601f830160051c9210610bbd575b81601f9101920160051c03905f5b82811015610b73575f82820155600101610ba8565b5f9150610b9a565b600354811015610a0e5760035f5260205f2001905f90565b919060035480841015610c6f5783610bf4916109c7565b80821015610c6857505b610c0781610996565b610c1460405191826108bb565b818152601f19610c2383610996565b0136602083013780935f5b838110610c3b5750505050565b80610c50610c4b600193856109e8565b610bc5565b90549060031b1c610c618286610a22565b5201610c2e565b9050610bfe565b50509050604051610c816020826108bb565b5f81525f3681379056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c9b9caa4572170b5047b5c83ae9a818bac66627777610c268e1e4cb79fba433864736f6c63430008220033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00", sourceMap: "1448:8085:33:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;4134:10;1273:26:68;1269:95;;-1:-1:-1;1448:8085:33;;4134:10;-1:-1:-1;;;;;;1448:8085:33;;;;;;;;;;4134:10;;-1:-1:-1;;;;;1448:8085:33;;3052:40:68;;-1:-1:-1;3052:40:68;4164:31:33;;1448:8085;;;4250:73;1448:8085;;;;;;4250:73;;-1:-1:-1;4250:73:33;;;1448:8085;4250:73;;;;;;;;-1:-1:-1;;4334:36:33;;1448:8085;;4437:16;;;;-1:-1:-1;;;;;4437:16:33;;;;;;;;;;;;;;;-1:-1:-1;4437:16:33;;;;;1448:8085;;4407:63;;;;;;;1448:8085;-1:-1:-1;;;;;4407:63:33;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;4464:4;1448:8085;;;;;;;;4407:63;;;-1:-1:-1;4407:63:33;;;;;-1:-1:-1;;;;;1448:8085:33;4380:91;;1448:8085;;4537:15;;;;-1:-1:-1;;;;;4537:15:33;;;;;;;;;;;;;;;-1:-1:-1;4537:15:33;;;;;;1448:8085;;;4507:62;;;-1:-1:-1;;;;;4507:62:33;;;;;;;;;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;4464:4;1448:8085;;;;;;;;4507:62;;;-1:-1:-1;4507:62:33;;;;;-1:-1:-1;;;;;1448:8085:33;;4481:89;1448:8085;;;;;;;;4380:91;1448:8085;;;;;;;;;;;;;;;4481:89;1448:8085;;;;;;;;;;;;;;;4334:36;1448:8085;;;;;;;;;;;;;;;;4507:62;1448:8085;;;-1:-1:-1;1448:8085:33;;;;;4507:62;1448:8085;;;-1:-1:-1;1448:8085:33;;4250:73;1448:8085;4250:73;-1:-1:-1;1448:8085:33;4250:73;1448:8085;4250:73;;1448:8085;4250:73;;;;;;1448:8085;4250:73;;;:::i;:::-;;;1448:8085;;;;;;;;;;4250:73;1448:8085;;-1:-1:-1;1448:8085:33;;4250:73;;;-1:-1:-1;4250:73:33;;1448:8085;;;;-1:-1:-1;1448:8085:33;;;;-1:-1:-1;1448:8085:33;1269:95:68;1322:31;;;-1:-1:-1;1322:31:68;-1:-1:-1;1322:31:68;1448:8085:33;;-1:-1:-1;1322:31:68;1448:8085:33;;;;;-1:-1:-1;;1448:8085:33;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;:::o", linkReferences: {} },
|
|
2846
|
+
deployedBytecode: { object: "0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816301d5c15f14610a655750806322b2708b14610a215780634fc5dce9146109dd5780635269fc58146107bc57806354fd4d5014610750578063715018a6146106f95780637656419f146106b557806376a294181461069b578063803b130114610671578063811244e0146105595780638da5cb5b146105325780638f0c0f3614610514578063adff70ee146103e1578063ca7ad4231461039c578063d6fefb141461037e578063eccf8f55146101675763f2fde38b146100d9575f80fd5b34610164576020366003190112610164576004356001600160a01b0381169081900361016257610107610cc2565b801561014e5781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346101645780600319360112610164573380825260026020818152604080852054848652929091528320546101ac926001600160a01b039182169290911615610b22565b60405163189acdbd60e31b6020820152336024820152602481526101d1604482610b4f565b604051906104588083019083821067ffffffffffffffff83111761036a5791610222918493610e6d85397f000000000000000000000000000000000000000000000000000000000000000090610b71565b039082f0801561035d57604051638da5cb5b60e01b81526001600160a01b03919091169190602081600481865afa908115610352578291610323575b50336001600160a01b03909116036103145733815260026020526040812080546001600160a01b0319166001600160a01b03841617905560045491600160401b831015610300576102b9836001602095016004556004610bb5565b81549060031b9083821b9160018060a01b03901b191617905580604051927f06ac7c9c10355bc43f184759d7b4314153af79956fdb67a18ea95e69d6d11209339180a38152f35b634e487b7160e01b82526041600452602482fd5b636f2b988d60e11b8152600490fd5b610345915060203d60201161034b575b61033d8183610b4f565b810190610b96565b5f61025e565b503d610333565b6040513d84823e3d90fd5b50604051903d90823e3d90fd5b634e487b7160e01b85526041600452602485fd5b50346101645780600319360112610164576020600354604051908152f35b50346101645780600319360112610164576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610164576020366003190112610164576004356001600160a01b038116908181036104fd5761041c90610414610cc2565b821515610bde565b60405163ee1ce84160e01b8152602081600481855afa8015610509576104d6575b50817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b1561016257818091602460405180948193631b2ce7f360e11b83528860048401525af18015610352576104c1575b50807f9b1a9f05ed531f4ad23baba39ac270dfe92e4c89b638107959a4b7f5050ce71e91a280f35b816104cb91610b4f565b61016257815f610499565b6020813d602011610501575b816104ef60209383610b4f565b810103126104fd575161043d565b8280fd5b3d91506104e2565b6040513d85823e3d90fd5b50346101645780600319360112610164576020600454604051908152f35b5034610164578060031936011261016457546040516001600160a01b039091168152602090f35b5034610650576020366003190112610650576004356001600160a01b038116908181036106505761058c90610414610cc2565b604051637656419f60e01b8152602081600481855afa801561064557610654575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b15610650575f8091602460405180948193631b2ce7f360e11b83528760048401525af1801561064557610630575b507fefa2deb621cf345468e8c22862b260aa183290f4768870fdfcfce406b7161c808280a280f35b61063d9192505f90610b4f565b5f905f610608565b6040513d5f823e3d90fd5b5f80fd5b61066c9060203d60201161034b5761033d8183610b4f565b6105ad565b346106505761069761068b61068536610aca565b90610de7565b60405191829182610ae0565b0390f35b346106505761069761068b6106af36610aca565b90610d32565b34610650575f366003190112610650576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610650575f36600319011261065057610711610cc2565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610650575f36600319011261065057604051604081019080821067ffffffffffffffff8311176107a8576106979160405260058152640312e302e360dc1b6020820152604051918291602083526020830190610aa6565b634e487b7160e01b5f52604160045260245ffd5b34610650576020366003190112610650576004356001600160a01b03811690818103610650576107ea610c06565b81156109ca575f82815260016020526040902054610815916001600160a01b03909116908115610b22565b60405163485cc95560e01b6020820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316604480830191909152815261086c606482610b4f565b604051906104588083019183831067ffffffffffffffff8411176107a85783926108bc92610e6d85397f000000000000000000000000000000000000000000000000000000000000000090610b71565b03905ff0801561064557604051638da5cb5b60e01b81526001600160a01b03919091169190602081600481865afa80156106455782915f916109ab575b506001600160a01b03160361099c575f81815260016020526040902080546001600160a01b0319166001600160a01b03841617905560035491600160401b8310156107a857610952836001602095016003556003610bb5565b81546001600160a01b0360039290921b91821b19169083901b1790556040519181907f6294914f6f12fb260c6b69d8a5435317a9318b45790f0b19b42cdd06708fcdea5f80a38152f35b636f2b988d60e11b5f5260045ffd5b6109c4915060203d60201161034b5761033d8183610b4f565b846108f9565b50632e86c5bb60e21b5f5260045260245ffd5b34610650576020366003190112610650576004356001600160a01b03811690819003610650575f526001602052602060018060a01b0360405f205416604051908152f35b34610650576020366003190112610650576004356001600160a01b03811690819003610650575f526002602052602060018060a01b0360405f205416604051908152f35b34610650575f366003190112610650577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6040906003190112610650576004359060243590565b60206040818301928281528451809452019201905f5b818110610b035750505090565b82516001600160a01b0316845260209384019390920191600101610af6565b15610b2b575050565b63f3d358af60e01b5f9081526001600160a01b039182166004529116602452604490fd5b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b039091168152604060208201819052610b9392910190610aa6565b90565b9081602091031261065057516001600160a01b03811681036106505790565b8054821015610bca575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15610be65750565b630c76093760e01b5f9081526001600160a01b0391909116600452602490fd5b5f546001600160a01b03163314610cc057604051631b618f9560e31b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610645575f91610c85575b5015610c7257565b6310ac496560e01b5f523360045260245ffd5b90506020813d602011610cb8575b81610ca060209383610b4f565b8101031261065057518015158103610650575f610c6a565b3d9150610c93565b565b5f546001600160a01b03163303610cd557565b63118cdaa760e01b5f523360045260245ffd5b67ffffffffffffffff81116107a85760051b60200190565b90610d0a82610ce8565b610d176040519182610b4f565b8281528092610d28601f1991610ce8565b0190602036910137565b919060035480841015610dcb57838103908111610db05780821015610dc457505b610d5c81610d00565b925f5b828110610d6b57505050565b808201808311610db057610d80906003610bb5565b9054865160039290921b1c6001600160a01b03169190811015610bca5760019160208260051b8801015201610d5f565b634e487b7160e01b5f52601160045260245ffd5b9050610d53565b50509050604051610ddd602082610b4f565b5f81525f36813790565b919060045480841015610dcb57838103908111610db05780821015610e6557505b610e1181610d00565b925f5b828110610e2057505050565b808201808311610db057610e35906004610bb5565b9054865160039290921b1c6001600160a01b03169190811015610bca5760019160208260051b8801015201610e14565b9050610e0856fe60a08060405261045880380380916100178285610271565b833981016040828203126101b45761002e82610294565b602083015190926001600160401b0382116101b4570181601f820112156101b4578051906001600160401b03821161025d5760405192610078601f8401601f191660200185610271565b828452602083830101116101b457815f9260208093018386015e83010152813b1561023c577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b038416908117909155604051635c60da1b60e01b8152909190602081600481865afa9081156101c0575f91610202575b50803b156101e25750817f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e5f80a28051156101cb57602060049260405193848092635c60da1b60e01b82525afa80156101c0575f90610181575b61016592506102a8565b505b608052604051610123908161033582396080518160180152f35b506020823d6020116101b8575b8161019b60209383610271565b810103126101b4576101af61016592610294565b61015b565b5f80fd5b3d915061018e565b6040513d5f823e3d90fd5b505034156101675763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b90506020813d602011610234575b8161021d60209383610271565b810103126101b45761022e90610294565b5f610101565b3d9150610210565b50631933b43b60e21b5f9081526001600160a01b0391909116600452602490fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761025d57604052565b51906001600160a01b03821682036101b457565b905f8091602081519101845af48080610321575b156102dc5750506040513d81523d5f602083013e60203d82010160405290565b1561030157639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15610312576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b503d1515806102bc5750813b15156102bc56fe60806040819052635c60da1b60e01b81526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801560a2575f901560d1575060203d602011609c575b601f19601f820116608001906080821067ffffffffffffffff83111760885760849160405260800160ad565b60d1565b634e487b7160e01b5f52604160045260245ffd5b503d6058565b6040513d5f823e3d90fd5b602090607f19011260cd576080516001600160a01b038116810360cd5790565b5f80fd5b5f8091368280378136915af43d5f803e1560e9573d5ff35b3d5ffdfea2646970667358221220dd3a5de3d94daf41d42176f8dbe3440745ebdff2c1ac662fc1c6ac528bd2a35264736f6c63430008220033a264697066735822122062068dfced4f56c29730e500b967dfb4c39ce214a4a0aac89c540e64627c359164736f6c63430008220033", sourceMap: "1448:8085:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;1500:62:68;;:::i;:::-;2627:22;;2623:91;;1448:8085:33;;-1:-1:-1;;;;;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;3052:40:68;1448:8085:33;;3052:40:68;1448:8085:33;;2623:91:68;-1:-1:-1;;;2672:31:68;;1448:8085:33;;;;;2672:31:68;;1448:8085:33;;;;;;;;;;;;;;;;;;6518:10;1448:8085;;;6506:11;1448:8085;;;;;;;;;;;;;;;;;;;6485:134;;-1:-1:-1;;;;;1448:8085:33;;;;6518:10;;1448:8085;6506:37;6485:134;:::i;:::-;1448:8085;;6654:51;;;1448:8085;6654:51;;;6518:10;6654:51;;;1448:8085;6654:51;;;;;;;:::i;:::-;1448:8085;;6731:42;;;;;;;;;;;;;;;;;;;;;;;6747:15;6731:42;;:::i;:::-;;;;;;;;;1448:8085;;-1:-1:-1;;;6792:26:33;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;6792:26;;;;;;;;;;;1448:8085;-1:-1:-1;6518:10:33;-1:-1:-1;;;;;1448:8085:33;;;6792:40;1448:8085;;6518:10;1448:8085;;6506:11;1448:8085;;;;;;;-1:-1:-1;;;;;;1448:8085:33;-1:-1:-1;;;;;1448:8085:33;;;;;;;;-1:-1:-1;;;1448:8085:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;6518:10;6959:35;6518:10;6959:35;;;1448:8085;;;;-1:-1:-1;;;1448:8085:33;;;;;6654:51;1448:8085;;;-1:-1:-1;;;1448:8085:33;;;;;6792:26;;;;1448:8085;6792:26;1448:8085;6792:26;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1448:8085;;;;;;;;;6731:42;1448:8085;;;;;;;;;;;6731:42;-1:-1:-1;;;1448:8085:33;;;;;6654:51;1448:8085;;;;;;;;;;;;;;;;5590:15;1448:8085;;;;;;;;;;;;;;;;;;;;;;1705:50;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;7755:82;1500:62:68;;;:::i;:::-;7763:31:33;;;7755:82;:::i;:::-;1448:8085;;-1:-1:-1;;;7847:43:33;;1448:8085;;;;7847:43;;;;;;;;;1448:8085;-1:-1:-1;1448:8085:33;7918:15;-1:-1:-1;;;;;1448:8085:33;7900:63;;;;;1448:8085;;;7900:63;1448:8085;;;;;;;;;7900:63;;;1448:8085;7900:63;;1448:8085;7900:63;;;;;;;;1448:8085;7978:50;;;;;1448:8085;;7900:63;;;;;:::i;:::-;1448:8085;;7900:63;;;;7847:43;1448:8085;7847:43;;1448:8085;7847:43;;;;;;1448:8085;7847:43;;;:::i;:::-;;;1448:8085;;;;;7847:43;;1448:8085;;;;7847:43;;;-1:-1:-1;7847:43:33;;;1448:8085;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;6079:82;1500:62:68;;;:::i;6079:82:33:-;1448:8085;;-1:-1:-1;;;6171:49:33;;1448:8085;;;;6171:49;;;;;;;;;1448:8085;-1:-1:-1;6248:16:33;-1:-1:-1;;;;;1448:8085:33;6230:64;;;;;1448:8085;;;6230:64;1448:8085;;;;;;;;;6230:64;;;1448:8085;6230:64;;1448:8085;6230:64;;;;;;;;1448:8085;6309:51;;;;;1448:8085;;6230:64;;;;;1448:8085;6230:64;;:::i;:::-;1448:8085;6230:64;;;;;1448:8085;;;;;;;;;6230:64;1448:8085;;;6171:49;;;1448:8085;6171:49;1448:8085;6171:49;;;;;;;:::i;:::-;;;1448:8085;;;;;7554:49;1448:8085;;;:::i;:::-;7554:49;;:::i;:::-;1448:8085;;;;;;;:::i;:::-;;;;;;;;;5848:50;1448:8085;;;:::i;:::-;5848:50;;:::i;1448:8085::-;;;;;;-1:-1:-1;;1448:8085:33;;;;;;2249:50;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;1500:62:68;;:::i;:::-;1448:8085:33;;;-1:-1:-1;;;;;;1448:8085:33;;;;-1:-1:-1;;;;;1448:8085:33;3052:40:68;1448:8085:33;;3052:40:68;1448:8085:33;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1448:8085:33;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;2947:81;;:::i;:::-;4776:18;;1448:8085;;;;;;4832:12;1448:8085;;;;;;4824:84;;-1:-1:-1;;;;;1448:8085:33;;;;4832:32;;4824:84;:::i;:::-;1448:8085;;-1:-1:-1;;;1448:8085:33;4943:64;;;;;;1448:8085;;;4989:16;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;4943:64;;;;1448:8085;4943:64;:::i;:::-;1448:8085;;5033:43;;;;;;;;;;;;;;;;;;;;;;5049:16;5033:43;;:::i;:::-;;;1448:8085;5033:43;;;;;1448:8085;;-1:-1:-1;;;5095:26:33;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;5095:26;;;;;;;;1448:8085;5095:26;;;1448:8085;-1:-1:-1;;;;;;1448:8085:33;5095:34;1448:8085;;;;;;4832:12;1448:8085;;;;;;;-1:-1:-1;;;;;;1448:8085:33;-1:-1:-1;;;;;1448:8085:33;;;;;5209:15;1448:8085;;-1:-1:-1;;;1448:8085:33;;;;;;;4832:12;1448:8085;;;5209:15;1448:8085;5209:15;1448:8085;:::i;:::-;;;-1:-1:-1;;;;;5209:15:33;1448:8085;;;;;;;;;;;;;;;;;;;;;5252:31;-1:-1:-1;;5252:31:33;1448:8085;;;;;;;;;;;;5095:26;;;;1448:8085;5095:26;1448:8085;5095:26;;;;;;;:::i;:::-;;;;1448:8085;;;;;;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;5431:12;1448:8085;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;7141:11;1448:8085;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1448:8085:33;;;;1964:49;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1448:8085:33;;;;;;;;-1:-1:-1;;1448:8085:33;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;1448:8085:33;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;1448:8085:33;;-1:-1:-1;1448:8085:33;;;-1:-1:-1;1448:8085:33;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;1448:8085:33;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;8363:248;1710:6:68;1448:8085:33;-1:-1:-1;;;;;1448:8085:33;8423:10;:21;8419:34;;1448:8085;;-1:-1:-1;;;8483:72:33;;8423:10;8483:72;;;1448:8085;;;8483:72;1448:8085;8506:16;-1:-1:-1;;;;;1448:8085:33;8483:72;;;;;;;1710:6:68;8483:72:33;;;8363:248;1448:8085;;;;8363:248::o;1448:8085::-;;;;1710:6:68;1448:8085:33;8423:10;8483:72;1448:8085;8483:72;1710:6:68;1448:8085:33;8483:72;;;1448:8085;8483:72;;1448:8085;8483:72;;;;;;1448:8085;8483:72;;;:::i;:::-;;;1448:8085;;;;;;;;;;;;8483:72;;;;;;-1:-1:-1;8483:72:33;;8419:34;8446:7::o;1796:162:68:-;1710:6;1448:8085:33;-1:-1:-1;;;;;1448:8085:33;735:10:89;1855:23:68;1851:101;;1796:162::o;1851:101::-;1901:40;;;1710:6;1901:40;735:10:89;1901:40:68;1448:8085:33;;1710:6:68;1901:40;1448:8085:33;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;8999:532::-;;;5867:15;1448:8085;9242:15;;;;9238:44;;1448:8085;;;;;;;;9353:17;;;;;;:37;;9409:20;;;:::i;:::-;9444:9;-1:-1:-1;9455:9:33;;;;;;8999:532;;;:::o;9466:3::-;1448:8085;;;;;;;;9496:18;;5867:15;9496:18;:::i;:::-;1448:8085;;;;5867:15;1448:8085;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;;;;;9444:9;;1448:8085;;;;-1:-1:-1;1448:8085:33;;;;;-1:-1:-1;1448:8085:33;9353:37;;;;;9238:44;1448:8085;;;;;;;;;;:::i;:::-;9280:1;1448:8085;;9280:1;1448:8085;;;9259:23;:::o;8999:532::-;;;1448:8085;;9242:15;;;;9238:44;;1448:8085;;;;;;;;9353:17;;;;;;:37;;9409:20;;;:::i;:::-;9444:9;-1:-1:-1;9455:9:33;;;;;;8999:532;;;:::o;9466:3::-;1448:8085;;;;;;;;9496:18;;1448:8085;9496:18;:::i;:::-;1448:8085;;;;;;;;;;-1:-1:-1;;;;;1448:8085:33;;;;;;;;;;;;;;;;;;;9444:9;;9353:37;;;;", linkReferences: {}, immutableReferences: { "11250": [{ start: 946, length: 32 }, { start: 1456, length: 32 }, { start: 2199, length: 32 }], "11254": [{ start: 509, length: 32 }, { start: 1089, length: 32 }, { start: 2679, length: 32 }], "11258": [{ start: 1738, length: 32 }, { start: 2094, length: 32 }, { start: 3122, length: 32 }] } },
|
|
2847
|
+
methodIdentifiers: { "claimUserStore()": "eccf8f55", "deployLabelStoreFor(address)": "5269fc58", "getLabelStore(address)": "4fc5dce9", "getLabelStoreCount()": "d6fefb14", "getLabelStores(uint256,uint256)": "76a29418", "getUserStore(address)": "22b2708b", "getUserStoreCount()": "8f0c0f36", "getUserStores(uint256,uint256)": "803b1301", "labelStoreBeacon()": "ca7ad423", "owner()": "8da5cb5b", "protocolRegistry()": "7656419f", "renounceOwnership()": "715018a6", "transferOwnership(address)": "f2fde38b", "upgradeLabelStoreImplementation(address)": "811244e0", "upgradeUserStoreImplementation(address)": "adff70ee", "userStoreBeacon()": "01d5c15f", "version()": "54fd4d50" },
|
|
2848
|
+
rawMetadata: '{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"protocolRegistry_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"existingStore","type":"address"}],"name":"AlreadyDeployed","type":"error"},{"inputs":[],"name":"ImplementationBindingMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"InvalidImplementation","type":"error"},{"inputs":[{"internalType":"address","name":"protocolRegistry","type":"address"}],"name":"InvalidProtocolRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"InvalidUser","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NotAuthorised","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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"store","type":"address"}],"name":"LabelStoreDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"LabelStoreImplementationUpgraded","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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"store","type":"address"}],"name":"UserStoreClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"UserStoreImplementationUpgraded","type":"event"},{"inputs":[],"name":"claimUserStore","outputs":[{"internalType":"address","name":"store","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"deployLabelStoreFor","outputs":[{"internalType":"address","name":"store","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getLabelStore","outputs":[{"internalType":"address","name":"store","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLabelStoreCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getLabelStores","outputs":[{"internalType":"address[]","name":"stores","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserStore","outputs":[{"internalType":"address","name":"store","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserStoreCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getUserStores","outputs":[{"internalType":"address[]","name":"stores","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"labelStoreBeacon","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeLabelStoreImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeUserStoreImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"userStoreBeacon","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"versionString","type":"string"}],"stateMutability":"pure","type":"function"}],"devdoc":{"custom:security-contact":"admin@parity.io","details":"Each user may acquire AT MOST two stores, ever: - a `LabelStore`, deployed via `deployLabelStoreFor` by a protocol-registered caller during registration; and - a `UserStore`, claimed via `claimUserStore` by the user themselves. Both are `BeaconProxy` instances pointing at their respective `UpgradeableBeacon`. The factory owns both beacons so the factory owner can upgrade implementations for every proxy atomically. Neither per-user mapping is ever transferred, reassigned, or overwritten after the first write; bindings are permanent.","errors":{"AlreadyDeployed(address,address)":[{"params":{"existingStore":"The already-deployed store address.","user":"The user for whom the store exists."}}],"InvalidImplementation(address)":[{"params":{"implementation":"The invalid implementation argument."}}],"InvalidProtocolRegistry(address)":[{"params":{"protocolRegistry":"The invalid registry argument."}}],"InvalidUser(address)":[{"params":{"user":"The invalid user argument."}}],"NotAuthorised(address)":[{"params":{"caller":"The unauthorised msg.sender."}}],"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":{"LabelStoreDeployed(address,address)":{"params":{"store":"The deployed store address.","user":"The user the store is bound to."}},"LabelStoreImplementationUpgraded(address)":{"params":{"newImplementation":"The new implementation address."}},"UserStoreClaimed(address,address)":{"params":{"store":"The deployed store address.","user":"The user the store is bound to."}},"UserStoreImplementationUpgraded(address)":{"params":{"newImplementation":"The new implementation address."}}},"kind":"dev","methods":{"claimUserStore()":{"details":"Self-claim only; `_owner` on the resulting store is always `msg.sender`, regardless of who pays gas. One store per caller, forever.","returns":{"store":"The deployed store address."}},"constructor":{"custom:reverts":"InvalidProtocolRegistry","details":"A single `new StoreFactory(protocolRegistry)` call wires everything: - Deploys a fresh `LabelStore` implementation. - Deploys a fresh `UserStore` implementation. - Constructs both `UpgradeableBeacon` instances, owned by `address(this)` so `upgrade*Implementation` can delegate to `beacon.upgradeTo`. Keeping the implementation deployments inside the constructor removes a class of operator error: there is no \\"did I deploy the implementation first?\\" step and no way to pass the wrong implementation address.Implementations and beacons are deployed inline so a single factory address fully describes the store topology, removing a class of operator error around mismatched beacons.","params":{"protocolRegistry_":"The protocol registry for writer auth on label stores."}},"deployLabelStoreFor(address)":{"details":"Callable by the factory owner OR any address currently registered in the protocol","params":{"user":"The user the store is bound to forever."},"returns":{"store":"The deployed store address."}},"getLabelStore(address)":{"params":{"user":"The user to look up."},"returns":{"store":"The bound store address, or zero."}},"getLabelStoreCount()":{"returns":{"count":"Length of the deployment list."}},"getLabelStores(uint256,uint256)":{"details":"Insertion order of `deployLabelStoreFor` calls. `offset >= getLabelStoreCount()` returns an empty array; result length is `min(limit, count - offset)`.","params":{"limit":"Maximum entries to return.","offset":"Start index."},"returns":{"stores":"Slice of label-store addresses."}},"getUserStore(address)":{"params":{"user":"The user to look up."},"returns":{"store":"The bound store address, or zero."}},"getUserStoreCount()":{"returns":{"count":"Length of the claim list."}},"getUserStores(uint256,uint256)":{"details":"Insertion order of `claimUserStore` calls. `offset >= getUserStoreCount()` returns an empty array; result length is `min(limit, count - offset)`.","params":{"limit":"Maximum entries to return.","offset":"Start index."},"returns":{"stores":"Slice of user-store addresses."}},"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."},"upgradeLabelStoreImplementation(address)":{"details":"Callable by the factory owner only. Delegates to `UpgradeableBeacon.upgradeTo`.","params":{"newImplementation":"The new implementation address."}},"upgradeUserStoreImplementation(address)":{"details":"Callable by the factory owner only. Delegates to `UpgradeableBeacon.upgradeTo`.","params":{"newImplementation":"The new implementation address."}},"version()":{"returns":{"versionString":"Current version string."}}},"stateVariables":{"_labelStoreList":{"details":"Insertion-order list of every `LabelStore` proxy ever deployed. Append-only."},"_labelStores":{"details":"user => their permanent `LabelStore`. Set once per user, forever."},"_userStoreList":{"details":"Insertion-order list of every `UserStore` proxy ever claimed. Append-only."},"_userStores":{"details":"user => their permanent `UserStore`. Set once per user, forever."},"labelStoreBeacon":{"details":"Public getter name is interface-constrained by {IStoreFactory}."},"protocolRegistry":{"details":"Public getter name is interface-constrained by {IStoreFactory}."},"userStoreBeacon":{"details":"Public getter name is interface-constrained by {IStoreFactory}."}},"title":"StoreFactory","version":1},"userdoc":{"errors":{"AlreadyDeployed(address,address)":[{"notice":"Thrown when attempting to deploy or claim a store that already exists."}],"ImplementationBindingMismatch()":[{"notice":"Thrown when a freshly deployed proxy does not report the expected owner."}],"InvalidImplementation(address)":[{"notice":"Thrown when a zero implementation address is supplied to the constructor or an"}],"InvalidProtocolRegistry(address)":[{"notice":"Thrown when a zero protocol registry address is supplied to the constructor."}],"InvalidUser(address)":[{"notice":"Thrown when a zero user address is supplied."}],"NotAuthorised(address)":[{"notice":"Thrown when an unauthorised address attempts to deploy a label store."}]},"events":{"LabelStoreDeployed(address,address)":{"notice":"Emitted when a `LabelStore` beacon-proxy is deployed for `user`."},"LabelStoreImplementationUpgraded(address)":{"notice":"Emitted when the `LabelStore` implementation behind the label beacon is upgraded."},"UserStoreClaimed(address,address)":{"notice":"Emitted when `user` claims their `UserStore` beacon-proxy."},"UserStoreImplementationUpgraded(address)":{"notice":"Emitted when the `UserStore` implementation behind the user beacon is upgraded."}},"kind":"user","methods":{"claimUserStore()":{"notice":"Caller claims their `UserStore` beacon-proxy."},"constructor":{"notice":"Deploys the factory together with both store implementations and beacons."},"deployLabelStoreFor(address)":{"notice":"Deploys a `LabelStore` beacon-proxy bound to `user`."},"getLabelStore(address)":{"notice":"Returns the `LabelStore` address bound to `user`, or the zero address if none."},"getLabelStoreCount()":{"notice":"Returns the total number of `LabelStore` proxies ever deployed."},"getLabelStores(uint256,uint256)":{"notice":"Paginated enumeration over every `LabelStore` proxy ever deployed."},"getUserStore(address)":{"notice":"Returns the `UserStore` address bound to `user`, or the zero address if none."},"getUserStoreCount()":{"notice":"Returns the total number of `UserStore` proxies ever claimed."},"getUserStores(uint256,uint256)":{"notice":"Paginated enumeration over every `UserStore` proxy ever claimed."},"labelStoreBeacon()":{"notice":"Beacon backing every `LabelStore` proxy."},"protocolRegistry()":{"notice":"Protocol registry used to authorise `deployLabelStoreFor` callers."},"upgradeLabelStoreImplementation(address)":{"notice":"Upgrades the `LabelStore` implementation for every existing and future proxy."},"upgradeUserStoreImplementation(address)":{"notice":"Upgrades the `UserStore` implementation for every existing and future proxy."},"userStoreBeacon()":{"notice":"Beacon backing every `UserStore` proxy."},"version()":{"notice":"Returns implementation version."}},"notice":"Factory for the two per-user DotNS store types, sharing one factory contract and two","version":1}},"settings":{"compilationTarget":{"contracts/store/StoreFactory.sol":"StoreFactory"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",":forge-std/=lib/forge-std/src/",":halmos-cheatcodes/=lib/halmos-cheatcodes/src/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"],"viaIR":true},"sources":{"contracts/registry/IDotnsProtocolRegistry.sol":{"keccak256":"0xdc233ef72cd7eb07bf8631b4de779d2f79671b76051d1d0f81aeb5c86567269e","license":"MIT","urls":["bzz-raw://81f992df80f7f53854ef309c5ed76de1180e10a3af66c86a901e46fa1a1aaae5","dweb:/ipfs/QmbL4WUsWrupbvrz8uKPhp7YEePzdE9z8GpZvrZ5DvTWws"]},"contracts/store/IDotnsStore.sol":{"keccak256":"0xc477b3a4354a66aa9565b7e045504127389956eb4ba0b9c981631f276b598cca","license":"MIT","urls":["bzz-raw://690a2b096d0779395b22062839e2d37338c3db03c248c05779dbf2ffffeb0c71","dweb:/ipfs/QmYVUBLHXGmn71YfYqMFjxbcQtnyPiZwQoBshwwugCZHnv"]},"contracts/store/ILabelStore.sol":{"keccak256":"0xe6097169be43b592b895af7c64d362047f4619fa110ca79d4174167e364465b8","license":"MIT","urls":["bzz-raw://756113c8136ac761b2e3bdc0603f4a43f5a0dd92db4d031e019329de064373be","dweb:/ipfs/QmRB61SofopsXD1bkRFapZmRnpissh6qrbJDHRJHtTcjhr"]},"contracts/store/IStoreFactory.sol":{"keccak256":"0x50eeb2c770feb6392bbfc449bb0c703d99cd440a5db6d0d82bedfdbe1cd3293b","license":"MIT","urls":["bzz-raw://a50699a47ca893f3aa9b13496f0a6e2201acbd3e7871b4579a25c7d4d773b44a","dweb:/ipfs/QmXBMBzZhdv12obarQL6WLFzFxgnmXb8cEt4CHiMkUZTJd"]},"contracts/store/IUserStore.sol":{"keccak256":"0x1c794c4078228e316e559ac5a99103007daa848d63fe4e9f978ca6a660af2ab2","license":"MIT","urls":["bzz-raw://b7ddbd5030aadbf8d2d8e5a790213d79eba1ec55363747caab805a37012cf39b","dweb:/ipfs/Qmcc6h4t7UJc5Ek5uHxUMLvx3UWgqMEatebTbnjN6GjFd8"]},"contracts/store/LabelStore.sol":{"keccak256":"0xd6796cb4aa442628b7c88b423fb461c528796a106d23625d6465970a24c4851e","license":"MIT","urls":["bzz-raw://85f345816133d517a8fe7a46c44a5c4f5da9da94bf3c9342d4ea8ed792ed6026","dweb:/ipfs/QmdkfUxNS55SHLy7gfGKTJAknnVZ8st7C3QBkJH3vUTpfq"]},"contracts/store/StoreFactory.sol":{"keccak256":"0xf1c42b8c14a05ab8389fc06d47c1c63e9a6cd451411cecc20479df7a11efe2fd","license":"MIT","urls":["bzz-raw://0c9ab1f65bb5bdcd84fb49a9ac950a570b59bcb9493f994e26ccbf18c969d159","dweb:/ipfs/QmXwMGdX5b8GynXPxjMz4QvW4M39apukDsrjtVhrLMyxqS"]},"contracts/store/UserStore.sol":{"keccak256":"0xbf7b9aa270f886eb7e18d590dacd40bf5134d5bd8a889b5e5d54d81ee182be1d","license":"MIT","urls":["bzz-raw://576aada2440fa0ef3402fe80d6d92897730314f16a3ac75edc059dd85fa4cbf7","dweb:/ipfs/QmZoSPzvkyAkwnNQ2b77wLEFAHMZp4c4ZxHumX2Uq8PeZo"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16","license":"MIT","urls":["bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d","dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L"]},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","license":"MIT","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","license":"MIT","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"]},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","license":"MIT","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"]},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f","license":"MIT","urls":["bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5","dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o"]},"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol":{"keccak256":"0xef92aebf99249a8ac1d682b9a0f04b6f2af2a8f631cb126625bab15bafcefda8","license":"MIT","urls":["bzz-raw://9a0709f54f682b4d22d3108e5951019145cd0b4abda4517638410d231f37d960","dweb:/ipfs/QmdR3oRXqheNuBVRW1cMqDCffBsV1DtuvRHuaDph4ZTku2"]},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","license":"MIT","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"]},"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol":{"keccak256":"0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b","license":"MIT","urls":["bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299","dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt"]},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","license":"MIT","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"]},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346","license":"MIT","urls":["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710","dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"]},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","license":"MIT","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"]},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","license":"MIT","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"]},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583","license":"MIT","urls":["bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56","dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG"]},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","license":"MIT","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"]}},"version":1}',
|
|
2849
|
+
metadata: { compiler: { version: "0.8.34+commit.80d5c536" }, language: "Solidity", output: { abi: [{ inputs: [{ internalType: "address", name: "protocolRegistry_", type: "address" }], stateMutability: "nonpayable", type: "constructor" }, { inputs: [{ internalType: "address", name: "user", type: "address" }, { internalType: "address", name: "existingStore", type: "address" }], type: "error", name: "AlreadyDeployed" }, { inputs: [], type: "error", name: "ImplementationBindingMismatch" }, { inputs: [{ internalType: "address", name: "implementation", type: "address" }], type: "error", name: "InvalidImplementation" }, { inputs: [{ internalType: "address", name: "protocolRegistry", type: "address" }], type: "error", name: "InvalidProtocolRegistry" }, { inputs: [{ internalType: "address", name: "user", type: "address" }], type: "error", name: "InvalidUser" }, { inputs: [{ internalType: "address", name: "caller", type: "address" }], type: "error", name: "NotAuthorised" }, { 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: "user", type: "address", indexed: true }, { internalType: "address", name: "store", type: "address", indexed: true }], type: "event", name: "LabelStoreDeployed", anonymous: false }, { inputs: [{ internalType: "address", name: "newImplementation", type: "address", indexed: true }], type: "event", name: "LabelStoreImplementationUpgraded", 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: "user", type: "address", indexed: true }, { internalType: "address", name: "store", type: "address", indexed: true }], type: "event", name: "UserStoreClaimed", anonymous: false }, { inputs: [{ internalType: "address", name: "newImplementation", type: "address", indexed: true }], type: "event", name: "UserStoreImplementationUpgraded", anonymous: false }, { inputs: [], stateMutability: "nonpayable", type: "function", name: "claimUserStore", outputs: [{ internalType: "address", name: "store", type: "address" }] }, { inputs: [{ internalType: "address", name: "user", type: "address" }], stateMutability: "nonpayable", type: "function", name: "deployLabelStoreFor", outputs: [{ internalType: "address", name: "store", type: "address" }] }, { inputs: [{ internalType: "address", name: "user", type: "address" }], stateMutability: "view", type: "function", name: "getLabelStore", outputs: [{ internalType: "address", name: "store", type: "address" }] }, { inputs: [], stateMutability: "view", type: "function", name: "getLabelStoreCount", outputs: [{ internalType: "uint256", name: "count", type: "uint256" }] }, { inputs: [{ internalType: "uint256", name: "offset", type: "uint256" }, { internalType: "uint256", name: "limit", type: "uint256" }], stateMutability: "view", type: "function", name: "getLabelStores", outputs: [{ internalType: "address[]", name: "stores", type: "address[]" }] }, { inputs: [{ internalType: "address", name: "user", type: "address" }], stateMutability: "view", type: "function", name: "getUserStore", outputs: [{ internalType: "address", name: "store", type: "address" }] }, { inputs: [], stateMutability: "view", type: "function", name: "getUserStoreCount", outputs: [{ internalType: "uint256", name: "count", type: "uint256" }] }, { inputs: [{ internalType: "uint256", name: "offset", type: "uint256" }, { internalType: "uint256", name: "limit", type: "uint256" }], stateMutability: "view", type: "function", name: "getUserStores", outputs: [{ internalType: "address[]", name: "stores", type: "address[]" }] }, { inputs: [], stateMutability: "view", type: "function", name: "labelStoreBeacon", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [], stateMutability: "view", type: "function", name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [], stateMutability: "view", type: "function", name: "protocolRegistry", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [], stateMutability: "nonpayable", type: "function", name: "renounceOwnership" }, { inputs: [{ internalType: "address", name: "newOwner", type: "address" }], stateMutability: "nonpayable", type: "function", name: "transferOwnership" }, { inputs: [{ internalType: "address", name: "newImplementation", type: "address" }], stateMutability: "nonpayable", type: "function", name: "upgradeLabelStoreImplementation" }, { inputs: [{ internalType: "address", name: "newImplementation", type: "address" }], stateMutability: "nonpayable", type: "function", name: "upgradeUserStoreImplementation" }, { inputs: [], stateMutability: "view", type: "function", name: "userStoreBeacon", outputs: [{ internalType: "address", name: "", type: "address" }] }, { inputs: [], stateMutability: "pure", type: "function", name: "version", outputs: [{ internalType: "string", name: "versionString", type: "string" }] }], devdoc: { kind: "dev", methods: { "claimUserStore()": { details: "Self-claim only; `_owner` on the resulting store is always `msg.sender`, regardless of who pays gas. One store per caller, forever.", returns: { store: "The deployed store address." } }, constructor: { "custom:reverts": "InvalidProtocolRegistry", details: 'A single `new StoreFactory(protocolRegistry)` call wires everything: - Deploys a fresh `LabelStore` implementation. - Deploys a fresh `UserStore` implementation. - Constructs both `UpgradeableBeacon` instances, owned by `address(this)` so `upgrade*Implementation` can delegate to `beacon.upgradeTo`. Keeping the implementation deployments inside the constructor removes a class of operator error: there is no "did I deploy the implementation first?" step and no way to pass the wrong implementation address.Implementations and beacons are deployed inline so a single factory address fully describes the store topology, removing a class of operator error around mismatched beacons.', params: { protocolRegistry_: "The protocol registry for writer auth on label stores." } }, "deployLabelStoreFor(address)": { details: "Callable by the factory owner OR any address currently registered in the protocol", params: { user: "The user the store is bound to forever." }, returns: { store: "The deployed store address." } }, "getLabelStore(address)": { params: { user: "The user to look up." }, returns: { store: "The bound store address, or zero." } }, "getLabelStoreCount()": { returns: { count: "Length of the deployment list." } }, "getLabelStores(uint256,uint256)": { details: "Insertion order of `deployLabelStoreFor` calls. `offset >= getLabelStoreCount()` returns an empty array; result length is `min(limit, count - offset)`.", params: { limit: "Maximum entries to return.", offset: "Start index." }, returns: { stores: "Slice of label-store addresses." } }, "getUserStore(address)": { params: { user: "The user to look up." }, returns: { store: "The bound store address, or zero." } }, "getUserStoreCount()": { returns: { count: "Length of the claim list." } }, "getUserStores(uint256,uint256)": { details: "Insertion order of `claimUserStore` calls. `offset >= getUserStoreCount()` returns an empty array; result length is `min(limit, count - offset)`.", params: { limit: "Maximum entries to return.", offset: "Start index." }, returns: { stores: "Slice of user-store addresses." } }, "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." }, "upgradeLabelStoreImplementation(address)": { details: "Callable by the factory owner only. Delegates to `UpgradeableBeacon.upgradeTo`.", params: { newImplementation: "The new implementation address." } }, "upgradeUserStoreImplementation(address)": { details: "Callable by the factory owner only. Delegates to `UpgradeableBeacon.upgradeTo`.", params: { newImplementation: "The new implementation address." } }, "version()": { returns: { versionString: "Current version string." } } }, version: 1 }, userdoc: { kind: "user", methods: { "claimUserStore()": { notice: "Caller claims their `UserStore` beacon-proxy." }, constructor: { notice: "Deploys the factory together with both store implementations and beacons." }, "deployLabelStoreFor(address)": { notice: "Deploys a `LabelStore` beacon-proxy bound to `user`." }, "getLabelStore(address)": { notice: "Returns the `LabelStore` address bound to `user`, or the zero address if none." }, "getLabelStoreCount()": { notice: "Returns the total number of `LabelStore` proxies ever deployed." }, "getLabelStores(uint256,uint256)": { notice: "Paginated enumeration over every `LabelStore` proxy ever deployed." }, "getUserStore(address)": { notice: "Returns the `UserStore` address bound to `user`, or the zero address if none." }, "getUserStoreCount()": { notice: "Returns the total number of `UserStore` proxies ever claimed." }, "getUserStores(uint256,uint256)": { notice: "Paginated enumeration over every `UserStore` proxy ever claimed." }, "labelStoreBeacon()": { notice: "Beacon backing every `LabelStore` proxy." }, "protocolRegistry()": { notice: "Protocol registry used to authorise `deployLabelStoreFor` callers." }, "upgradeLabelStoreImplementation(address)": { notice: "Upgrades the `LabelStore` implementation for every existing and future proxy." }, "upgradeUserStoreImplementation(address)": { notice: "Upgrades the `UserStore` implementation for every existing and future proxy." }, "userStoreBeacon()": { notice: "Beacon backing every `UserStore` proxy." }, "version()": { notice: "Returns implementation version." } }, version: 1 } }, settings: { remappings: ["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/halmos-cheatcodes/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"], optimizer: { enabled: true, runs: 200 }, metadata: { bytecodeHash: "ipfs" }, compilationTarget: { "contracts/store/StoreFactory.sol": "StoreFactory" }, evmVersion: "cancun", libraries: {}, viaIR: true }, sources: { "contracts/registry/IDotnsProtocolRegistry.sol": { keccak256: "0xdc233ef72cd7eb07bf8631b4de779d2f79671b76051d1d0f81aeb5c86567269e", urls: ["bzz-raw://81f992df80f7f53854ef309c5ed76de1180e10a3af66c86a901e46fa1a1aaae5", "dweb:/ipfs/QmbL4WUsWrupbvrz8uKPhp7YEePzdE9z8GpZvrZ5DvTWws"], license: "MIT" }, "contracts/store/IDotnsStore.sol": { keccak256: "0xc477b3a4354a66aa9565b7e045504127389956eb4ba0b9c981631f276b598cca", urls: ["bzz-raw://690a2b096d0779395b22062839e2d37338c3db03c248c05779dbf2ffffeb0c71", "dweb:/ipfs/QmYVUBLHXGmn71YfYqMFjxbcQtnyPiZwQoBshwwugCZHnv"], license: "MIT" }, "contracts/store/ILabelStore.sol": { keccak256: "0xe6097169be43b592b895af7c64d362047f4619fa110ca79d4174167e364465b8", urls: ["bzz-raw://756113c8136ac761b2e3bdc0603f4a43f5a0dd92db4d031e019329de064373be", "dweb:/ipfs/QmRB61SofopsXD1bkRFapZmRnpissh6qrbJDHRJHtTcjhr"], license: "MIT" }, "contracts/store/IStoreFactory.sol": { keccak256: "0x50eeb2c770feb6392bbfc449bb0c703d99cd440a5db6d0d82bedfdbe1cd3293b", urls: ["bzz-raw://a50699a47ca893f3aa9b13496f0a6e2201acbd3e7871b4579a25c7d4d773b44a", "dweb:/ipfs/QmXBMBzZhdv12obarQL6WLFzFxgnmXb8cEt4CHiMkUZTJd"], license: "MIT" }, "contracts/store/IUserStore.sol": { keccak256: "0x1c794c4078228e316e559ac5a99103007daa848d63fe4e9f978ca6a660af2ab2", urls: ["bzz-raw://b7ddbd5030aadbf8d2d8e5a790213d79eba1ec55363747caab805a37012cf39b", "dweb:/ipfs/Qmcc6h4t7UJc5Ek5uHxUMLvx3UWgqMEatebTbnjN6GjFd8"], license: "MIT" }, "contracts/store/LabelStore.sol": { keccak256: "0xd6796cb4aa442628b7c88b423fb461c528796a106d23625d6465970a24c4851e", urls: ["bzz-raw://85f345816133d517a8fe7a46c44a5c4f5da9da94bf3c9342d4ea8ed792ed6026", "dweb:/ipfs/QmdkfUxNS55SHLy7gfGKTJAknnVZ8st7C3QBkJH3vUTpfq"], license: "MIT" }, "contracts/store/StoreFactory.sol": { keccak256: "0xf1c42b8c14a05ab8389fc06d47c1c63e9a6cd451411cecc20479df7a11efe2fd", urls: ["bzz-raw://0c9ab1f65bb5bdcd84fb49a9ac950a570b59bcb9493f994e26ccbf18c969d159", "dweb:/ipfs/QmXwMGdX5b8GynXPxjMz4QvW4M39apukDsrjtVhrLMyxqS"], license: "MIT" }, "contracts/store/UserStore.sol": { keccak256: "0xbf7b9aa270f886eb7e18d590dacd40bf5134d5bd8a889b5e5d54d81ee182be1d", urls: ["bzz-raw://576aada2440fa0ef3402fe80d6d92897730314f16a3ac75edc059dd85fa4cbf7", "dweb:/ipfs/QmZoSPzvkyAkwnNQ2b77wLEFAHMZp4c4ZxHumX2Uq8PeZo"], license: "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { keccak256: "0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16", urls: ["bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d", "dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { keccak256: "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb", urls: ["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6", "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol": { keccak256: "0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5", urls: ["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c", "dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": { keccak256: "0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618", urls: ["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a", "dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol": { keccak256: "0x80935e4fae2c414f4e7789e13a820d06901182a5733ab006f8d68b5b09db993f", urls: ["bzz-raw://752d991d6ca1087587b48103bc623f74888054f58581ff29166d90889c4765c5", "dweb:/ipfs/QmRBsa6K2ChKxVWYY54YiyYhDBPbmY5HyKCtij5LoWh56o"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol": { keccak256: "0xef92aebf99249a8ac1d682b9a0f04b6f2af2a8f631cb126625bab15bafcefda8", urls: ["bzz-raw://9a0709f54f682b4d22d3108e5951019145cd0b4abda4517638410d231f37d960", "dweb:/ipfs/QmdR3oRXqheNuBVRW1cMqDCffBsV1DtuvRHuaDph4ZTku2"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { keccak256: "0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b", urls: ["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d", "dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol": { keccak256: "0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b", urls: ["bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299", "dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { keccak256: "0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05", urls: ["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08", "dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { keccak256: "0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346", urls: ["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710", "dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"], 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/Errors.sol": { keccak256: "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123", urls: ["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf", "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol": { keccak256: "0x5b4802a4352474792df3107e961d1cc593e47b820c14f69d3505cb28f5a6a583", urls: ["bzz-raw://a6f86fd01f829499fe0545ff5dda07d4521988e88bfe0bf801fc15650921ed56", "dweb:/ipfs/QmUUKu4ZDffHAmfkf3asuQfmLTyfpuy2Amdncc3SqfzKPG"], license: "MIT" }, "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": { keccak256: "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97", urls: ["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b", "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"], license: "MIT" } }, version: 1 },
|
|
2850
|
+
storageLayout: { storage: [{ astId: 54846, contract: "contracts/store/StoreFactory.sol:StoreFactory", label: "_owner", offset: 0, slot: "0", type: "t_address" }, { astId: 11263, contract: "contracts/store/StoreFactory.sol:StoreFactory", label: "_labelStores", offset: 0, slot: "1", type: "t_mapping(t_address,t_address)" }, { astId: 11268, contract: "contracts/store/StoreFactory.sol:StoreFactory", label: "_userStores", offset: 0, slot: "2", type: "t_mapping(t_address,t_address)" }, { astId: 11272, contract: "contracts/store/StoreFactory.sol:StoreFactory", label: "_labelStoreList", offset: 0, slot: "3", type: "t_array(t_address)dyn_storage" }, { astId: 11276, contract: "contracts/store/StoreFactory.sol:StoreFactory", label: "_userStoreList", offset: 0, slot: "4", type: "t_array(t_address)dyn_storage" }], types: { t_address: { encoding: "inplace", label: "address", numberOfBytes: "20" }, "t_array(t_address)dyn_storage": { encoding: "dynamic_array", label: "address[]", numberOfBytes: "32", base: "t_address" }, "t_mapping(t_address,t_address)": { encoding: "mapping", key: "t_address", label: "mapping(address => address)", numberOfBytes: "32", value: "t_address" } } },
|
|
2851
|
+
ast: { absolutePath: "contracts/store/StoreFactory.sol", id: 11822, exportedSymbols: { BeaconProxy: [55579], IDotnsProtocolRegistry: [8949], IDotnsStore: [10327], ILabelStore: [10473], IStoreFactory: [10625], IUserStore: [10749], LabelStore: [11219], Ownable: [54985], StoreFactory: [11821], UpgradeableBeacon: [55677], UserStore: [12271] }, nodeType: "SourceUnit", src: "32:9502:33", nodes: [{ id: 11221, nodeType: "PragmaDirective", src: "32:24:33", nodes: [], literals: ["solidity", "^", "0.8", ".34"] }, { id: 11223, nodeType: "ImportDirective", src: "58:67:33", nodes: [], absolutePath: "lib/openzeppelin-contracts/contracts/access/Ownable.sol", file: "@openzeppelin/contracts/access/Ownable.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 54986, symbolAliases: [{ foreign: { id: 11222, name: "Ownable", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 54985, src: "66:7:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11225, nodeType: "ImportDirective", src: "126:81:33", nodes: [], absolutePath: "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", file: "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 55580, symbolAliases: [{ foreign: { id: 11224, name: "BeaconProxy", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 55579, src: "134:11:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11227, nodeType: "ImportDirective", src: "208:93:33", nodes: [], absolutePath: "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", file: "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 55678, symbolAliases: [{ foreign: { id: 11226, name: "UpgradeableBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 55677, src: "216:17:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11229, nodeType: "ImportDirective", src: "303:50:33", nodes: [], absolutePath: "contracts/store/IStoreFactory.sol", file: "./IStoreFactory.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 10626, symbolAliases: [{ foreign: { id: 11228, name: "IStoreFactory", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10625, src: "311:13:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11231, nodeType: "ImportDirective", src: "354:46:33", nodes: [], absolutePath: "contracts/store/IDotnsStore.sol", file: "./IDotnsStore.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 10328, symbolAliases: [{ foreign: { id: 11230, name: "IDotnsStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10327, src: "362:11:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11233, nodeType: "ImportDirective", src: "401:46:33", nodes: [], absolutePath: "contracts/store/ILabelStore.sol", file: "./ILabelStore.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 10474, symbolAliases: [{ foreign: { id: 11232, name: "ILabelStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10473, src: "409:11:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11235, nodeType: "ImportDirective", src: "448:44:33", nodes: [], absolutePath: "contracts/store/IUserStore.sol", file: "./IUserStore.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 10750, symbolAliases: [{ foreign: { id: 11234, name: "IUserStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10749, src: "456:10:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11237, nodeType: "ImportDirective", src: "493:44:33", nodes: [], absolutePath: "contracts/store/LabelStore.sol", file: "./LabelStore.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 11220, symbolAliases: [{ foreign: { id: 11236, name: "LabelStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11219, src: "501:10:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11239, nodeType: "ImportDirective", src: "538:42:33", nodes: [], absolutePath: "contracts/store/UserStore.sol", file: "./UserStore.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 12272, symbolAliases: [{ foreign: { id: 11238, name: "UserStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 12271, src: "546:9:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11241, nodeType: "ImportDirective", src: "581:78:33", nodes: [], absolutePath: "contracts/registry/IDotnsProtocolRegistry.sol", file: "../registry/IDotnsProtocolRegistry.sol", nameLocation: "-1:-1:-1", scope: 11822, sourceUnit: 8950, symbolAliases: [{ foreign: { id: 11240, name: "IDotnsProtocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8949, src: "589:22:33", typeDescriptions: {} }, nameLocation: "-1:-1:-1" }], unitAlias: "" }, { id: 11821, nodeType: "ContractDefinition", src: "1448:8085:33", nodes: [{ id: 11250, nodeType: "VariableDeclaration", src: "1705:50:33", nodes: [], baseFunctions: [10536], constant: false, documentation: { id: 11247, nodeType: "StructuredDocumentation", src: "1502:129:33", text: "@notice Beacon backing every `LabelStore` proxy.\n @dev Public getter name is interface-constrained by {IStoreFactory}." }, functionSelector: "ca7ad423", mutability: "immutable", name: "labelStoreBeacon", nameLocation: "1739:16:33", overrides: { id: 11249, nodeType: "OverrideSpecifier", overrides: [], src: "1730:8:33" }, scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11248, name: "address", nodeType: "ElementaryTypeName", src: "1705:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "public" }, { id: 11254, nodeType: "VariableDeclaration", src: "1964:49:33", nodes: [], baseFunctions: [10542], constant: false, documentation: { id: 11251, nodeType: "StructuredDocumentation", src: "1762:128:33", text: "@notice Beacon backing every `UserStore` proxy.\n @dev Public getter name is interface-constrained by {IStoreFactory}." }, functionSelector: "01d5c15f", mutability: "immutable", name: "userStoreBeacon", nameLocation: "1998:15:33", overrides: { id: 11253, nodeType: "OverrideSpecifier", overrides: [], src: "1989:8:33" }, scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11252, name: "address", nodeType: "ElementaryTypeName", src: "1964:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "public" }, { id: 11258, nodeType: "VariableDeclaration", src: "2249:50:33", nodes: [], baseFunctions: [10548], constant: false, documentation: { id: 11255, nodeType: "StructuredDocumentation", src: "2020:155:33", text: "@notice Protocol registry used to authorise `deployLabelStoreFor` callers.\n @dev Public getter name is interface-constrained by {IStoreFactory}." }, functionSelector: "7656419f", mutability: "immutable", name: "protocolRegistry", nameLocation: "2283:16:33", overrides: { id: 11257, nodeType: "OverrideSpecifier", overrides: [], src: "2274:8:33" }, scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11256, name: "address", nodeType: "ElementaryTypeName", src: "2249:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "public" }, { id: 11263, nodeType: "VariableDeclaration", src: "2385:59:33", nodes: [], constant: false, documentation: { id: 11259, nodeType: "StructuredDocumentation", src: "2306:74:33", text: "@dev user => their permanent `LabelStore`. Set once per user, forever." }, mutability: "mutable", name: "_labelStores", nameLocation: "2432:12:33", scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" }, typeName: { id: 11262, keyName: "user", keyNameLocation: "2401:4:33", keyType: { id: 11260, name: "address", nodeType: "ElementaryTypeName", src: "2393:7:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Mapping", src: "2385:38:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" }, valueName: "store", valueNameLocation: "2417:5:33", valueType: { id: 11261, name: "address", nodeType: "ElementaryTypeName", src: "2409:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } } }, visibility: "private" }, { id: 11268, nodeType: "VariableDeclaration", src: "2529:58:33", nodes: [], constant: false, documentation: { id: 11264, nodeType: "StructuredDocumentation", src: "2451:73:33", text: "@dev user => their permanent `UserStore`. Set once per user, forever." }, mutability: "mutable", name: "_userStores", nameLocation: "2576:11:33", scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" }, typeName: { id: 11267, keyName: "user", keyNameLocation: "2545:4:33", keyType: { id: 11265, name: "address", nodeType: "ElementaryTypeName", src: "2537:7:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Mapping", src: "2529:38:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" }, valueName: "store", valueNameLocation: "2561:5:33", valueType: { id: 11266, name: "address", nodeType: "ElementaryTypeName", src: "2553:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } } }, visibility: "private" }, { id: 11272, nodeType: "VariableDeclaration", src: "2684:33:33", nodes: [], constant: false, documentation: { id: 11269, nodeType: "StructuredDocumentation", src: "2594:85:33", text: "@dev Insertion-order list of every `LabelStore` proxy ever deployed. Append-only." }, mutability: "mutable", name: "_labelStoreList", nameLocation: "2702:15:33", scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[]" }, typeName: { baseType: { id: 11270, name: "address", nodeType: "ElementaryTypeName", src: "2684:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11271, nodeType: "ArrayTypeName", src: "2684:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } }, visibility: "private" }, { id: 11276, nodeType: "VariableDeclaration", src: "2812:32:33", nodes: [], constant: false, documentation: { id: 11273, nodeType: "StructuredDocumentation", src: "2724:83:33", text: "@dev Insertion-order list of every `UserStore` proxy ever claimed. Append-only." }, mutability: "mutable", name: "_userStoreList", nameLocation: "2830:14:33", scope: 11821, stateVariable: true, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[]" }, typeName: { baseType: { id: 11274, name: "address", nodeType: "ElementaryTypeName", src: "2812:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11275, nodeType: "ArrayTypeName", src: "2812:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } }, visibility: "private" }, { id: 11284, nodeType: "ModifierDefinition", src: "2947:81:33", nodes: [], body: { id: 11283, nodeType: "Block", src: "2978:50:33", nodes: [], statements: [{ expression: { arguments: [], expression: { argumentTypes: [], id: 11279, name: "_onlyOwnerOrProtocol", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11746, src: "2988:20:33", typeDescriptions: { typeIdentifier: "t_function_internal_view$__$returns$__$", typeString: "function () view" } }, id: 11280, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "2988:22:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11281, nodeType: "ExpressionStatement", src: "2988:22:33" }, { id: 11282, nodeType: "PlaceholderStatement", src: "3020:1:33" }] }, documentation: { id: 11277, nodeType: "StructuredDocumentation", src: "2851:91:33", text: "@notice Restricts `deployLabelStoreFor` to the owner or any protocol-registered caller." }, name: "onlyOwnerOrProtocol", nameLocation: "2956:19:33", parameters: { id: 11278, nodeType: "ParameterList", parameters: [], src: "2975:2:33" }, virtual: false, visibility: "internal" }, { id: 11363, nodeType: "FunctionDefinition", src: "4087:490:33", nodes: [], body: { id: 11362, nodeType: "Block", src: "4146:431:33", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11300, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11295, name: "protocolRegistry_", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11287, src: "4164:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 11298, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "4193:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11297, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4185:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11296, name: "address", nodeType: "ElementaryTypeName", src: "4185:7:33", typeDescriptions: {} } }, id: 11299, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4185:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4164:31:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 11302, name: "protocolRegistry_", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11287, src: "4221:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11301, name: "InvalidProtocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10517, src: "4197:23:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 11303, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4197:42:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11294, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "4156:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11304, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4156:84:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11305, nodeType: "ExpressionStatement", src: "4156:84:33" }, { expression: { arguments: [{ arguments: [{ hexValue: "30", id: 11312, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "4320:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11311, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4312:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11310, name: "address", nodeType: "ElementaryTypeName", src: "4312:7:33", typeDescriptions: {} } }, id: 11313, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4312:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { arguments: [{ id: 11307, name: "protocolRegistry_", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11287, src: "4273:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11306, name: "IDotnsProtocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8949, src: "4250:22:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IDotnsProtocolRegistry_$8949_$", typeString: "type(contract IDotnsProtocolRegistry)" } }, id: 11308, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4250:41:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, id: 11309, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "4292:19:33", memberName: "isRegisteredAddress", nodeType: "MemberAccess", referencedDeclaration: 8948, src: "4250:61:33", typeDescriptions: { typeIdentifier: "t_function_external_view$_t_address_$returns$_t_bool_$", typeString: "function (address) view external returns (bool)" } }, id: 11314, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4250:73:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 11315, nodeType: "ExpressionStatement", src: "4250:73:33" }, { expression: { id: 11318, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11316, name: "protocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11258, src: "4334:16:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 11317, name: "protocolRegistry_", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11287, src: "4353:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4334:36:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11319, nodeType: "ExpressionStatement", src: "4334:36:33" }, { expression: { id: 11339, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11320, name: "labelStoreBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11250, src: "4380:16:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ arguments: [{ arguments: [{ arguments: [], expression: { argumentTypes: [], id: 11330, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "4437:14:33", typeDescriptions: { typeIdentifier: "t_function_creation_nonpayable$__$returns$_t_contract$_LabelStore_$11219_$", typeString: "function () returns (contract LabelStore)" }, typeName: { id: 11329, nodeType: "UserDefinedTypeName", pathNode: { id: 11328, name: "LabelStore", nameLocations: ["4441:10:33"], nodeType: "IdentifierPath", referencedDeclaration: 11219, src: "4441:10:33" }, referencedDeclaration: 11219, src: "4441:10:33", typeDescriptions: { typeIdentifier: "t_contract$_LabelStore_$11219", typeString: "contract LabelStore" } } }, id: 11331, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4437:16:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_LabelStore_$11219", typeString: "contract LabelStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_LabelStore_$11219", typeString: "contract LabelStore" }], id: 11327, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4429:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11326, name: "address", nodeType: "ElementaryTypeName", src: "4429:7:33", typeDescriptions: {} } }, id: 11332, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4429:25:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { arguments: [{ id: 11335, name: "this", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -28, src: "4464:4:33", typeDescriptions: { typeIdentifier: "t_contract$_StoreFactory_$11821", typeString: "contract StoreFactory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_StoreFactory_$11821", typeString: "contract StoreFactory" }], id: 11334, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4456:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11333, name: "address", nodeType: "ElementaryTypeName", src: "4456:7:33", typeDescriptions: {} } }, id: 11336, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4456:13:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 11325, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "4407:21:33", typeDescriptions: { typeIdentifier: "t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_UpgradeableBeacon_$55677_$", typeString: "function (address,address) returns (contract UpgradeableBeacon)" }, typeName: { id: 11324, nodeType: "UserDefinedTypeName", pathNode: { id: 11323, name: "UpgradeableBeacon", nameLocations: ["4411:17:33"], nodeType: "IdentifierPath", referencedDeclaration: 55677, src: "4411:17:33" }, referencedDeclaration: 55677, src: "4411:17:33", typeDescriptions: { typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" } } }, id: 11337, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4407:63:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" }], id: 11322, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4399:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11321, name: "address", nodeType: "ElementaryTypeName", src: "4399:7:33", typeDescriptions: {} } }, id: 11338, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4399:72:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4380:91:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11340, nodeType: "ExpressionStatement", src: "4380:91:33" }, { expression: { id: 11360, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11341, name: "userStoreBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11254, src: "4481:15:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ arguments: [{ arguments: [{ arguments: [], expression: { argumentTypes: [], id: 11351, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "4537:13:33", typeDescriptions: { typeIdentifier: "t_function_creation_nonpayable$__$returns$_t_contract$_UserStore_$12271_$", typeString: "function () returns (contract UserStore)" }, typeName: { id: 11350, nodeType: "UserDefinedTypeName", pathNode: { id: 11349, name: "UserStore", nameLocations: ["4541:9:33"], nodeType: "IdentifierPath", referencedDeclaration: 12271, src: "4541:9:33" }, referencedDeclaration: 12271, src: "4541:9:33", typeDescriptions: { typeIdentifier: "t_contract$_UserStore_$12271", typeString: "contract UserStore" } } }, id: 11352, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4537:15:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_UserStore_$12271", typeString: "contract UserStore" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_UserStore_$12271", typeString: "contract UserStore" }], id: 11348, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4529:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11347, name: "address", nodeType: "ElementaryTypeName", src: "4529:7:33", typeDescriptions: {} } }, id: 11353, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4529:24:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { arguments: [{ id: 11356, name: "this", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -28, src: "4563:4:33", typeDescriptions: { typeIdentifier: "t_contract$_StoreFactory_$11821", typeString: "contract StoreFactory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_StoreFactory_$11821", typeString: "contract StoreFactory" }], id: 11355, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4555:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11354, name: "address", nodeType: "ElementaryTypeName", src: "4555:7:33", typeDescriptions: {} } }, id: 11357, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4555:13:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 11346, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "4507:21:33", typeDescriptions: { typeIdentifier: "t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_UpgradeableBeacon_$55677_$", typeString: "function (address,address) returns (contract UpgradeableBeacon)" }, typeName: { id: 11345, nodeType: "UserDefinedTypeName", pathNode: { id: 11344, name: "UpgradeableBeacon", nameLocations: ["4511:17:33"], nodeType: "IdentifierPath", referencedDeclaration: 55677, src: "4511:17:33" }, referencedDeclaration: 55677, src: "4511:17:33", typeDescriptions: { typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" } } }, id: 11358, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4507:62:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" }], id: 11343, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4499:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11342, name: "address", nodeType: "ElementaryTypeName", src: "4499:7:33", typeDescriptions: {} } }, id: 11359, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4499:71:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4481:89:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11361, nodeType: "ExpressionStatement", src: "4481:89:33" }] }, documentation: { id: 11285, nodeType: "StructuredDocumentation", src: "3034:1048:33", text: '@notice Deploys the factory together with both store implementations and beacons.\n @dev A single `new StoreFactory(protocolRegistry)` call wires everything:\n - Deploys a fresh `LabelStore` implementation.\n - Deploys a fresh `UserStore` implementation.\n - Constructs both `UpgradeableBeacon` instances, owned by `address(this)`\n so `upgrade*Implementation` can delegate to `beacon.upgradeTo`.\n Keeping the implementation deployments inside the constructor removes a\n class of operator error: there is no "did I deploy the implementation first?" step\n and no way to pass the wrong implementation address.\n @dev Implementations and beacons are deployed inline so a single factory address fully\n describes the store topology, removing a class of operator error around mismatched\n beacons.\n @param protocolRegistry_ The protocol registry for writer auth on label stores.\n @custom:reverts InvalidProtocolRegistry' }, implemented: true, kind: "constructor", modifiers: [{ arguments: [{ expression: { id: 11290, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "4134:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11291, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "4138:6:33", memberName: "sender", nodeType: "MemberAccess", src: "4134:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], id: 11292, kind: "baseConstructorSpecifier", modifierName: { id: 11289, name: "Ownable", nameLocations: ["4126:7:33"], nodeType: "IdentifierPath", referencedDeclaration: 54985, src: "4126:7:33" }, nodeType: "ModifierInvocation", src: "4126:19:33" }], name: "", nameLocation: "-1:-1:-1", parameters: { id: 11288, nodeType: "ParameterList", parameters: [{ constant: false, id: 11287, mutability: "mutable", name: "protocolRegistry_", nameLocation: "4107:17:33", nodeType: "VariableDeclaration", scope: 11363, src: "4099:25:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11286, name: "address", nodeType: "ElementaryTypeName", src: "4099:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "4098:27:33" }, returnParameters: { id: 11293, nodeType: "ParameterList", parameters: [], src: "4146:0:33" }, scope: 11821, stateMutability: "nonpayable", virtual: false, visibility: "public" }, { id: 11456, nodeType: "FunctionDefinition", src: "4617:673:33", nodes: [], body: { id: 11455, nodeType: "Block", src: "4758:532:33", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11380, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11375, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "4776:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 11378, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "4792:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11377, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4784:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11376, name: "address", nodeType: "ElementaryTypeName", src: "4784:7:33", typeDescriptions: {} } }, id: 11379, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4784:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4776:18:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 11382, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "4808:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11381, name: "InvalidUser", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10512, src: "4796:11:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 11383, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4796:17:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11374, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "4768:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11384, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4768:46:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11385, nodeType: "ExpressionStatement", src: "4768:46:33" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11394, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 11387, name: "_labelStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11263, src: "4832:12:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11389, indexExpression: { id: 11388, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "4845:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "4832:18:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { arguments: [{ hexValue: "30", id: 11392, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "4862:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11391, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "4854:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11390, name: "address", nodeType: "ElementaryTypeName", src: "4854:7:33", typeDescriptions: {} } }, id: 11393, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4854:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "4832:32:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 11396, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "4882:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { baseExpression: { id: 11397, name: "_labelStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11263, src: "4888:12:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11399, indexExpression: { id: 11398, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "4901:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "4888:18:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 11395, name: "AlreadyDeployed", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10507, src: "4866:15:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$", typeString: "function (address,address) pure returns (error)" } }, id: 11400, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4866:41:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11386, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "4824:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11401, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4824:84:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11402, nodeType: "ExpressionStatement", src: "4824:84:33" }, { assignments: [11404], declarations: [{ constant: false, id: 11404, mutability: "mutable", name: "initData", nameLocation: "4932:8:33", nodeType: "VariableDeclaration", scope: 11455, src: "4919:21:33", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes" }, typeName: { id: 11403, name: "bytes", nodeType: "ElementaryTypeName", src: "4919:5:33", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 11413, initialValue: { arguments: [{ expression: { id: 11407, name: "ILabelStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10473, src: "4958:11:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_ILabelStore_$10473_$", typeString: "type(contract ILabelStore)" } }, id: 11408, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "4970:10:33", memberName: "initialize", nodeType: "MemberAccess", referencedDeclaration: 10390, src: "4958:22:33", typeDescriptions: { typeIdentifier: "t_function_declaration_nonpayable$_t_address_$_t_address_$returns$__$", typeString: "function ILabelStore.initialize(address,address)" } }, { components: [{ id: 11409, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "4983:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 11410, name: "protocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11258, src: "4989:16:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], id: 11411, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "4982:24:33", typeDescriptions: { typeIdentifier: "t_tuple$_t_address_$_t_address_$", typeString: "tuple(address,address)" } }], expression: { argumentTypes: [{ typeIdentifier: "t_function_declaration_nonpayable$_t_address_$_t_address_$returns$__$", typeString: "function ILabelStore.initialize(address,address)" }, { typeIdentifier: "t_tuple$_t_address_$_t_address_$", typeString: "tuple(address,address)" }], expression: { id: 11405, name: "abi", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -1, src: "4943:3:33", typeDescriptions: { typeIdentifier: "t_magic_abi", typeString: "abi" } }, id: 11406, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "4947:10:33", memberName: "encodeCall", nodeType: "MemberAccess", src: "4943:14:33", typeDescriptions: { typeIdentifier: "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", typeString: "function () pure returns (bytes memory)" } }, id: 11412, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "4943:64:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }, nodeType: "VariableDeclarationStatement", src: "4919:88:33" }, { expression: { id: 11424, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11414, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11372, src: "5017:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ arguments: [{ id: 11420, name: "labelStoreBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11250, src: "5049:16:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 11421, name: "initData", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11404, src: "5067:8:33", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" }], id: 11419, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "5033:15:33", typeDescriptions: { typeIdentifier: "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$55579_$", typeString: "function (address,bytes memory) payable returns (contract BeaconProxy)" }, typeName: { id: 11418, nodeType: "UserDefinedTypeName", pathNode: { id: 11417, name: "BeaconProxy", nameLocations: ["5037:11:33"], nodeType: "IdentifierPath", referencedDeclaration: 55579, src: "5037:11:33" }, referencedDeclaration: 55579, src: "5037:11:33", typeDescriptions: { typeIdentifier: "t_contract$_BeaconProxy_$55579", typeString: "contract BeaconProxy" } } }, id: 11422, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5033:43:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_BeaconProxy_$55579", typeString: "contract BeaconProxy" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_BeaconProxy_$55579", typeString: "contract BeaconProxy" }], id: 11416, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "5025:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11415, name: "address", nodeType: "ElementaryTypeName", src: "5025:7:33", typeDescriptions: {} } }, id: 11423, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5025:52:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "5017:60:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11425, nodeType: "ExpressionStatement", src: "5017:60:33" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11433, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [], expression: { argumentTypes: [], expression: { arguments: [{ id: 11428, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11372, src: "5107:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11427, name: "IDotnsStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10327, src: "5095:11:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IDotnsStore_$10327_$", typeString: "type(contract IDotnsStore)" } }, id: 11429, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5095:18:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IDotnsStore_$10327", typeString: "contract IDotnsStore" } }, id: 11430, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "5114:5:33", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 10326, src: "5095:24:33", typeDescriptions: { typeIdentifier: "t_function_external_view$__$returns$_t_address_$", typeString: "function () view external returns (address)" } }, id: 11431, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5095:26:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { id: 11432, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "5125:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "5095:34:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [], expression: { argumentTypes: [], id: 11434, name: "ImplementationBindingMismatch", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10530, src: "5131:29:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$__$returns$_t_error_$", typeString: "function () pure returns (error)" } }, id: 11435, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5131:31:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11426, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "5087:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11436, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5087:76:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11437, nodeType: "ExpressionStatement", src: "5087:76:33" }, { expression: { id: 11442, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 11438, name: "_labelStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11263, src: "5173:12:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11440, indexExpression: { id: 11439, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "5186:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "5173:18:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 11441, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11372, src: "5194:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "5173:26:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11443, nodeType: "ExpressionStatement", src: "5173:26:33" }, { expression: { arguments: [{ id: 11447, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11372, src: "5230:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { id: 11444, name: "_labelStoreList", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11272, src: "5209:15:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" } }, id: 11446, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "5225:4:33", memberName: "push", nodeType: "MemberAccess", src: "5209:20:33", typeDescriptions: { typeIdentifier: "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", typeString: "function (address[] storage pointer,address)" } }, id: 11448, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5209:27:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11449, nodeType: "ExpressionStatement", src: "5209:27:33" }, { eventCall: { arguments: [{ id: 11451, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11366, src: "5271:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 11452, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11372, src: "5277:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 11450, name: "LabelStoreDeployed", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10483, src: "5252:18:33", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", typeString: "function (address,address)" } }, id: 11453, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5252:31:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11454, nodeType: "EmitStatement", src: "5247:36:33" }] }, baseFunctions: [10556], documentation: { id: 11364, nodeType: "StructuredDocumentation", src: "4583:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "5269fc58", implemented: true, kind: "function", modifiers: [{ id: 11370, kind: "modifierInvocation", modifierName: { id: 11369, name: "onlyOwnerOrProtocol", nameLocations: ["4702:19:33"], nodeType: "IdentifierPath", referencedDeclaration: 11284, src: "4702:19:33" }, nodeType: "ModifierInvocation", src: "4702:19:33" }], name: "deployLabelStoreFor", nameLocation: "4626:19:33", overrides: { id: 11368, nodeType: "OverrideSpecifier", overrides: [], src: "4685:8:33" }, parameters: { id: 11367, nodeType: "ParameterList", parameters: [{ constant: false, id: 11366, mutability: "mutable", name: "user", nameLocation: "4654:4:33", nodeType: "VariableDeclaration", scope: 11456, src: "4646:12:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11365, name: "address", nodeType: "ElementaryTypeName", src: "4646:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "4645:14:33" }, returnParameters: { id: 11373, nodeType: "ParameterList", parameters: [{ constant: false, id: 11372, mutability: "mutable", name: "store", nameLocation: "4747:5:33", nodeType: "VariableDeclaration", scope: 11456, src: "4739:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11371, name: "address", nodeType: "ElementaryTypeName", src: "4739:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "4738:15:33" }, scope: 11821, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 11470, nodeType: "FunctionDefinition", src: "5330:126:33", nodes: [], body: { id: 11469, nodeType: "Block", src: "5414:42:33", nodes: [], statements: [{ expression: { baseExpression: { id: 11465, name: "_labelStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11263, src: "5431:12:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11467, indexExpression: { id: 11466, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11459, src: "5444:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "5431:18:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, functionReturnParameters: 11464, id: 11468, nodeType: "Return", src: "5424:25:33" }] }, baseFunctions: [10564], documentation: { id: 11457, nodeType: "StructuredDocumentation", src: "5296:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "4fc5dce9", implemented: true, kind: "function", modifiers: [], name: "getLabelStore", nameLocation: "5339:13:33", overrides: { id: 11461, nodeType: "OverrideSpecifier", overrides: [], src: "5381:8:33" }, parameters: { id: 11460, nodeType: "ParameterList", parameters: [{ constant: false, id: 11459, mutability: "mutable", name: "user", nameLocation: "5361:4:33", nodeType: "VariableDeclaration", scope: 11470, src: "5353:12:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11458, name: "address", nodeType: "ElementaryTypeName", src: "5353:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "5352:14:33" }, returnParameters: { id: 11464, nodeType: "ParameterList", parameters: [{ constant: false, id: 11463, mutability: "mutable", name: "store", nameLocation: "5407:5:33", nodeType: "VariableDeclaration", scope: 11470, src: "5399:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11462, name: "address", nodeType: "ElementaryTypeName", src: "5399:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "5398:15:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "external" }, { id: 11481, nodeType: "FunctionDefinition", src: "5496:123:33", nodes: [], body: { id: 11480, nodeType: "Block", src: "5573:46:33", nodes: [], statements: [{ expression: { expression: { id: 11477, name: "_labelStoreList", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11272, src: "5590:15:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" } }, id: 11478, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "5606:6:33", memberName: "length", nodeType: "MemberAccess", src: "5590:22:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 11476, id: 11479, nodeType: "Return", src: "5583:29:33" }] }, baseFunctions: [10570], documentation: { id: 11471, nodeType: "StructuredDocumentation", src: "5462:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "d6fefb14", implemented: true, kind: "function", modifiers: [], name: "getLabelStoreCount", nameLocation: "5505:18:33", overrides: { id: 11473, nodeType: "OverrideSpecifier", overrides: [], src: "5540:8:33" }, parameters: { id: 11472, nodeType: "ParameterList", parameters: [], src: "5523:2:33" }, returnParameters: { id: 11476, nodeType: "ParameterList", parameters: [{ constant: false, id: 11475, mutability: "mutable", name: "count", nameLocation: "5566:5:33", nodeType: "VariableDeclaration", scope: 11481, src: "5558:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11474, name: "uint256", nodeType: "ElementaryTypeName", src: "5558:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "5557:15:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "external" }, { id: 11502, nodeType: "FunctionDefinition", src: "5659:246:33", nodes: [], body: { id: 11501, nodeType: "Block", src: "5829:76:33", nodes: [], statements: [{ expression: { id: 11499, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11493, name: "stores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11491, src: "5839:6:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ id: 11495, name: "_labelStoreList", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11272, src: "5867:15:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" } }, { id: 11496, name: "offset", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11484, src: "5884:6:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, { id: 11497, name: "limit", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11486, src: "5892:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" }, { typeIdentifier: "t_uint256", typeString: "uint256" }, { typeIdentifier: "t_uint256", typeString: "uint256" }], id: 11494, name: "_paginateAddresses", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11820, src: "5848:18:33", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_array$_t_address_$dyn_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", typeString: "function (address[] storage pointer,uint256,uint256) view returns (address[] memory)" } }, id: 11498, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "5848:50:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, src: "5839:59:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, id: 11500, nodeType: "ExpressionStatement", src: "5839:59:33" }] }, baseFunctions: [10581], documentation: { id: 11482, nodeType: "StructuredDocumentation", src: "5625:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "76a29418", implemented: true, kind: "function", modifiers: [], name: "getLabelStores", nameLocation: "5668:14:33", overrides: { id: 11488, nodeType: "OverrideSpecifier", overrides: [], src: "5774:8:33" }, parameters: { id: 11487, nodeType: "ParameterList", parameters: [{ constant: false, id: 11484, mutability: "mutable", name: "offset", nameLocation: "5700:6:33", nodeType: "VariableDeclaration", scope: 11502, src: "5692:14:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11483, name: "uint256", nodeType: "ElementaryTypeName", src: "5692:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }, { constant: false, id: 11486, mutability: "mutable", name: "limit", nameLocation: "5724:5:33", nodeType: "VariableDeclaration", scope: 11502, src: "5716:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11485, name: "uint256", nodeType: "ElementaryTypeName", src: "5716:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "5682:53:33" }, returnParameters: { id: 11492, nodeType: "ParameterList", parameters: [{ constant: false, id: 11491, mutability: "mutable", name: "stores", nameLocation: "5817:6:33", nodeType: "VariableDeclaration", scope: 11502, src: "5800:23:33", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[]" }, typeName: { baseType: { id: 11489, name: "address", nodeType: "ElementaryTypeName", src: "5800:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11490, nodeType: "ArrayTypeName", src: "5800:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } }, visibility: "internal" }], src: "5799:25:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "external" }, { id: 11541, nodeType: "FunctionDefinition", src: "5945:422:33", nodes: [], body: { id: 11540, nodeType: "Block", src: "6069:298:33", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11517, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11512, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11505, src: "6087:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 11515, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "6116:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11514, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "6108:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11513, name: "address", nodeType: "ElementaryTypeName", src: "6108:7:33", typeDescriptions: {} } }, id: 11516, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6108:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "6087:31:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 11519, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11505, src: "6142:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11518, name: "InvalidImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10522, src: "6120:21:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 11520, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6120:40:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11511, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6079:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11521, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6079:82:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11522, nodeType: "ExpressionStatement", src: "6079:82:33" }, { expression: { arguments: [], expression: { argumentTypes: [], expression: { arguments: [{ id: 11524, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11505, src: "6183:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11523, name: "ILabelStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10473, src: "6171:11:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_ILabelStore_$10473_$", typeString: "type(contract ILabelStore)" } }, id: 11525, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6171:30:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_ILabelStore_$10473", typeString: "contract ILabelStore" } }, id: 11526, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6202:16:33", memberName: "protocolRegistry", nodeType: "MemberAccess", referencedDeclaration: 10404, src: "6171:47:33", typeDescriptions: { typeIdentifier: "t_function_external_view$__$returns$_t_address_$", typeString: "function () view external returns (address)" } }, id: 11527, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6171:49:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11528, nodeType: "ExpressionStatement", src: "6171:49:33" }, { expression: { arguments: [{ id: 11533, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11505, src: "6276:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { arguments: [{ id: 11530, name: "labelStoreBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11250, src: "6248:16:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11529, name: "UpgradeableBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 55677, src: "6230:17:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_UpgradeableBeacon_$55677_$", typeString: "type(contract UpgradeableBeacon)" } }, id: 11531, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6230:35:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" } }, id: 11532, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6266:9:33", memberName: "upgradeTo", nodeType: "MemberAccess", referencedDeclaration: 55650, src: "6230:45:33", typeDescriptions: { typeIdentifier: "t_function_external_nonpayable$_t_address_$returns$__$", typeString: "function (address) external" } }, id: 11534, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6230:64:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11535, nodeType: "ExpressionStatement", src: "6230:64:33" }, { eventCall: { arguments: [{ id: 11537, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11505, src: "6342:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11536, name: "LabelStoreImplementationUpgraded", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10495, src: "6309:32:33", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$returns$__$", typeString: "function (address)" } }, id: 11538, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6309:51:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11539, nodeType: "EmitStatement", src: "6304:56:33" }] }, baseFunctions: [10587], documentation: { id: 11503, nodeType: "StructuredDocumentation", src: "5911:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "811244e0", implemented: true, kind: "function", modifiers: [{ id: 11509, kind: "modifierInvocation", modifierName: { id: 11508, name: "onlyOwner", nameLocations: ["6055:9:33"], nodeType: "IdentifierPath", referencedDeclaration: 54896, src: "6055:9:33" }, nodeType: "ModifierInvocation", src: "6055:9:33" }], name: "upgradeLabelStoreImplementation", nameLocation: "5954:31:33", overrides: { id: 11507, nodeType: "OverrideSpecifier", overrides: [], src: "6038:8:33" }, parameters: { id: 11506, nodeType: "ParameterList", parameters: [{ constant: false, id: 11505, mutability: "mutable", name: "newImplementation", nameLocation: "5994:17:33", nodeType: "VariableDeclaration", scope: 11541, src: "5986:25:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11504, name: "address", nodeType: "ElementaryTypeName", src: "5986:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "5985:27:33" }, returnParameters: { id: 11510, nodeType: "ParameterList", parameters: [], src: "6069:0:33" }, scope: 11821, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 11624, nodeType: "FunctionDefinition", src: "6407:594:33", nodes: [], body: { id: 11623, nodeType: "Block", src: "6475:526:33", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11557, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { baseExpression: { id: 11549, name: "_userStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11268, src: "6506:11:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11552, indexExpression: { expression: { id: 11550, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6518:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11551, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6522:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6518:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "6506:23:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { arguments: [{ hexValue: "30", id: 11555, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "6541:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11554, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "6533:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11553, name: "address", nodeType: "ElementaryTypeName", src: "6533:7:33", typeDescriptions: {} } }, id: 11556, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6533:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "6506:37:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ expression: { id: 11559, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6573:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11560, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6577:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6573:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { baseExpression: { id: 11561, name: "_userStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11268, src: "6585:11:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11564, indexExpression: { expression: { id: 11562, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6597:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11563, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6601:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6597:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "6585:23:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 11558, name: "AlreadyDeployed", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10507, src: "6557:15:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$", typeString: "function (address,address) pure returns (error)" } }, id: 11565, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6557:52:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11548, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6485:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11566, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6485:134:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11567, nodeType: "ExpressionStatement", src: "6485:134:33" }, { assignments: [11569], declarations: [{ constant: false, id: 11569, mutability: "mutable", name: "initData", nameLocation: "6643:8:33", nodeType: "VariableDeclaration", scope: 11623, src: "6630:21:33", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes" }, typeName: { id: 11568, name: "bytes", nodeType: "ElementaryTypeName", src: "6630:5:33", typeDescriptions: { typeIdentifier: "t_bytes_storage_ptr", typeString: "bytes" } }, visibility: "internal" }], id: 11578, initialValue: { arguments: [{ expression: { id: 11572, name: "IUserStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10749, src: "6669:10:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IUserStore_$10749_$", typeString: "type(contract IUserStore)" } }, id: 11573, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6680:10:33", memberName: "initialize", nodeType: "MemberAccess", referencedDeclaration: 10666, src: "6669:21:33", typeDescriptions: { typeIdentifier: "t_function_declaration_nonpayable$_t_address_$returns$__$", typeString: "function IUserStore.initialize(address)" } }, { components: [{ expression: { id: 11574, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6693:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11575, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6697:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6693:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], id: 11576, isConstant: false, isInlineArray: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "TupleExpression", src: "6692:12:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_function_declaration_nonpayable$_t_address_$returns$__$", typeString: "function IUserStore.initialize(address)" }, { typeIdentifier: "t_address", typeString: "address" }], expression: { id: 11570, name: "abi", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -1, src: "6654:3:33", typeDescriptions: { typeIdentifier: "t_magic_abi", typeString: "abi" } }, id: 11571, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, memberLocation: "6658:10:33", memberName: "encodeCall", nodeType: "MemberAccess", src: "6654:14:33", typeDescriptions: { typeIdentifier: "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", typeString: "function () pure returns (bytes memory)" } }, id: 11577, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6654:51:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }, nodeType: "VariableDeclarationStatement", src: "6630:75:33" }, { expression: { id: 11589, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11579, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11546, src: "6715:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ arguments: [{ id: 11585, name: "userStoreBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11254, src: "6747:15:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 11586, name: "initData", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11569, src: "6764:8:33", typeDescriptions: { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_bytes_memory_ptr", typeString: "bytes memory" }], id: 11584, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "NewExpression", src: "6731:15:33", typeDescriptions: { typeIdentifier: "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$55579_$", typeString: "function (address,bytes memory) payable returns (contract BeaconProxy)" }, typeName: { id: 11583, nodeType: "UserDefinedTypeName", pathNode: { id: 11582, name: "BeaconProxy", nameLocations: ["6735:11:33"], nodeType: "IdentifierPath", referencedDeclaration: 55579, src: "6735:11:33" }, referencedDeclaration: 55579, src: "6735:11:33", typeDescriptions: { typeIdentifier: "t_contract$_BeaconProxy_$55579", typeString: "contract BeaconProxy" } } }, id: 11587, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6731:42:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_BeaconProxy_$55579", typeString: "contract BeaconProxy" } }], expression: { argumentTypes: [{ typeIdentifier: "t_contract$_BeaconProxy_$55579", typeString: "contract BeaconProxy" }], id: 11581, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "6723:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11580, name: "address", nodeType: "ElementaryTypeName", src: "6723:7:33", typeDescriptions: {} } }, id: 11588, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6723:51:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "6715:59:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11590, nodeType: "ExpressionStatement", src: "6715:59:33" }, { expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11599, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { arguments: [], expression: { argumentTypes: [], expression: { arguments: [{ id: 11593, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11546, src: "6804:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11592, name: "IDotnsStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10327, src: "6792:11:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IDotnsStore_$10327_$", typeString: "type(contract IDotnsStore)" } }, id: 11594, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6792:18:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IDotnsStore_$10327", typeString: "contract IDotnsStore" } }, id: 11595, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6811:5:33", memberName: "owner", nodeType: "MemberAccess", referencedDeclaration: 10326, src: "6792:24:33", typeDescriptions: { typeIdentifier: "t_function_external_view$__$returns$_t_address_$", typeString: "function () view external returns (address)" } }, id: 11596, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6792:26:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { expression: { id: 11597, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6822:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11598, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6826:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6822:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "6792:40:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [], expression: { argumentTypes: [], id: 11600, name: "ImplementationBindingMismatch", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10530, src: "6834:29:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$__$returns$_t_error_$", typeString: "function () pure returns (error)" } }, id: 11601, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6834:31:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11591, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "6784:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11602, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6784:82:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11603, nodeType: "ExpressionStatement", src: "6784:82:33" }, { expression: { id: 11609, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 11604, name: "_userStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11268, src: "6876:11:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11607, indexExpression: { expression: { id: 11605, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6888:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11606, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6892:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6888:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "6876:23:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { id: 11608, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11546, src: "6902:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "6876:31:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11610, nodeType: "ExpressionStatement", src: "6876:31:33" }, { expression: { arguments: [{ id: 11614, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11546, src: "6937:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { id: 11611, name: "_userStoreList", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11276, src: "6917:14:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" } }, id: 11613, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6932:4:33", memberName: "push", nodeType: "MemberAccess", src: "6917:19:33", typeDescriptions: { typeIdentifier: "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", typeString: "function (address[] storage pointer,address)" } }, id: 11615, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6917:26:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11616, nodeType: "ExpressionStatement", src: "6917:26:33" }, { eventCall: { arguments: [{ expression: { id: 11618, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "6976:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11619, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "6980:6:33", memberName: "sender", nodeType: "MemberAccess", src: "6976:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, { id: 11620, name: "store", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11546, src: "6988:5:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }, { typeIdentifier: "t_address", typeString: "address" }], id: 11617, name: "UserStoreClaimed", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10490, src: "6959:16:33", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", typeString: "function (address,address)" } }, id: 11621, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "6959:35:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11622, nodeType: "EmitStatement", src: "6954:40:33" }] }, baseFunctions: [10593], documentation: { id: 11542, nodeType: "StructuredDocumentation", src: "6373:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "eccf8f55", implemented: true, kind: "function", modifiers: [], name: "claimUserStore", nameLocation: "6416:14:33", overrides: { id: 11544, nodeType: "OverrideSpecifier", overrides: [], src: "6442:8:33" }, parameters: { id: 11543, nodeType: "ParameterList", parameters: [], src: "6430:2:33" }, returnParameters: { id: 11547, nodeType: "ParameterList", parameters: [{ constant: false, id: 11546, mutability: "mutable", name: "store", nameLocation: "6468:5:33", nodeType: "VariableDeclaration", scope: 11624, src: "6460:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11545, name: "address", nodeType: "ElementaryTypeName", src: "6460:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "6459:15:33" }, scope: 11821, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 11638, nodeType: "FunctionDefinition", src: "7041:124:33", nodes: [], body: { id: 11637, nodeType: "Block", src: "7124:41:33", nodes: [], statements: [{ expression: { baseExpression: { id: 11633, name: "_userStores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11268, src: "7141:11:33", typeDescriptions: { typeIdentifier: "t_mapping$_t_address_$_t_address_$", typeString: "mapping(address => address)" } }, id: 11635, indexExpression: { id: 11634, name: "user", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11627, src: "7153:4:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "7141:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, functionReturnParameters: 11632, id: 11636, nodeType: "Return", src: "7134:24:33" }] }, baseFunctions: [10601], documentation: { id: 11625, nodeType: "StructuredDocumentation", src: "7007:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "22b2708b", implemented: true, kind: "function", modifiers: [], name: "getUserStore", nameLocation: "7050:12:33", overrides: { id: 11629, nodeType: "OverrideSpecifier", overrides: [], src: "7091:8:33" }, parameters: { id: 11628, nodeType: "ParameterList", parameters: [{ constant: false, id: 11627, mutability: "mutable", name: "user", nameLocation: "7071:4:33", nodeType: "VariableDeclaration", scope: 11638, src: "7063:12:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11626, name: "address", nodeType: "ElementaryTypeName", src: "7063:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "7062:14:33" }, returnParameters: { id: 11632, nodeType: "ParameterList", parameters: [{ constant: false, id: 11631, mutability: "mutable", name: "store", nameLocation: "7117:5:33", nodeType: "VariableDeclaration", scope: 11638, src: "7109:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11630, name: "address", nodeType: "ElementaryTypeName", src: "7109:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "7108:15:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "external" }, { id: 11649, nodeType: "FunctionDefinition", src: "7205:121:33", nodes: [], body: { id: 11648, nodeType: "Block", src: "7281:45:33", nodes: [], statements: [{ expression: { expression: { id: 11645, name: "_userStoreList", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11276, src: "7298:14:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" } }, id: 11646, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "7313:6:33", memberName: "length", nodeType: "MemberAccess", src: "7298:21:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, functionReturnParameters: 11644, id: 11647, nodeType: "Return", src: "7291:28:33" }] }, baseFunctions: [10607], documentation: { id: 11639, nodeType: "StructuredDocumentation", src: "7171:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "8f0c0f36", implemented: true, kind: "function", modifiers: [], name: "getUserStoreCount", nameLocation: "7214:17:33", overrides: { id: 11641, nodeType: "OverrideSpecifier", overrides: [], src: "7248:8:33" }, parameters: { id: 11640, nodeType: "ParameterList", parameters: [], src: "7231:2:33" }, returnParameters: { id: 11644, nodeType: "ParameterList", parameters: [{ constant: false, id: 11643, mutability: "mutable", name: "count", nameLocation: "7274:5:33", nodeType: "VariableDeclaration", scope: 11649, src: "7266:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11642, name: "uint256", nodeType: "ElementaryTypeName", src: "7266:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "7265:15:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "external" }, { id: 11670, nodeType: "FunctionDefinition", src: "7366:244:33", nodes: [], body: { id: 11669, nodeType: "Block", src: "7535:75:33", nodes: [], statements: [{ expression: { id: 11667, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11661, name: "stores", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11659, src: "7545:6:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ id: 11663, name: "_userStoreList", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11276, src: "7573:14:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" } }, { id: 11664, name: "offset", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11652, src: "7589:6:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, { id: 11665, name: "limit", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11654, src: "7597:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_array$_t_address_$dyn_storage", typeString: "address[] storage ref" }, { typeIdentifier: "t_uint256", typeString: "uint256" }, { typeIdentifier: "t_uint256", typeString: "uint256" }], id: 11662, name: "_paginateAddresses", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11820, src: "7554:18:33", typeDescriptions: { typeIdentifier: "t_function_internal_view$_t_array$_t_address_$dyn_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", typeString: "function (address[] storage pointer,uint256,uint256) view returns (address[] memory)" } }, id: 11666, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7554:49:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, src: "7545:58:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, id: 11668, nodeType: "ExpressionStatement", src: "7545:58:33" }] }, baseFunctions: [10618], documentation: { id: 11650, nodeType: "StructuredDocumentation", src: "7332:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "803b1301", implemented: true, kind: "function", modifiers: [], name: "getUserStores", nameLocation: "7375:13:33", overrides: { id: 11656, nodeType: "OverrideSpecifier", overrides: [], src: "7480:8:33" }, parameters: { id: 11655, nodeType: "ParameterList", parameters: [{ constant: false, id: 11652, mutability: "mutable", name: "offset", nameLocation: "7406:6:33", nodeType: "VariableDeclaration", scope: 11670, src: "7398:14:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11651, name: "uint256", nodeType: "ElementaryTypeName", src: "7398:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }, { constant: false, id: 11654, mutability: "mutable", name: "limit", nameLocation: "7430:5:33", nodeType: "VariableDeclaration", scope: 11670, src: "7422:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11653, name: "uint256", nodeType: "ElementaryTypeName", src: "7422:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "7388:53:33" }, returnParameters: { id: 11660, nodeType: "ParameterList", parameters: [{ constant: false, id: 11659, mutability: "mutable", name: "stores", nameLocation: "7523:6:33", nodeType: "VariableDeclaration", scope: 11670, src: "7506:23:33", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[]" }, typeName: { baseType: { id: 11657, name: "address", nodeType: "ElementaryTypeName", src: "7506:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11658, nodeType: "ArrayTypeName", src: "7506:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } }, visibility: "internal" }], src: "7505:25:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "external" }, { id: 11709, nodeType: "FunctionDefinition", src: "7650:385:33", nodes: [], body: { id: 11708, nodeType: "Block", src: "7745:290:33", nodes: [], statements: [{ expression: { arguments: [{ commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11685, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11680, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11673, src: "7763:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "!=", rightExpression: { arguments: [{ hexValue: "30", id: 11683, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "7792:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11682, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "ElementaryTypeNameExpression", src: "7784:7:33", typeDescriptions: { typeIdentifier: "t_type$_t_address_$", typeString: "type(address)" }, typeName: { id: 11681, name: "address", nodeType: "ElementaryTypeName", src: "7784:7:33", typeDescriptions: {} } }, id: 11684, isConstant: false, isLValue: false, isPure: true, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7784:10:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "7763:31:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ id: 11687, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11673, src: "7818:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11686, name: "InvalidImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10522, src: "7796:21:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 11688, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7796:40:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11679, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "7755:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11689, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7755:82:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11690, nodeType: "ExpressionStatement", src: "7755:82:33" }, { expression: { arguments: [], expression: { argumentTypes: [], expression: { arguments: [{ id: 11692, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11673, src: "7858:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11691, name: "IUserStore", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10749, src: "7847:10:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IUserStore_$10749_$", typeString: "type(contract IUserStore)" } }, id: 11693, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7847:29:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IUserStore_$10749", typeString: "contract IUserStore" } }, id: 11694, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "7877:11:33", memberName: "getKeyCount", nodeType: "MemberAccess", referencedDeclaration: 10729, src: "7847:41:33", typeDescriptions: { typeIdentifier: "t_function_external_view$__$returns$_t_uint256_$", typeString: "function () view external returns (uint256)" } }, id: 11695, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7847:43:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 11696, nodeType: "ExpressionStatement", src: "7847:43:33" }, { expression: { arguments: [{ id: 11701, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11673, src: "7945:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { arguments: [{ id: 11698, name: "userStoreBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11254, src: "7918:15:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11697, name: "UpgradeableBeacon", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 55677, src: "7900:17:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_UpgradeableBeacon_$55677_$", typeString: "type(contract UpgradeableBeacon)" } }, id: 11699, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7900:34:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_UpgradeableBeacon_$55677", typeString: "contract UpgradeableBeacon" } }, id: 11700, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "7935:9:33", memberName: "upgradeTo", nodeType: "MemberAccess", referencedDeclaration: 55650, src: "7900:44:33", typeDescriptions: { typeIdentifier: "t_function_external_nonpayable$_t_address_$returns$__$", typeString: "function (address) external" } }, id: 11702, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7900:63:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11703, nodeType: "ExpressionStatement", src: "7900:63:33" }, { eventCall: { arguments: [{ id: 11705, name: "newImplementation", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11673, src: "8010:17:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11704, name: "UserStoreImplementationUpgraded", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10500, src: "7978:31:33", typeDescriptions: { typeIdentifier: "t_function_event_nonpayable$_t_address_$returns$__$", typeString: "function (address)" } }, id: 11706, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "7978:50:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11707, nodeType: "EmitStatement", src: "7973:55:33" }] }, baseFunctions: [10624], documentation: { id: 11671, nodeType: "StructuredDocumentation", src: "7616:29:33", text: "@inheritdoc IStoreFactory" }, functionSelector: "adff70ee", implemented: true, kind: "function", modifiers: [{ id: 11677, kind: "modifierInvocation", modifierName: { id: 11676, name: "onlyOwner", nameLocations: ["7735:9:33"], nodeType: "IdentifierPath", referencedDeclaration: 54896, src: "7735:9:33" }, nodeType: "ModifierInvocation", src: "7735:9:33" }], name: "upgradeUserStoreImplementation", nameLocation: "7659:30:33", overrides: { id: 11675, nodeType: "OverrideSpecifier", overrides: [], src: "7726:8:33" }, parameters: { id: 11674, nodeType: "ParameterList", parameters: [{ constant: false, id: 11673, mutability: "mutable", name: "newImplementation", nameLocation: "7698:17:33", nodeType: "VariableDeclaration", scope: 11709, src: "7690:25:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" }, typeName: { id: 11672, name: "address", nodeType: "ElementaryTypeName", src: "7690:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, visibility: "internal" }], src: "7689:27:33" }, returnParameters: { id: 11678, nodeType: "ParameterList", parameters: [], src: "7745:0:33" }, scope: 11821, stateMutability: "nonpayable", virtual: false, visibility: "external" }, { id: 11720, nodeType: "FunctionDefinition", src: "8143:119:33", nodes: [], body: { id: 11719, nodeType: "Block", src: "8222:40:33", nodes: [], statements: [{ expression: { id: 11717, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11715, name: "versionString", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11713, src: "8232:13:33", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { hexValue: "312e302e30", id: 11716, isConstant: false, isLValue: false, isPure: true, kind: "string", lValueRequested: false, nodeType: "Literal", src: "8248:7:33", typeDescriptions: { typeIdentifier: "t_stringliteral_06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c", typeString: 'literal_string "1.0.0"' }, value: "1.0.0" }, src: "8232:23:33", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string memory" } }, id: 11718, nodeType: "ExpressionStatement", src: "8232:23:33" }] }, documentation: { id: 11710, nodeType: "StructuredDocumentation", src: "8041:97:33", text: `@notice Returns implementation version.
|
|
2852
|
+
@return versionString Current version string.` }, functionSelector: "54fd4d50", implemented: true, kind: "function", modifiers: [], name: "version", nameLocation: "8152:7:33", parameters: { id: 11711, nodeType: "ParameterList", parameters: [], src: "8159:2:33" }, returnParameters: { id: 11714, nodeType: "ParameterList", parameters: [{ constant: false, id: 11713, mutability: "mutable", name: "versionString", nameLocation: "8207:13:33", nodeType: "VariableDeclaration", scope: 11720, src: "8193:27:33", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_string_memory_ptr", typeString: "string" }, typeName: { id: 11712, name: "string", nodeType: "ElementaryTypeName", src: "8193:6:33", typeDescriptions: { typeIdentifier: "t_string_storage_ptr", typeString: "string" } }, visibility: "internal" }], src: "8192:29:33" }, scope: 11821, stateMutability: "pure", virtual: true, visibility: "external" }, { id: 11746, nodeType: "FunctionDefinition", src: "8363:248:33", nodes: [], body: { id: 11745, nodeType: "Block", src: "8409:202:33", nodes: [], statements: [{ condition: { commonType: { typeIdentifier: "t_address", typeString: "address" }, id: 11728, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { expression: { id: 11724, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "8423:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11725, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8427:6:33", memberName: "sender", nodeType: "MemberAccess", src: "8423:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "BinaryOperation", operator: "==", rightExpression: { arguments: [], expression: { argumentTypes: [], id: 11726, name: "owner", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 54905, src: "8437:5:33", typeDescriptions: { typeIdentifier: "t_function_internal_view$__$returns$_t_address_$", typeString: "function () view returns (address)" } }, id: 11727, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8437:7:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "8423:21:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 11730, nodeType: "IfStatement", src: "8419:34:33", trueBody: { functionReturnParameters: 11723, id: 11729, nodeType: "Return", src: "8446:7:33" } }, { expression: { arguments: [{ arguments: [{ expression: { id: 11736, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "8544:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11737, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8548:6:33", memberName: "sender", nodeType: "MemberAccess", src: "8544:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], expression: { arguments: [{ id: 11733, name: "protocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11258, src: "8506:16:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11732, name: "IDotnsProtocolRegistry", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 8949, src: "8483:22:33", typeDescriptions: { typeIdentifier: "t_type$_t_contract$_IDotnsProtocolRegistry_$8949_$", typeString: "type(contract IDotnsProtocolRegistry)" } }, id: 11734, isConstant: false, isLValue: false, isPure: false, kind: "typeConversion", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8483:40:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_contract$_IDotnsProtocolRegistry_$8949", typeString: "contract IDotnsProtocolRegistry" } }, id: 11735, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8524:19:33", memberName: "isRegisteredAddress", nodeType: "MemberAccess", referencedDeclaration: 8948, src: "8483:60:33", typeDescriptions: { typeIdentifier: "t_function_external_view$_t_address_$returns$_t_bool_$", typeString: "function (address) view external returns (bool)" } }, id: 11738, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8483:72:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, { arguments: [{ expression: { id: 11740, name: "msg", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: -15, src: "8583:3:33", typeDescriptions: { typeIdentifier: "t_magic_message", typeString: "msg" } }, id: 11741, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "8587:6:33", memberName: "sender", nodeType: "MemberAccess", src: "8583:10:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }], expression: { argumentTypes: [{ typeIdentifier: "t_address", typeString: "address" }], id: 11739, name: "NotAuthorised", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 10527, src: "8569:13:33", typeDescriptions: { typeIdentifier: "t_function_error_pure$_t_address_$returns$_t_error_$", typeString: "function (address) pure returns (error)" } }, id: 11742, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8569:25:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_error", typeString: "error" } }], expression: { argumentTypes: [{ typeIdentifier: "t_bool", typeString: "bool" }, { typeIdentifier: "t_error", typeString: "error" }], id: 11731, name: "require", nodeType: "Identifier", overloadedDeclarations: [-18, -18, -18], referencedDeclaration: -18, src: "8462:7:33", typeDescriptions: { typeIdentifier: "t_function_require_pure$_t_bool_$_t_error_$returns$__$", typeString: "function (bool,error) pure" } }, id: 11743, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "8462:142:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_tuple$__$", typeString: "tuple()" } }, id: 11744, nodeType: "ExpressionStatement", src: "8462:142:33" }] }, documentation: { id: 11721, nodeType: "StructuredDocumentation", src: "8268:90:33", text: "@notice Internal authorisation check deferred from the `onlyOwnerOrProtocol` modifier." }, implemented: true, kind: "function", modifiers: [], name: "_onlyOwnerOrProtocol", nameLocation: "8372:20:33", parameters: { id: 11722, nodeType: "ParameterList", parameters: [], src: "8392:2:33" }, returnParameters: { id: 11723, nodeType: "ParameterList", parameters: [], src: "8409:0:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "internal" }, { id: 11820, nodeType: "FunctionDefinition", src: "8999:532:33", nodes: [], body: { id: 11819, nodeType: "Block", src: "9189:342:33", nodes: [], statements: [{ assignments: [11761], declarations: [{ constant: false, id: 11761, mutability: "mutable", name: "total", nameLocation: "9207:5:33", nodeType: "VariableDeclaration", scope: 11819, src: "9199:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11760, name: "uint256", nodeType: "ElementaryTypeName", src: "9199:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 11764, initialValue: { expression: { id: 11762, name: "source", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11750, src: "9215:6:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[] storage pointer" } }, id: 11763, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, memberLocation: "9222:6:33", memberName: "length", nodeType: "MemberAccess", src: "9215:13:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "9199:29:33" }, { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 11767, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11765, name: "offset", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11752, src: "9242:6:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: ">=", rightExpression: { id: 11766, name: "total", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11761, src: "9252:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "9242:15:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 11774, nodeType: "IfStatement", src: "9238:44:33", trueBody: { expression: { arguments: [{ hexValue: "30", id: 11771, isConstant: false, isLValue: false, isPure: true, kind: "number", lValueRequested: false, nodeType: "Literal", src: "9280:1:33", typeDescriptions: { typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }, value: "0" }], expression: { argumentTypes: [{ typeIdentifier: "t_rational_0_by_1", typeString: "int_const 0" }], id: 11770, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "NewExpression", src: "9266:13:33", typeDescriptions: { typeIdentifier: "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", typeString: "function (uint256) pure returns (address[] memory)" }, typeName: { baseType: { id: 11768, name: "address", nodeType: "ElementaryTypeName", src: "9270:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11769, nodeType: "ArrayTypeName", src: "9270:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } } }, id: 11772, isConstant: false, isLValue: false, isPure: true, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9266:16:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, functionReturnParameters: 11759, id: 11773, nodeType: "Return", src: "9259:23:33" } }, { assignments: [11776], declarations: [{ constant: false, id: 11776, mutability: "mutable", name: "available", nameLocation: "9301:9:33", nodeType: "VariableDeclaration", scope: 11819, src: "9293:17:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11775, name: "uint256", nodeType: "ElementaryTypeName", src: "9293:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 11780, initialValue: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 11779, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11777, name: "total", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11761, src: "9313:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "-", rightExpression: { id: 11778, name: "offset", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11752, src: "9321:6:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "9313:14:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "9293:34:33" }, { assignments: [11782], declarations: [{ constant: false, id: 11782, mutability: "mutable", name: "count", nameLocation: "9345:5:33", nodeType: "VariableDeclaration", scope: 11819, src: "9337:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11781, name: "uint256", nodeType: "ElementaryTypeName", src: "9337:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 11789, initialValue: { condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 11785, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11783, name: "limit", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11754, src: "9353:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<", rightExpression: { id: 11784, name: "available", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11776, src: "9361:9:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "9353:17:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, falseExpression: { id: 11787, name: "available", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11776, src: "9381:9:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 11788, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "Conditional", src: "9353:37:33", trueExpression: { id: 11786, name: "limit", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11754, src: "9373:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "VariableDeclarationStatement", src: "9337:53:33" }, { expression: { id: 11796, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { id: 11790, name: "slice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11758, src: "9401:5:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, nodeType: "Assignment", operator: "=", rightHandSide: { arguments: [{ id: 11794, name: "count", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11782, src: "9423:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }], expression: { argumentTypes: [{ typeIdentifier: "t_uint256", typeString: "uint256" }], id: 11793, isConstant: false, isLValue: false, isPure: true, lValueRequested: false, nodeType: "NewExpression", src: "9409:13:33", typeDescriptions: { typeIdentifier: "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", typeString: "function (uint256) pure returns (address[] memory)" }, typeName: { baseType: { id: 11791, name: "address", nodeType: "ElementaryTypeName", src: "9413:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11792, nodeType: "ArrayTypeName", src: "9413:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } } }, id: 11795, isConstant: false, isLValue: false, isPure: false, kind: "functionCall", lValueRequested: false, nameLocations: [], names: [], nodeType: "FunctionCall", src: "9409:20:33", tryCall: false, typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, src: "9401:28:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, id: 11797, nodeType: "ExpressionStatement", src: "9401:28:33" }, { body: { id: 11817, nodeType: "Block", src: "9471:54:33", statements: [{ expression: { id: 11815, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftHandSide: { baseExpression: { id: 11807, name: "slice", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11758, src: "9485:5:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[] memory" } }, id: 11809, indexExpression: { id: 11808, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11799, src: "9491:1:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: true, nodeType: "IndexAccess", src: "9485:8:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, nodeType: "Assignment", operator: "=", rightHandSide: { baseExpression: { id: 11810, name: "source", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11750, src: "9496:6:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[] storage pointer" } }, id: 11814, indexExpression: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 11813, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11811, name: "offset", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11752, src: "9503:6:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "+", rightExpression: { id: 11812, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11799, src: "9512:1:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "9503:10:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, isConstant: false, isLValue: true, isPure: false, lValueRequested: false, nodeType: "IndexAccess", src: "9496:18:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, src: "9485:29:33", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11816, nodeType: "ExpressionStatement", src: "9485:29:33" }] }, condition: { commonType: { typeIdentifier: "t_uint256", typeString: "uint256" }, id: 11803, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, leftExpression: { id: 11801, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11799, src: "9455:1:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, nodeType: "BinaryOperation", operator: "<", rightExpression: { id: 11802, name: "count", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11782, src: "9459:5:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, src: "9455:9:33", typeDescriptions: { typeIdentifier: "t_bool", typeString: "bool" } }, id: 11818, initializationExpression: { assignments: [11799], declarations: [{ constant: false, id: 11799, mutability: "mutable", name: "i", nameLocation: "9452:1:33", nodeType: "VariableDeclaration", scope: 11818, src: "9444:9:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11798, name: "uint256", nodeType: "ElementaryTypeName", src: "9444:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], id: 11800, nodeType: "VariableDeclarationStatement", src: "9444:9:33" }, isSimpleCounterLoop: true, loopExpression: { expression: { id: 11805, isConstant: false, isLValue: false, isPure: false, lValueRequested: false, nodeType: "UnaryOperation", operator: "++", prefix: true, src: "9466:3:33", subExpression: { id: 11804, name: "i", nodeType: "Identifier", overloadedDeclarations: [], referencedDeclaration: 11799, src: "9468:1:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, id: 11806, nodeType: "ExpressionStatement", src: "9466:3:33" }, nodeType: "ForStatement", src: "9439:86:33" }] }, documentation: { id: 11747, nodeType: "StructuredDocumentation", src: "8617:377:33", text: "@notice Shared pagination helper used by `getLabelStores` and `getUserStores`.\n @dev Single canonical slicer so both enumerations bound-check and copy identically.\n @param source Storage array to slice.\n @param offset Start index.\n @param limit Maximum entries to return.\n @return slice Result slice; empty when `offset >= source.length`." }, implemented: true, kind: "function", modifiers: [], name: "_paginateAddresses", nameLocation: "9008:18:33", parameters: { id: 11755, nodeType: "ParameterList", parameters: [{ constant: false, id: 11750, mutability: "mutable", name: "source", nameLocation: "9054:6:33", nodeType: "VariableDeclaration", scope: 11820, src: "9036:24:33", stateVariable: false, storageLocation: "storage", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" }, typeName: { baseType: { id: 11748, name: "address", nodeType: "ElementaryTypeName", src: "9036:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11749, nodeType: "ArrayTypeName", src: "9036:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } }, visibility: "internal" }, { constant: false, id: 11752, mutability: "mutable", name: "offset", nameLocation: "9078:6:33", nodeType: "VariableDeclaration", scope: 11820, src: "9070:14:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11751, name: "uint256", nodeType: "ElementaryTypeName", src: "9070:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }, { constant: false, id: 11754, mutability: "mutable", name: "limit", nameLocation: "9102:5:33", nodeType: "VariableDeclaration", scope: 11820, src: "9094:13:33", stateVariable: false, storageLocation: "default", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" }, typeName: { id: 11753, name: "uint256", nodeType: "ElementaryTypeName", src: "9094:7:33", typeDescriptions: { typeIdentifier: "t_uint256", typeString: "uint256" } }, visibility: "internal" }], src: "9026:87:33" }, returnParameters: { id: 11759, nodeType: "ParameterList", parameters: [{ constant: false, id: 11758, mutability: "mutable", name: "slice", nameLocation: "9178:5:33", nodeType: "VariableDeclaration", scope: 11820, src: "9161:22:33", stateVariable: false, storageLocation: "memory", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_memory_ptr", typeString: "address[]" }, typeName: { baseType: { id: 11756, name: "address", nodeType: "ElementaryTypeName", src: "9161:7:33", stateMutability: "nonpayable", typeDescriptions: { typeIdentifier: "t_address", typeString: "address" } }, id: 11757, nodeType: "ArrayTypeName", src: "9161:9:33", typeDescriptions: { typeIdentifier: "t_array$_t_address_$dyn_storage_ptr", typeString: "address[]" } }, visibility: "internal" }], src: "9160:24:33" }, scope: 11821, stateMutability: "view", virtual: false, visibility: "internal" }], abstract: false, baseContracts: [{ baseName: { id: 11243, name: "Ownable", nameLocations: ["1473:7:33"], nodeType: "IdentifierPath", referencedDeclaration: 54985, src: "1473:7:33" }, id: 11244, nodeType: "InheritanceSpecifier", src: "1473:7:33" }, { baseName: { id: 11245, name: "IStoreFactory", nameLocations: ["1482:13:33"], nodeType: "IdentifierPath", referencedDeclaration: 10625, src: "1482:13:33" }, id: 11246, nodeType: "InheritanceSpecifier", src: "1482:13:33" }], canonicalName: "StoreFactory", contractDependencies: [11219, 12271, 55579, 55677], contractKind: "contract", documentation: { id: 11242, nodeType: "StructuredDocumentation", src: "661:787:33", text: "@title StoreFactory\n @notice Factory for the two per-user DotNS store types, sharing one factory contract and two\n beacons. @dev Each user may acquire AT MOST two stores, ever:\n - a `LabelStore`, deployed via `deployLabelStoreFor` by a protocol-registered caller\n during registration; and\n - a `UserStore`, claimed via `claimUserStore` by the user themselves.\n Both are `BeaconProxy` instances pointing at their respective `UpgradeableBeacon`.\n The factory owns both beacons so the factory owner can upgrade implementations for\n every proxy atomically. Neither per-user mapping is ever transferred, reassigned, or\n overwritten after the first write; bindings are permanent.\n @custom:security-contact admin@parity.io" }, fullyImplemented: true, linearizedBaseContracts: [11821, 10625, 54985, 58625], name: "StoreFactory", nameLocation: "1457:12:33", scope: 11822, usedErrors: [10507, 10512, 10517, 10522, 10527, 10530, 54851, 54856], usedEvents: [10483, 10490, 10495, 10500, 54862] }], license: "MIT" },
|
|
2853
|
+
id: 33
|
|
2858
2854
|
};
|
|
2859
2855
|
});
|
|
2860
2856
|
|
|
@@ -2886,7 +2882,28 @@ var init_Store = __esm(() => {
|
|
|
2886
2882
|
});
|
|
2887
2883
|
|
|
2888
2884
|
// src/utils/constants.ts
|
|
2889
|
-
|
|
2885
|
+
function normaliseEnvironmentToken(value) {
|
|
2886
|
+
return value.trim().toLowerCase().replace(/\s+/g, "-");
|
|
2887
|
+
}
|
|
2888
|
+
function resolveDotnsEnvironmentId(value) {
|
|
2889
|
+
const raw = value?.trim();
|
|
2890
|
+
if (!raw)
|
|
2891
|
+
return DEFAULT_DOTNS_ENVIRONMENT;
|
|
2892
|
+
const token = normaliseEnvironmentToken(raw);
|
|
2893
|
+
for (const [id, config] of Object.entries(DOTNS_ENVIRONMENTS)) {
|
|
2894
|
+
if (id === token || config.aliases.includes(token))
|
|
2895
|
+
return id;
|
|
2896
|
+
}
|
|
2897
|
+
throw new Error(`Unknown DotNS environment "${value}". Use one of: ${DOTNS_ENVIRONMENT_IDS.join(", ")}`);
|
|
2898
|
+
}
|
|
2899
|
+
function setActiveDotnsEnvironment(value) {
|
|
2900
|
+
activeDotnsEnvironment = resolveDotnsEnvironmentId(value);
|
|
2901
|
+
return DOTNS_ENVIRONMENTS[activeDotnsEnvironment];
|
|
2902
|
+
}
|
|
2903
|
+
function getActiveDotnsEnvironment() {
|
|
2904
|
+
return DOTNS_ENVIRONMENTS[activeDotnsEnvironment];
|
|
2905
|
+
}
|
|
2906
|
+
var PREVIEW_BASE_URL = "http://dotns.paseo.li/#/preview", PASEO_ASSET_HUB_URL = "wss://paseo-asset-hub-next-rpc.polkadot.io", PASEO_IPFS_GATEWAY_URL = "https://paseo-bulletin-next-ipfs.polkadot.io/ipfs", PERSONHOOD_PRECOMPILE_ADDRESS = "0x000000000000000000000000000000000a010000", PERSONHOOD_CONTEXT = "0x646f746e73000000000000000000000000000000000000000000000000000000", DEFAULT_BULLETIN_RPC = "wss://paseo-bulletin-rpc.polkadot.io", DEFAULT_CHUNK_SIZE_BYTES, MAX_SINGLE_UPLOAD_SIZE_BYTES, DEFAULT_UPLOAD_MAX_RETRIES = 5, MAX_UPLOAD_MAX_RETRIES = 20, UPLOAD_RETRY_BASE_DELAYS_MS, DEFAULT_AUTHORIZATION_TRANSACTIONS = 1e6, DEFAULT_AUTHORIZATION_BYTES, DEFAULT_VERIFICATION_GATEWAY, DOT_NODE = "0x3fce7d1364a893e213bc4212792b517ffc88f5b13b86c8ef9c8d390c3a1370ce", DEFAULT_NATIVE_TOKEN_DECIMALS = 10, EVM_TOKEN_DECIMALS = 18, DEFAULT_MNEMONIC = "bottom drive obey lake curtain smoke basket hold race lonely fit walk", DEFAULT_SUDO_KEY_URI = "//Alice", BULLETIN_BLOCK_TIME_MS = 6000, OPERATION_TIMEOUT_MILLISECONDS = 300000, DEFAULT_COMMITMENT_BUFFER_SECONDS = 6, COMMITMENT_POLL_TIMEOUT_MS = 30000, COMMITMENT_POLL_INTERVAL_MS = 2000, DOTNS_REGISTRAR_CONTROLLER_ABI, DOTNS_REGISTRY_ABI, DOTNS_REGISTRAR_ABI, DOTNS_REVERSE_RESOLVER_ABI, DOTNS_CONTENT_RESOLVER_ABI, DOTNS_RESOLVER_ABI, POP_RULES_ABI, STORE_FACTORY_ABI, STORE_ABI, PERSONHOOD_ABI, RPC_ENDPOINTS, DOTNS_ENVIRONMENT_IDS, SHARED_MULTICALL3 = "0x807A65D3F3020011Fe0A61723d51362556C14ffd", DOTNS_ENVIRONMENTS, DEFAULT_DOTNS_ENVIRONMENT = "paseo-v2", activeDotnsEnvironment, CONTRACTS;
|
|
2890
2907
|
var init_constants = __esm(() => {
|
|
2891
2908
|
init_DotnsRegistrarController();
|
|
2892
2909
|
init_DotnsRegistry();
|
|
@@ -2901,6 +2918,7 @@ var init_constants = __esm(() => {
|
|
|
2901
2918
|
MAX_SINGLE_UPLOAD_SIZE_BYTES = 8 * 1024 * 1024;
|
|
2902
2919
|
UPLOAD_RETRY_BASE_DELAYS_MS = [1000, 2000, 5000, 1e4];
|
|
2903
2920
|
DEFAULT_AUTHORIZATION_BYTES = BigInt(1073741824);
|
|
2921
|
+
DEFAULT_VERIFICATION_GATEWAY = PASEO_IPFS_GATEWAY_URL;
|
|
2904
2922
|
DOTNS_REGISTRAR_CONTROLLER_ABI = DotnsRegistrarController_default.abi;
|
|
2905
2923
|
DOTNS_REGISTRY_ABI = DotnsRegistry_default.abi;
|
|
2906
2924
|
DOTNS_REGISTRAR_ABI = DotnsRegistrar_default.abi;
|
|
@@ -2910,19 +2928,89 @@ var init_constants = __esm(() => {
|
|
|
2910
2928
|
POP_RULES_ABI = PopRules_default.abi;
|
|
2911
2929
|
STORE_FACTORY_ABI = StoreFactory_default.abi;
|
|
2912
2930
|
STORE_ABI = Store_default.abi;
|
|
2913
|
-
|
|
2914
|
-
|
|
2931
|
+
PERSONHOOD_ABI = [
|
|
2932
|
+
{
|
|
2933
|
+
type: "function",
|
|
2934
|
+
name: "personhoodStatus",
|
|
2935
|
+
inputs: [
|
|
2936
|
+
{ name: "account", type: "address" },
|
|
2937
|
+
{ name: "context", type: "bytes32" }
|
|
2938
|
+
],
|
|
2939
|
+
outputs: [
|
|
2940
|
+
{
|
|
2941
|
+
name: "info",
|
|
2942
|
+
type: "tuple",
|
|
2943
|
+
components: [
|
|
2944
|
+
{ name: "status", type: "uint8" },
|
|
2945
|
+
{ name: "contextAlias", type: "bytes32" }
|
|
2946
|
+
]
|
|
2947
|
+
}
|
|
2948
|
+
],
|
|
2949
|
+
stateMutability: "view"
|
|
2950
|
+
},
|
|
2951
|
+
{
|
|
2952
|
+
type: "function",
|
|
2953
|
+
name: "personhoodInfoByProof",
|
|
2954
|
+
inputs: [
|
|
2955
|
+
{
|
|
2956
|
+
name: "request",
|
|
2957
|
+
type: "tuple",
|
|
2958
|
+
components: [
|
|
2959
|
+
{ name: "expectedStatus", type: "uint8" },
|
|
2960
|
+
{ name: "proof", type: "bytes" },
|
|
2961
|
+
{ name: "expectedAlias", type: "bytes32" },
|
|
2962
|
+
{ name: "ringIndex", type: "uint32" },
|
|
2963
|
+
{ name: "context", type: "bytes32" },
|
|
2964
|
+
{ name: "revision", type: "uint32" },
|
|
2965
|
+
{ name: "message", type: "bytes" }
|
|
2966
|
+
]
|
|
2967
|
+
}
|
|
2968
|
+
],
|
|
2969
|
+
outputs: [{ name: "ok", type: "bool" }],
|
|
2970
|
+
stateMutability: "view"
|
|
2971
|
+
}
|
|
2915
2972
|
];
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2973
|
+
RPC_ENDPOINTS = [PASEO_ASSET_HUB_URL];
|
|
2974
|
+
DOTNS_ENVIRONMENT_IDS = ["paseo-v2"];
|
|
2975
|
+
DOTNS_ENVIRONMENTS = {
|
|
2976
|
+
"paseo-v2": {
|
|
2977
|
+
id: "paseo-v2",
|
|
2978
|
+
label: "Paseo V2",
|
|
2979
|
+
aliases: ["paseo-v2", "paseo_v2", "v2", "paseo", "next", "next-v2"],
|
|
2980
|
+
rpc: RPC_ENDPOINTS[0],
|
|
2981
|
+
blockExplorerUrl: "https://blockscout-testnet.polkadot.io",
|
|
2982
|
+
contracts: {
|
|
2983
|
+
DOTNS_REGISTRAR: "0x885b8085bA92A31c4ef52076f77379E647ECC399",
|
|
2984
|
+
DOTNS_REGISTRAR_CONTROLLER: "0x320b72c6e70D5a631d835FfD95915B288b26E6Be",
|
|
2985
|
+
DOTNS_REGISTRY: "0x8877344A885682523B4613779C95688ed7037BfD",
|
|
2986
|
+
DOTNS_RESOLVER: "0x0cCdfea1a5E62DE116BF6cA79D397798d49e351E",
|
|
2987
|
+
DOTNS_CONTENT_RESOLVER: "0x2c9FF5D9136DBE5814C7B4FDbeDC15273a776663",
|
|
2988
|
+
STORE_FACTORY: "0x0DE5De70d61cc6b44B45d6595afDe8dB9b55bc31",
|
|
2989
|
+
DOTNS_RULES: "0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E",
|
|
2990
|
+
MULTICALL3: SHARED_MULTICALL3
|
|
2991
|
+
}
|
|
2992
|
+
}
|
|
2993
|
+
};
|
|
2994
|
+
activeDotnsEnvironment = DEFAULT_DOTNS_ENVIRONMENT;
|
|
2995
|
+
CONTRACTS = new Proxy({}, {
|
|
2996
|
+
get(_target, property) {
|
|
2997
|
+
if (typeof property === "symbol")
|
|
2998
|
+
return;
|
|
2999
|
+
return getActiveDotnsEnvironment().contracts[property];
|
|
3000
|
+
},
|
|
3001
|
+
ownKeys() {
|
|
3002
|
+
return Reflect.ownKeys(getActiveDotnsEnvironment().contracts);
|
|
3003
|
+
},
|
|
3004
|
+
getOwnPropertyDescriptor(_target, property) {
|
|
3005
|
+
if (typeof property === "symbol")
|
|
3006
|
+
return;
|
|
3007
|
+
return {
|
|
3008
|
+
enumerable: true,
|
|
3009
|
+
configurable: true,
|
|
3010
|
+
value: getActiveDotnsEnvironment().contracts[property]
|
|
3011
|
+
};
|
|
3012
|
+
}
|
|
3013
|
+
});
|
|
2926
3014
|
});
|
|
2927
3015
|
|
|
2928
3016
|
// src/cli/keystore/payload.ts
|
|
@@ -2961,6 +3049,7 @@ __export(exports_env, {
|
|
|
2961
3049
|
resolveMinBalancePas: () => resolveMinBalancePas,
|
|
2962
3050
|
resolveKeystorePath: () => resolveKeystorePath,
|
|
2963
3051
|
resolveKeystoreDir: () => resolveKeystoreDir,
|
|
3052
|
+
resolveDotnsEnvironment: () => resolveDotnsEnvironment,
|
|
2964
3053
|
getDefaultKeystoreDir: () => getDefaultKeystoreDir,
|
|
2965
3054
|
getDefaultAccountPointerPath: () => getDefaultAccountPointerPath,
|
|
2966
3055
|
getAccountKeystoreFilePath: () => getAccountKeystoreFilePath,
|
|
@@ -2971,8 +3060,12 @@ import path from "node:path";
|
|
|
2971
3060
|
function getDefaultKeystoreDir() {
|
|
2972
3061
|
return path.join(os2.homedir(), ".dotns", "keystore");
|
|
2973
3062
|
}
|
|
2974
|
-
function
|
|
2975
|
-
return
|
|
3063
|
+
function resolveDotnsEnvironment(maybeEnvironment) {
|
|
3064
|
+
return setActiveDotnsEnvironment(maybeEnvironment || process.env[ENV.DOTNS_ENV]);
|
|
3065
|
+
}
|
|
3066
|
+
function resolveRpc(maybeRpc, maybeEnvironment) {
|
|
3067
|
+
const environment = resolveDotnsEnvironment(maybeEnvironment);
|
|
3068
|
+
return maybeRpc || process.env[ENV.RPC] || environment.rpc;
|
|
2976
3069
|
}
|
|
2977
3070
|
function resolveMinBalancePas(maybeMin) {
|
|
2978
3071
|
return maybeMin || process.env[ENV.MIN_BALANCE_PAS] || "0.1";
|
|
@@ -2994,6 +3087,7 @@ var ENV;
|
|
|
2994
3087
|
var init_env = __esm(() => {
|
|
2995
3088
|
init_constants();
|
|
2996
3089
|
ENV = {
|
|
3090
|
+
DOTNS_ENV: "DOTNS_ENV",
|
|
2997
3091
|
RPC: "DOTNS_RPC",
|
|
2998
3092
|
MNEMONIC: "DOTNS_MNEMONIC",
|
|
2999
3093
|
KEY_URI: "DOTNS_KEY_URI",
|
|
@@ -8291,26 +8385,42 @@ var init_reporter = __esm(() => {
|
|
|
8291
8385
|
});
|
|
8292
8386
|
|
|
8293
8387
|
// src/utils/formatting.ts
|
|
8294
|
-
function
|
|
8295
|
-
|
|
8388
|
+
function normalizeNativeDecimals(decimals) {
|
|
8389
|
+
if (decimals == null || !Number.isInteger(decimals) || decimals < 0) {
|
|
8390
|
+
return BigInt(DEFAULT_NATIVE_TOKEN_DECIMALS);
|
|
8391
|
+
}
|
|
8392
|
+
return BigInt(decimals);
|
|
8393
|
+
}
|
|
8394
|
+
function getNativeToWeiRatio(nativeDecimals) {
|
|
8395
|
+
const decimals = normalizeNativeDecimals(nativeDecimals);
|
|
8396
|
+
const exponent = BigInt(EVM_TOKEN_DECIMALS) - decimals;
|
|
8397
|
+
if (exponent < 0n) {
|
|
8398
|
+
throw new Error(`Native token decimals (${decimals}) exceed EVM decimals (${EVM_TOKEN_DECIMALS})`);
|
|
8399
|
+
}
|
|
8400
|
+
return 10n ** exponent;
|
|
8401
|
+
}
|
|
8402
|
+
function formatNativeBalance(valueInNativeUnits, decimals) {
|
|
8403
|
+
const nativeDecimals = normalizeNativeDecimals(decimals);
|
|
8404
|
+
const divisor = 10n ** nativeDecimals;
|
|
8296
8405
|
const wholePart = valueInNativeUnits / divisor;
|
|
8297
8406
|
const fractionalPart = valueInNativeUnits % divisor;
|
|
8298
8407
|
let fractionalString = fractionalPart.toString();
|
|
8299
|
-
const missingZeroCount =
|
|
8408
|
+
const missingZeroCount = nativeDecimals - BigInt(fractionalString.length);
|
|
8300
8409
|
if (missingZeroCount > 0n) {
|
|
8301
8410
|
fractionalString = "0".repeat(Number(missingZeroCount)) + fractionalString;
|
|
8302
8411
|
}
|
|
8303
8412
|
return `${wholePart}.${fractionalString}`;
|
|
8304
8413
|
}
|
|
8305
|
-
function parseNativeBalance(decimalValue) {
|
|
8414
|
+
function parseNativeBalance(decimalValue, decimals) {
|
|
8415
|
+
const nativeDecimals = normalizeNativeDecimals(decimals);
|
|
8306
8416
|
const parts = decimalValue.split(".");
|
|
8307
8417
|
const wholePart = BigInt(parts[0] || "0");
|
|
8308
8418
|
const fractionalPart = parts[1] || "0";
|
|
8309
|
-
const paddedFraction = fractionalPart.padEnd(Number(
|
|
8310
|
-
return wholePart * 10n **
|
|
8419
|
+
const paddedFraction = fractionalPart.padEnd(Number(nativeDecimals), "0").slice(0, Number(nativeDecimals));
|
|
8420
|
+
return wholePart * 10n ** nativeDecimals + BigInt(paddedFraction);
|
|
8311
8421
|
}
|
|
8312
|
-
function convertWeiToNative(weiValue) {
|
|
8313
|
-
return weiValue /
|
|
8422
|
+
function convertWeiToNative(weiValue, nativeDecimals) {
|
|
8423
|
+
return weiValue / getNativeToWeiRatio(nativeDecimals);
|
|
8314
8424
|
}
|
|
8315
8425
|
function formatWeiAsEther(weiValue) {
|
|
8316
8426
|
return formatEther(weiValue);
|
|
@@ -252348,15 +252458,20 @@ function decodeIpfsContenthash(contenthashHex) {
|
|
|
252348
252458
|
}
|
|
252349
252459
|
|
|
252350
252460
|
// src/bulletin/ipfs.ts
|
|
252461
|
+
init_constants();
|
|
252351
252462
|
init_formatting();
|
|
252352
252463
|
async function loadHeliaClient() {
|
|
252353
252464
|
const { getSharedHeliaClient: getSharedHeliaClient2 } = await Promise.resolve().then(() => (init_heliaClient(), exports_heliaClient));
|
|
252354
252465
|
return getSharedHeliaClient2();
|
|
252355
252466
|
}
|
|
252356
|
-
var DEFAULT_VERIFICATION_GATEWAY2 =
|
|
252467
|
+
var DEFAULT_VERIFICATION_GATEWAY2 = PASEO_IPFS_GATEWAY_URL;
|
|
252357
252468
|
var VERIFICATION_TIMEOUT_MILLISECONDS = 30000;
|
|
252469
|
+
function createIpfsGatewayUrl(gatewayBaseUrl, cid) {
|
|
252470
|
+
const gateway = gatewayBaseUrl.replace(/\/+$/, "");
|
|
252471
|
+
return gateway.endsWith("/ipfs") ? `${gateway}/${cid}` : `${gateway}/ipfs/${cid}`;
|
|
252472
|
+
}
|
|
252358
252473
|
async function verifyCidResolution(contentCid, gatewayBaseUrl = DEFAULT_VERIFICATION_GATEWAY2) {
|
|
252359
|
-
const verificationUrl =
|
|
252474
|
+
const verificationUrl = createIpfsGatewayUrl(gatewayBaseUrl, contentCid);
|
|
252360
252475
|
try {
|
|
252361
252476
|
const response2 = await fetch(verificationUrl, {
|
|
252362
252477
|
method: "HEAD",
|
|
@@ -252379,7 +252494,7 @@ async function verifyCidResolution(contentCid, gatewayBaseUrl = DEFAULT_VERIFICA
|
|
|
252379
252494
|
}
|
|
252380
252495
|
}
|
|
252381
252496
|
async function verifyCidWithMultipleGateways(contentCid, gatewayUrls = [
|
|
252382
|
-
|
|
252497
|
+
PASEO_IPFS_GATEWAY_URL,
|
|
252383
252498
|
"https://dweb.link",
|
|
252384
252499
|
"https://cloudflare-ipfs.com",
|
|
252385
252500
|
"https://w3s.link"
|
|
@@ -253863,8 +253978,8 @@ async function checkAuthorization(rpc, accountAddress) {
|
|
|
253863
253978
|
const expired = currentBlock >= expiration;
|
|
253864
253979
|
return {
|
|
253865
253980
|
authorized: true,
|
|
253866
|
-
transactions_allowance: authorizationState.extent.
|
|
253867
|
-
bytes_allowance: authorizationState.extent.
|
|
253981
|
+
transactions_allowance: authorizationState.extent.transactions,
|
|
253982
|
+
bytes_allowance: authorizationState.extent.bytes,
|
|
253868
253983
|
expiration,
|
|
253869
253984
|
currentBlock,
|
|
253870
253985
|
expired
|
|
@@ -254181,7 +254296,7 @@ function getPreviewUrl(record2) {
|
|
|
254181
254296
|
// src/cli/commands/authOptions.ts
|
|
254182
254297
|
init_env();
|
|
254183
254298
|
function addAuthOptions(cmd) {
|
|
254184
|
-
return cmd.option("--rpc <wsUrl>", `WebSocket RPC endpoint (env: ${ENV.RPC})`).option("--keystore-path <path>", `Keystore path (env: ${ENV.KEYSTORE_PATH})`).option("--min-balance <pas>", `Minimum balance in PAS (env: ${ENV.MIN_BALANCE_PAS})`).option("--account <name>", "Keystore account name (default: keystore default)").option("--password <pw>", `Keystore password (env: ${ENV.KEYSTORE_PASSWORD})`).option("-m, --mnemonic <phrase>", `BIP39 mnemonic phrase (env: ${ENV.MNEMONIC})`).option("-k, --key-uri <uri>", `Substrate key URI (env: ${ENV.KEY_URI})`);
|
|
254299
|
+
return cmd.option("--env <environment>", `DotNS environment: paseo-v2 (env: ${ENV.DOTNS_ENV})`).option("--network <environment>", "Alias for --env").option("--rpc <wsUrl>", `WebSocket RPC endpoint (env: ${ENV.RPC})`).option("--keystore-path <path>", `Keystore path (env: ${ENV.KEYSTORE_PATH})`).option("--min-balance <pas>", `Minimum balance in PAS (env: ${ENV.MIN_BALANCE_PAS})`).option("--account <name>", "Keystore account name (default: keystore default)").option("--password <pw>", `Keystore password (env: ${ENV.KEYSTORE_PASSWORD})`).option("-m, --mnemonic <phrase>", `BIP39 mnemonic phrase (env: ${ENV.MNEMONIC})`).option("-k, --key-uri <uri>", `Substrate key URI (env: ${ENV.KEY_URI})`);
|
|
254185
254300
|
}
|
|
254186
254301
|
function getAuthOptions(cmd) {
|
|
254187
254302
|
const own = cmd.opts?.() ?? {};
|
|
@@ -265051,13 +265166,29 @@ async function resolveAuthSource(opts) {
|
|
|
265051
265166
|
}
|
|
265052
265167
|
|
|
265053
265168
|
// src/cli/context.ts
|
|
265054
|
-
|
|
265169
|
+
init_constants();
|
|
265170
|
+
function resolveRpcEnvironment(options2) {
|
|
265171
|
+
return options2.env ?? options2.network;
|
|
265172
|
+
}
|
|
265173
|
+
async function getBalanceStatus(client, substrateAddress, minimumBalancePas, nativeTokenDecimals = DEFAULT_NATIVE_TOKEN_DECIMALS) {
|
|
265055
265174
|
const accountInfo = await client.query.System.Account.getValue(substrateAddress);
|
|
265056
265175
|
const current = accountInfo.data.free;
|
|
265057
|
-
const required = parseNativeBalance(minimumBalancePas);
|
|
265176
|
+
const required = parseNativeBalance(minimumBalancePas, nativeTokenDecimals);
|
|
265058
265177
|
return { ok: current >= required, current, required };
|
|
265059
265178
|
}
|
|
265060
|
-
|
|
265179
|
+
function firstPropertyValue(value3) {
|
|
265180
|
+
return Array.isArray(value3) ? value3[0] : value3;
|
|
265181
|
+
}
|
|
265182
|
+
async function getChainTokenInfo(rawClient) {
|
|
265183
|
+
const properties = (await rawClient.getChainSpecData()).properties ?? {};
|
|
265184
|
+
const decimals = Number(firstPropertyValue(properties.tokenDecimals));
|
|
265185
|
+
const symbol3 = firstPropertyValue(properties.tokenSymbol);
|
|
265186
|
+
return {
|
|
265187
|
+
nativeTokenDecimals: Number.isInteger(decimals) && decimals >= 0 ? decimals : DEFAULT_NATIVE_TOKEN_DECIMALS,
|
|
265188
|
+
nativeTokenSymbol: typeof symbol3 === "string" && symbol3.length > 0 ? symbol3 : "PAS"
|
|
265189
|
+
};
|
|
265190
|
+
}
|
|
265191
|
+
async function displayAccountInformation(client, evmAddress, substrateAddress, nativeTokenDecimals = DEFAULT_NATIVE_TOKEN_DECIMALS, nativeTokenSymbol = "PAS") {
|
|
265061
265192
|
const accountInfo = await client.query.System.Account.getValue(substrateAddress);
|
|
265062
265193
|
console.log(source_default.bold(`
|
|
265063
265194
|
\uD83D\uDCCB Account Information
|
|
@@ -265067,15 +265198,18 @@ async function displayAccountInformation(client, evmAddress, substrateAddress) {
|
|
|
265067
265198
|
console.log(source_default.gray(" nonce: ") + source_default.white(accountInfo.nonce.toString()));
|
|
265068
265199
|
console.log(source_default.gray(" consumers: ") + source_default.white(accountInfo.consumers.toString()));
|
|
265069
265200
|
console.log(source_default.gray(" providers: ") + source_default.white(accountInfo.providers.toString()));
|
|
265070
|
-
console.log(source_default.gray(" free: ") + source_default.green(`${formatNativeBalance(accountInfo.data.free)}
|
|
265071
|
-
console.log(source_default.gray(" reserved: ") + source_default.white(`${formatNativeBalance(accountInfo.data.reserved)}
|
|
265072
|
-
console.log(source_default.gray(" frozen: ") + source_default.white(`${formatNativeBalance(accountInfo.data.frozen)}
|
|
265201
|
+
console.log(source_default.gray(" free: ") + source_default.green(`${formatNativeBalance(accountInfo.data.free, nativeTokenDecimals)} ${nativeTokenSymbol}`));
|
|
265202
|
+
console.log(source_default.gray(" reserved: ") + source_default.white(`${formatNativeBalance(accountInfo.data.reserved, nativeTokenDecimals)} ${nativeTokenSymbol}`));
|
|
265203
|
+
console.log(source_default.gray(" frozen: ") + source_default.white(`${formatNativeBalance(accountInfo.data.frozen, nativeTokenDecimals)} ${nativeTokenSymbol}`));
|
|
265073
265204
|
}
|
|
265074
265205
|
async function prepareAssetHubContext(options2) {
|
|
265075
|
-
const
|
|
265206
|
+
const environment = resolveDotnsEnvironment(resolveRpcEnvironment(options2));
|
|
265207
|
+
const rpc = resolveRpc(options2.rpc, environment.id);
|
|
265076
265208
|
const minBalancePas = resolveMinBalancePas(options2.minBalance);
|
|
265077
265209
|
const keystorePath = resolveKeystorePath(options2.keystorePath);
|
|
265078
|
-
const
|
|
265210
|
+
const rawClient = await step(`Connecting RPC ${rpc}`, async () => createClient3(getWsProvider(rpc)));
|
|
265211
|
+
const client = rawClient.getTypedApi(paseo_default);
|
|
265212
|
+
const tokenInfo = await step("Reading chain token metadata", async () => getChainTokenInfo(rawClient));
|
|
265079
265213
|
const auth = await step("Resolving account", async () => resolveAuthSource({
|
|
265080
265214
|
mnemonic: options2.mnemonic,
|
|
265081
265215
|
keyUri: options2.keyUri,
|
|
@@ -265091,20 +265225,23 @@ async function prepareAssetHubContext(options2) {
|
|
|
265091
265225
|
console.log(source_default.bold(`
|
|
265092
265226
|
\uD83D\uDCCB Configuration
|
|
265093
265227
|
`));
|
|
265228
|
+
console.log(source_default.gray(" Env: ") + source_default.white(environment.label));
|
|
265094
265229
|
console.log(source_default.gray(" RPC: ") + source_default.white(rpc));
|
|
265095
265230
|
console.log(source_default.gray(" Chain: ") + source_default.white("Polkadot Hub TestNet"));
|
|
265231
|
+
console.log(source_default.gray(" Token: ") + source_default.white(`${tokenInfo.nativeTokenSymbol} (${tokenInfo.nativeTokenDecimals} decimals)`));
|
|
265096
265232
|
console.log(source_default.gray(" Substrate: ") + source_default.white(substrateAddress));
|
|
265097
265233
|
console.log(source_default.gray(" EVM: ") + source_default.white(evmAddress));
|
|
265098
265234
|
console.log(source_default.gray(" Auth: ") + source_default.white(auth.resolvedFrom));
|
|
265099
265235
|
console.log(source_default.gray(" Account: ") + source_default.white(auth.account));
|
|
265100
|
-
const balance = await step("Checking balance", async () => getBalanceStatus(client, substrateAddress, minBalancePas));
|
|
265236
|
+
const balance = await step("Checking balance", async () => getBalanceStatus(client, substrateAddress, minBalancePas, tokenInfo.nativeTokenDecimals));
|
|
265101
265237
|
if (!balance.ok) {
|
|
265102
|
-
console.log(source_default.yellow(`⚠ Insufficient funds: ${formatNativeBalance(balance.current)}
|
|
265238
|
+
console.log(source_default.yellow(`⚠ Insufficient funds: ${formatNativeBalance(balance.current, tokenInfo.nativeTokenDecimals)} ${tokenInfo.nativeTokenSymbol} (required: ${formatNativeBalance(balance.required, tokenInfo.nativeTokenDecimals)} ${tokenInfo.nativeTokenSymbol})`));
|
|
265103
265239
|
throw new Error("Insufficient funds for operation");
|
|
265104
265240
|
}
|
|
265105
|
-
console.log(`✔ Balance: ${source_default.green(`${formatNativeBalance(balance.current)}
|
|
265241
|
+
console.log(`✔ Balance: ${source_default.green(`${formatNativeBalance(balance.current, tokenInfo.nativeTokenDecimals)} ${tokenInfo.nativeTokenSymbol}`)}`);
|
|
265106
265242
|
return {
|
|
265107
265243
|
useBulletin: false,
|
|
265244
|
+
environment: environment.id,
|
|
265108
265245
|
rpc,
|
|
265109
265246
|
minBalancePas,
|
|
265110
265247
|
keystorePath,
|
|
@@ -265113,15 +265250,20 @@ async function prepareAssetHubContext(options2) {
|
|
|
265113
265250
|
substrateAddress,
|
|
265114
265251
|
signer,
|
|
265115
265252
|
evmAddress,
|
|
265253
|
+
nativeTokenDecimals: tokenInfo.nativeTokenDecimals,
|
|
265254
|
+
nativeTokenSymbol: tokenInfo.nativeTokenSymbol,
|
|
265116
265255
|
client,
|
|
265117
265256
|
clientWrapper
|
|
265118
265257
|
};
|
|
265119
265258
|
}
|
|
265120
265259
|
async function prepareBulletinContext(options2) {
|
|
265121
|
-
const
|
|
265260
|
+
const environment = resolveDotnsEnvironment(resolveRpcEnvironment(options2));
|
|
265261
|
+
const rpc = resolveRpc(options2.bulletinRpc ?? options2.rpc, environment.id);
|
|
265122
265262
|
const minBalancePas = resolveMinBalancePas(options2.minBalance);
|
|
265123
265263
|
const keystorePath = resolveKeystorePath(options2.keystorePath);
|
|
265124
|
-
const
|
|
265264
|
+
const rawClient = await step(`Connecting RPC ${rpc}`, async () => createClient3(getWsProvider(rpc)));
|
|
265265
|
+
const client = rawClient.getTypedApi(bulletin_default);
|
|
265266
|
+
const tokenInfo = await step("Reading chain token metadata", async () => getChainTokenInfo(rawClient));
|
|
265125
265267
|
const auth = await step("Resolving account", async () => resolveAuthSource({
|
|
265126
265268
|
mnemonic: options2.mnemonic,
|
|
265127
265269
|
keyUri: options2.keyUri,
|
|
@@ -265135,8 +265277,10 @@ async function prepareBulletinContext(options2) {
|
|
|
265135
265277
|
console.log(source_default.bold(`
|
|
265136
265278
|
\uD83D\uDCCB Configuration
|
|
265137
265279
|
`));
|
|
265280
|
+
console.log(source_default.gray(" Env: ") + source_default.white(environment.label));
|
|
265138
265281
|
console.log(source_default.gray(" RPC: ") + source_default.white(rpc));
|
|
265139
265282
|
console.log(source_default.gray(" Chain: ") + source_default.white("Bulletin"));
|
|
265283
|
+
console.log(source_default.gray(" Token: ") + source_default.white(`${tokenInfo.nativeTokenSymbol} (${tokenInfo.nativeTokenDecimals} decimals)`));
|
|
265140
265284
|
console.log(source_default.gray(" Substrate: ") + source_default.white(substrateAddress));
|
|
265141
265285
|
console.log(source_default.gray(" Auth: ") + source_default.white(auth.resolvedFrom));
|
|
265142
265286
|
console.log(source_default.gray(" Account: ") + source_default.white(auth.account));
|
|
@@ -265144,13 +265288,14 @@ async function prepareBulletinContext(options2) {
|
|
|
265144
265288
|
const accountInfo = await client.query.System.Account.getValue(substrateAddress);
|
|
265145
265289
|
if (accountInfo?.data?.free !== undefined) {
|
|
265146
265290
|
const freeBalance = accountInfo.data.free;
|
|
265147
|
-
console.log(source_default.gray(" Balance: ") + source_default.white(formatNativeBalance(freeBalance)));
|
|
265291
|
+
console.log(source_default.gray(" Balance: ") + source_default.white(`${formatNativeBalance(freeBalance, tokenInfo.nativeTokenDecimals)} ${tokenInfo.nativeTokenSymbol}`));
|
|
265148
265292
|
}
|
|
265149
265293
|
} catch {
|
|
265150
265294
|
console.log(source_default.gray(" Balance: ") + source_default.yellow("(unavailable)"));
|
|
265151
265295
|
}
|
|
265152
265296
|
return {
|
|
265153
265297
|
useBulletin: true,
|
|
265298
|
+
environment: environment.id,
|
|
265154
265299
|
rpc,
|
|
265155
265300
|
minBalancePas,
|
|
265156
265301
|
keystorePath,
|
|
@@ -265158,6 +265303,8 @@ async function prepareBulletinContext(options2) {
|
|
|
265158
265303
|
account,
|
|
265159
265304
|
substrateAddress,
|
|
265160
265305
|
signer,
|
|
265306
|
+
nativeTokenDecimals: tokenInfo.nativeTokenDecimals,
|
|
265307
|
+
nativeTokenSymbol: tokenInfo.nativeTokenSymbol,
|
|
265161
265308
|
evmAddress: null,
|
|
265162
265309
|
client,
|
|
265163
265310
|
clientWrapper: null
|
|
@@ -266168,7 +266315,7 @@ var isValidSubstrateAddress = (address, ss58Format = 42) => {
|
|
|
266168
266315
|
// src/commands/lookup.ts
|
|
266169
266316
|
init_contractInteractions();
|
|
266170
266317
|
init_formatting();
|
|
266171
|
-
async function performDomainLookup(label, originSubstrateAddress, clientWrapper) {
|
|
266318
|
+
async function performDomainLookup(label, originSubstrateAddress, clientWrapper, nativeTokenDecimals, nativeTokenSymbol = "PAS") {
|
|
266172
266319
|
const fullyQualifiedDomainName = `${label}.dot`;
|
|
266173
266320
|
const namehashNode = namehash(fullyQualifiedDomainName);
|
|
266174
266321
|
const result = {
|
|
@@ -266237,10 +266384,10 @@ async function performDomainLookup(label, originSubstrateAddress, clientWrapper)
|
|
|
266237
266384
|
const freeBalance = accountInfo.data.free;
|
|
266238
266385
|
result.ownerBalance = {
|
|
266239
266386
|
substrate: ownerSubstrateAddress,
|
|
266240
|
-
free: formatNativeBalance(freeBalance)
|
|
266387
|
+
free: formatNativeBalance(freeBalance, nativeTokenDecimals)
|
|
266241
266388
|
};
|
|
266242
266389
|
console.log(source_default.gray(" substrate: ") + source_default.white(ownerSubstrateAddress));
|
|
266243
|
-
console.log(source_default.gray(" free: ") + source_default.white(formatNativeBalance(freeBalance)
|
|
266390
|
+
console.log(source_default.gray(" free: ") + source_default.white(`${formatNativeBalance(freeBalance, nativeTokenDecimals)} ${nativeTokenSymbol}`));
|
|
266244
266391
|
} catch {
|
|
266245
266392
|
console.log(source_default.gray(" balance: ") + source_default.yellow("unavailable"));
|
|
266246
266393
|
}
|
|
@@ -266355,8 +266502,18 @@ function convertToProofOfPersonhoodStatus(value3) {
|
|
|
266355
266502
|
return value3;
|
|
266356
266503
|
if (typeof value3 === "bigint")
|
|
266357
266504
|
return Number(value3);
|
|
266505
|
+
if (typeof value3 === "string")
|
|
266506
|
+
return Number(value3);
|
|
266358
266507
|
throw new Error(`Unexpected ProofOfPersonhoodStatus type: ${typeof value3}`);
|
|
266359
266508
|
}
|
|
266509
|
+
function isReadonlyArray(value3) {
|
|
266510
|
+
return Array.isArray(value3);
|
|
266511
|
+
}
|
|
266512
|
+
function getPersonhoodStatusValue(info2) {
|
|
266513
|
+
if (isReadonlyArray(info2))
|
|
266514
|
+
return info2[0];
|
|
266515
|
+
return info2.status;
|
|
266516
|
+
}
|
|
266360
266517
|
async function classifyDomainName(clientWrapper, originSubstrateAddress, label) {
|
|
266361
266518
|
const spinner = ora("Classifying name via PopRules").start();
|
|
266362
266519
|
try {
|
|
@@ -266465,8 +266622,8 @@ async function waitForMinimumCommitmentAge(clientWrapper, originSubstrateAddress
|
|
|
266465
266622
|
throw new Error(`Commitment still too new after ${waitSeconds + COMMITMENT_POLL_TIMEOUT_MS / 1000}s. The chain's block timestamps may be advancing slower than expected. Try increasing --commitment-buffer or DOTNS_COMMITMENT_BUFFER.`);
|
|
266466
266623
|
}
|
|
266467
266624
|
async function getUserProofOfPersonhoodStatus(clientWrapper, originSubstrateAddress, ownerAddress) {
|
|
266468
|
-
const
|
|
266469
|
-
return convertToProofOfPersonhoodStatus(
|
|
266625
|
+
const personhoodInfo = await withTimeout(performContractCall(clientWrapper, originSubstrateAddress, PERSONHOOD_PRECOMPILE_ADDRESS, PERSONHOOD_ABI, "personhoodStatus", [ownerAddress, PERSONHOOD_CONTEXT]), 30000, "personhoodStatus");
|
|
266626
|
+
return convertToProofOfPersonhoodStatus(getPersonhoodStatusValue(personhoodInfo));
|
|
266470
266627
|
}
|
|
266471
266628
|
async function getPriceAndValidateEligibility(clientWrapper, originSubstrateAddress, label, ownerAddress) {
|
|
266472
266629
|
const spinner = ora("Pricing via PopRules.price").start();
|
|
@@ -266525,11 +266682,11 @@ This means another user already owns the name without digits`);
|
|
|
266525
266682
|
throw error2;
|
|
266526
266683
|
}
|
|
266527
266684
|
}
|
|
266528
|
-
async function finalizeRegularRegistration(clientWrapper, substrateAddress, signer, registration, priceWei) {
|
|
266685
|
+
async function finalizeRegularRegistration(clientWrapper, substrateAddress, signer, registration, priceWei, nativeTokenDecimals) {
|
|
266529
266686
|
const spinner = ora(`Registering ${source_default.cyan(registration.label + ".dot")}`).start();
|
|
266530
266687
|
try {
|
|
266531
266688
|
const bufferedPaymentWei = priceWei * 110n / 100n;
|
|
266532
|
-
const bufferedPaymentNative = convertWeiToNative(bufferedPaymentWei);
|
|
266689
|
+
const bufferedPaymentNative = convertWeiToNative(bufferedPaymentWei, nativeTokenDecimals);
|
|
266533
266690
|
console.log(source_default.gray(" oracle: ") + source_default.green(formatWeiAsEther(priceWei) + " PAS"));
|
|
266534
266691
|
console.log(source_default.gray(" paying: ") + source_default.green(formatWeiAsEther(bufferedPaymentWei) + " PAS"));
|
|
266535
266692
|
const transactionHash = await submitContractTransaction(clientWrapper, CONTRACTS.DOTNS_REGISTRAR_CONTROLLER, bufferedPaymentNative, DOTNS_REGISTRAR_CONTROLLER_ABI, "register", [registration], substrateAddress, signer, spinner, "Registration");
|
|
@@ -266588,67 +266745,26 @@ async function verifyDomainOwnership(clientWrapper, originSubstrateAddress, labe
|
|
|
266588
266745
|
throw error2;
|
|
266589
266746
|
}
|
|
266590
266747
|
}
|
|
266591
|
-
async function
|
|
266592
|
-
|
|
266748
|
+
async function readUserStore(clientWrapper, originSubstrateAddress, ownerAddress) {
|
|
266749
|
+
return getAddress(await withTimeout(performContractCall(clientWrapper, originSubstrateAddress, CONTRACTS.STORE_FACTORY, STORE_FACTORY_ABI, "getUserStore", [ownerAddress]), 30000, "getUserStore"));
|
|
266750
|
+
}
|
|
266751
|
+
async function claimUserStoreIfNeeded(clientWrapper, substrateAddress, signer, ownerAddress) {
|
|
266752
|
+
const readSpinner = ora("Reading user store").start();
|
|
266753
|
+
let userStore;
|
|
266593
266754
|
try {
|
|
266594
|
-
|
|
266595
|
-
|
|
266596
|
-
console.log(source_default.gray(" store: ") + (storeAddress === zeroAddress ? source_default.yellow("not deployed") : source_default.cyan(storeAddress)));
|
|
266755
|
+
userStore = await readUserStore(clientWrapper, substrateAddress, ownerAddress);
|
|
266756
|
+
readSpinner.succeed("User store");
|
|
266597
266757
|
} catch (error2) {
|
|
266598
|
-
|
|
266758
|
+
readSpinner.fail("Failed to read user store");
|
|
266599
266759
|
throw error2;
|
|
266600
266760
|
}
|
|
266601
|
-
|
|
266602
|
-
|
|
266603
|
-
|
|
266604
|
-
|
|
266605
|
-
return;
|
|
266606
|
-
const spinner = ora("Checking Store authorizations").start();
|
|
266607
|
-
const [controllerAuthorized, registryAuthorized] = await Promise.all([
|
|
266608
|
-
Boolean(await performContractCall(clientWrapper, substrateAddress, storeAddress, STORE_ABI, "isAuthorized", [CONTRACTS.DOTNS_REGISTRAR_CONTROLLER])),
|
|
266609
|
-
Boolean(await performContractCall(clientWrapper, substrateAddress, storeAddress, STORE_ABI, "isAuthorized", [CONTRACTS.DOTNS_REGISTRY]))
|
|
266610
|
-
]);
|
|
266611
|
-
if (controllerAuthorized && registryAuthorized) {
|
|
266612
|
-
spinner.succeed("Store authorizations verified");
|
|
266613
|
-
console.log(source_default.gray(" controller: ") + source_default.white(CONTRACTS.DOTNS_REGISTRAR_CONTROLLER));
|
|
266614
|
-
console.log(source_default.gray(" registry: ") + source_default.white(CONTRACTS.DOTNS_REGISTRY));
|
|
266615
|
-
return;
|
|
266616
|
-
}
|
|
266617
|
-
spinner.warn("Store authorizations need update");
|
|
266618
|
-
if (!controllerAuthorized) {
|
|
266619
|
-
const controllerSpinner = ora("Authorizing registrar controller as Store writer").start();
|
|
266620
|
-
const tx = await submitContractTransaction(clientWrapper, storeAddress, 0n, STORE_ABI, "authorizeStore", [CONTRACTS.DOTNS_REGISTRAR_CONTROLLER], substrateAddress, signer, controllerSpinner, "Authorize controller");
|
|
266621
|
-
console.log(source_default.gray(" tx: ") + source_default.blue(tx));
|
|
266622
|
-
console.log(source_default.gray(" controller: ") + source_default.white(CONTRACTS.DOTNS_REGISTRAR_CONTROLLER));
|
|
266623
|
-
}
|
|
266624
|
-
if (!registryAuthorized) {
|
|
266625
|
-
const registrySpinner = ora("Authorizing registry as Store writer").start();
|
|
266626
|
-
const tx = await submitContractTransaction(clientWrapper, storeAddress, 0n, STORE_ABI, "authorizeStore", [CONTRACTS.DOTNS_REGISTRY], substrateAddress, signer, registrySpinner, "Authorize registry");
|
|
266761
|
+
if (userStore === zeroAddress) {
|
|
266762
|
+
const claimSpinner = ora("Claiming user store").start();
|
|
266763
|
+
const tx = await submitContractTransaction(clientWrapper, CONTRACTS.STORE_FACTORY, 0n, STORE_FACTORY_ABI, "claimUserStore", [], substrateAddress, signer, claimSpinner, "Claim user store");
|
|
266764
|
+
userStore = await readUserStore(clientWrapper, substrateAddress, ownerAddress);
|
|
266627
266765
|
console.log(source_default.gray(" tx: ") + source_default.blue(tx));
|
|
266628
|
-
console.log(source_default.gray(" registry: ") + source_default.white(CONTRACTS.DOTNS_REGISTRY));
|
|
266629
|
-
}
|
|
266630
|
-
}
|
|
266631
|
-
async function setUserProofOfPersonhoodStatus(clientWrapper, substrateAddress, signer, ownerAddress, label, status) {
|
|
266632
|
-
const displayName = label ? source_default.cyan(label) : "account";
|
|
266633
|
-
const checkSpinner = ora(`Checking current PoP status for ${displayName}`).start();
|
|
266634
|
-
try {
|
|
266635
|
-
await clientWrapper.ensureAccountMapped(substrateAddress, signer);
|
|
266636
|
-
const currentStatus = await getUserProofOfPersonhoodStatus(clientWrapper, substrateAddress, ownerAddress);
|
|
266637
|
-
checkSpinner.succeed("Current PoP status");
|
|
266638
|
-
console.log(source_default.gray(" current: ") + source_default.white(ProofOfPersonhoodStatus[currentStatus]));
|
|
266639
|
-
console.log(source_default.gray(" desired: ") + source_default.white(ProofOfPersonhoodStatus[status]));
|
|
266640
|
-
if (currentStatus === status) {
|
|
266641
|
-
console.log(source_default.yellow(` ↳ Status already set to ${ProofOfPersonhoodStatus[status]}, skipping update`));
|
|
266642
|
-
return;
|
|
266643
|
-
}
|
|
266644
|
-
const updateSpinner = ora(`Setting PoP status for ${displayName} to ${source_default.yellow(ProofOfPersonhoodStatus[status])}`).start();
|
|
266645
|
-
const transactionHash = await submitContractTransaction(clientWrapper, CONTRACTS.DOTNS_RULES, 0n, POP_RULES_ABI, "setUserPopStatus", [status], substrateAddress, signer, updateSpinner, "PoP status update");
|
|
266646
|
-
console.log(source_default.gray(" tx: ") + source_default.blue(transactionHash));
|
|
266647
|
-
} catch (error2) {
|
|
266648
|
-
if (checkSpinner.isSpinning)
|
|
266649
|
-
checkSpinner.fail("Failed to check PoP status");
|
|
266650
|
-
throw error2;
|
|
266651
266766
|
}
|
|
266767
|
+
console.log(source_default.gray(" user store: ") + source_default.cyan(userStore));
|
|
266652
266768
|
}
|
|
266653
266769
|
|
|
266654
266770
|
// src/cli/commands/lookup.ts
|
|
@@ -266778,16 +266894,6 @@ function generateRandomLabel(status) {
|
|
|
266778
266894
|
}
|
|
266779
266895
|
throw new Error("Cannot auto-generate Reserved names");
|
|
266780
266896
|
}
|
|
266781
|
-
function parseProofOfPersonhoodStatus(statusString) {
|
|
266782
|
-
const normalized = statusString.toLowerCase();
|
|
266783
|
-
if (normalized === "none" || normalized === "nostatus")
|
|
266784
|
-
return 0 /* NoStatus */;
|
|
266785
|
-
if (normalized === "lite" || normalized === "poplite")
|
|
266786
|
-
return 1 /* ProofOfPersonhoodLite */;
|
|
266787
|
-
if (normalized === "full" || normalized === "popfull")
|
|
266788
|
-
return 2 /* ProofOfPersonhoodFull */;
|
|
266789
|
-
throw new Error("Invalid status: use none, lite, or full");
|
|
266790
|
-
}
|
|
266791
266897
|
|
|
266792
266898
|
// src/cli/commands/register.ts
|
|
266793
266899
|
function resolveTransferDestination(options2) {
|
|
@@ -266829,9 +266935,7 @@ async function executeRegistration(options2 = {}) {
|
|
|
266829
266935
|
}
|
|
266830
266936
|
const context = await prepareAssetHubContext(options2);
|
|
266831
266937
|
const { clientWrapper, substrateAddress, signer, evmAddress } = context;
|
|
266832
|
-
const
|
|
266833
|
-
const popStatusConfig = statusWasProvided ? { mode: "set", status: parseProofOfPersonhoodStatus(options2.status ?? "none") } : { mode: "unchanged" };
|
|
266834
|
-
const label = options2.name ?? generateRandomLabel(popStatusConfig.mode === "set" ? popStatusConfig.status : 0 /* NoStatus */);
|
|
266938
|
+
const label = options2.name ?? generateRandomLabel(0 /* NoStatus */);
|
|
266835
266939
|
console.log(source_default.gray(" Mode: ") + source_default.yellow(options2.governance ? "Governance registration" : "Regular registration"));
|
|
266836
266940
|
console.log(source_default.gray(" Label: ") + source_default.cyan(label));
|
|
266837
266941
|
console.log(source_default.gray(" Domain: ") + source_default.cyan(label + ".dot"));
|
|
@@ -266840,7 +266944,7 @@ async function executeRegistration(options2 = {}) {
|
|
|
266840
266944
|
if (options2.governance) {
|
|
266841
266945
|
await executeGovernanceRegistration(clientWrapper, substrateAddress, signer, evmAddress, label, transferDestination, options2.commitmentBuffer);
|
|
266842
266946
|
} else {
|
|
266843
|
-
await executeRegularRegistration(clientWrapper, substrateAddress, signer, evmAddress, label,
|
|
266947
|
+
await executeRegularRegistration(clientWrapper, substrateAddress, signer, evmAddress, label, context.nativeTokenDecimals, options2.reverse ?? false, transferDestination, options2.commitmentBuffer);
|
|
266844
266948
|
}
|
|
266845
266949
|
console.log(`
|
|
266846
266950
|
${source_default.bold.green("═══════════════════════════════════════")}`);
|
|
@@ -266900,32 +267004,27 @@ async function executeGovernanceRegistration(clientWrapper, substrateAddress, si
|
|
|
266900
267004
|
await step("Waiting commitment age", async () => waitForMinimumCommitmentAge(clientWrapper, substrateAddress, commitment, commitmentBuffer));
|
|
266901
267005
|
await step("Finalizing registration", async () => finalizeGovernanceRegistration(clientWrapper, substrateAddress, signer, registration));
|
|
266902
267006
|
await step("Verifying ownership", async () => verifyDomainOwnership(clientWrapper, substrateAddress, label, evmAddress));
|
|
266903
|
-
await step("
|
|
266904
|
-
await step("Ensuring store authorizations", async () => ensureStoreAuthorizations2(clientWrapper, substrateAddress, signer, evmAddress));
|
|
267007
|
+
await step("Claiming user store", async () => claimUserStoreIfNeeded(clientWrapper, substrateAddress, signer, evmAddress));
|
|
266905
267008
|
if (transferDestination) {
|
|
266906
267009
|
const recipient = await step("Resolving recipient", async () => resolveTransferRecipient(clientWrapper, substrateAddress, transferDestination));
|
|
266907
267010
|
await step("Transferring domain", async () => transferDomain(clientWrapper, substrateAddress, signer, evmAddress, recipient, label));
|
|
266908
267011
|
await step("Verifying ownership", async () => verifyDomainOwnership(clientWrapper, substrateAddress, label, recipient));
|
|
266909
267012
|
}
|
|
266910
267013
|
}
|
|
266911
|
-
async function executeRegularRegistration(clientWrapper, substrateAddress, signer, evmAddress, label,
|
|
267014
|
+
async function executeRegularRegistration(clientWrapper, substrateAddress, signer, evmAddress, label, nativeTokenDecimals, enableReverseRecord, transferDestination, commitmentBuffer) {
|
|
266912
267015
|
console.log(source_default.bold(`
|
|
266913
267016
|
\uD83E\uDDFE Regular registration (commit-reveal)
|
|
266914
267017
|
`));
|
|
266915
267018
|
validateDomainLabel(label);
|
|
266916
267019
|
const classification = await step("Classifying name", async () => classifyDomainName(clientWrapper, substrateAddress, label));
|
|
266917
|
-
if (popStatusConfig.mode === "set") {
|
|
266918
|
-
await step("Setting PoP status", async () => setUserProofOfPersonhoodStatus(clientWrapper, substrateAddress, signer, evmAddress, label, popStatusConfig.status));
|
|
266919
|
-
}
|
|
266920
267020
|
await step("Checking availability", async () => ensureDomainNotRegistered(clientWrapper, substrateAddress, label));
|
|
266921
267021
|
const { commitment, registration } = await step("Generating commitment", async () => generateCommitment(clientWrapper, substrateAddress, label, evmAddress, enableReverseRecord));
|
|
266922
267022
|
await step("Submitting commitment", async () => submitCommitment(clientWrapper, substrateAddress, signer, commitment));
|
|
266923
267023
|
await step("Waiting commitment age", async () => waitForMinimumCommitmentAge(clientWrapper, substrateAddress, commitment, commitmentBuffer));
|
|
266924
267024
|
const pricing = await step("Pricing and eligibility", async () => getPriceAndValidateEligibility(clientWrapper, substrateAddress, label, evmAddress));
|
|
266925
|
-
await step("Finalizing registration", async () => finalizeRegularRegistration(clientWrapper, substrateAddress, signer, registration, pricing.priceWei));
|
|
267025
|
+
await step("Finalizing registration", async () => finalizeRegularRegistration(clientWrapper, substrateAddress, signer, registration, pricing.priceWei, nativeTokenDecimals));
|
|
266926
267026
|
await step("Verifying ownership", async () => verifyDomainOwnership(clientWrapper, substrateAddress, label, evmAddress));
|
|
266927
|
-
await step("
|
|
266928
|
-
await step("Ensuring store authorizations", async () => ensureStoreAuthorizations2(clientWrapper, substrateAddress, signer, evmAddress));
|
|
267027
|
+
await step("Claiming user store", async () => claimUserStoreIfNeeded(clientWrapper, substrateAddress, signer, evmAddress));
|
|
266929
267028
|
if (transferDestination) {
|
|
266930
267029
|
const recipient = await step("Resolving recipient", async () => resolveTransferRecipient(clientWrapper, substrateAddress, transferDestination));
|
|
266931
267030
|
await step("Transferring domain", async () => transferDomain(clientWrapper, substrateAddress, signer, evmAddress, recipient, label));
|
|
@@ -266934,9 +267033,14 @@ async function executeRegularRegistration(clientWrapper, substrateAddress, signe
|
|
|
266934
267033
|
}
|
|
266935
267034
|
|
|
266936
267035
|
// src/cli/commands/lookup.ts
|
|
266937
|
-
function
|
|
266938
|
-
const
|
|
266939
|
-
|
|
267036
|
+
async function createReadOnlyChainContext(rpc) {
|
|
267037
|
+
const rawClient = createClient3(getWsProvider(rpc));
|
|
267038
|
+
const client = rawClient.getTypedApi(paseo_default);
|
|
267039
|
+
const tokenInfo = await getChainTokenInfo(rawClient);
|
|
267040
|
+
return {
|
|
267041
|
+
clientWrapper: new ReviveClientWrapper(client),
|
|
267042
|
+
...tokenInfo
|
|
267043
|
+
};
|
|
266940
267044
|
}
|
|
266941
267045
|
function hasAnyAuthHint(opts) {
|
|
266942
267046
|
return opts.mnemonic != null && String(opts.mnemonic).length > 0 || opts.keyUri != null && String(opts.keyUri).length > 0 || opts.keystorePath != null && String(opts.keystorePath).length > 0 || opts.account != null && String(opts.account).length > 0 || opts.password != null && String(opts.password).length > 0;
|
|
@@ -266949,8 +267053,10 @@ function withReadOnlyPasswordFallback(opts) {
|
|
|
266949
267053
|
return opts;
|
|
266950
267054
|
}
|
|
266951
267055
|
async function prepareReadOnlyContext(options2) {
|
|
266952
|
-
const
|
|
266953
|
-
const
|
|
267056
|
+
const environment = resolveDotnsEnvironment(options2.env ?? options2.network);
|
|
267057
|
+
const rpc = resolveRpc(options2.rpc, environment.id);
|
|
267058
|
+
const readOnlyContext = await step(`Connecting RPC ${rpc}`, async () => createReadOnlyChainContext(rpc));
|
|
267059
|
+
const { clientWrapper, nativeTokenDecimals, nativeTokenSymbol } = readOnlyContext;
|
|
266954
267060
|
const auth = await step("Resolving read-only account", async () => {
|
|
266955
267061
|
if (hasAnyAuthHint(options2)) {
|
|
266956
267062
|
const merged = withReadOnlyPasswordFallback(options2);
|
|
@@ -266975,8 +267081,18 @@ async function prepareReadOnlyContext(options2) {
|
|
|
266975
267081
|
const evmAddress = await step("Resolving EVM address", async () => clientWrapper.getEvmAddress(keypair3.address));
|
|
266976
267082
|
console.log(source_default.gray(`
|
|
266977
267083
|
RPC: `) + source_default.white(rpc));
|
|
267084
|
+
console.log(source_default.gray(" Env: ") + source_default.white(environment.label));
|
|
267085
|
+
console.log(source_default.gray(" Token: ") + source_default.white(`${nativeTokenSymbol} (${nativeTokenDecimals} decimals)`));
|
|
266978
267086
|
console.log(source_default.gray(" Account: ") + source_default.white(keypair3.address));
|
|
266979
|
-
return {
|
|
267087
|
+
return {
|
|
267088
|
+
clientWrapper,
|
|
267089
|
+
account: { address: keypair3.address },
|
|
267090
|
+
rpc,
|
|
267091
|
+
environment: environment.id,
|
|
267092
|
+
nativeTokenDecimals,
|
|
267093
|
+
nativeTokenSymbol,
|
|
267094
|
+
evmAddress
|
|
267095
|
+
};
|
|
266980
267096
|
}
|
|
266981
267097
|
async function ensureAccountMappedWhenAuthenticated(clientWrapper, keypair3, resolvedFrom) {
|
|
266982
267098
|
if (resolvedFrom === "default")
|
|
@@ -267026,12 +267142,12 @@ Error: Domain label is required
|
|
|
267026
267142
|
`));
|
|
267027
267143
|
process.exit(1);
|
|
267028
267144
|
}
|
|
267029
|
-
const { clientWrapper, account } = await maybeQuiet(jsonOutput, () => prepareReadOnlyContext(merged));
|
|
267145
|
+
const { clientWrapper, account, nativeTokenDecimals, nativeTokenSymbol } = await maybeQuiet(jsonOutput, () => prepareReadOnlyContext(merged));
|
|
267030
267146
|
if (!jsonOutput)
|
|
267031
267147
|
console.log(source_default.bold(`
|
|
267032
267148
|
▶ Domain Lookup
|
|
267033
267149
|
`));
|
|
267034
|
-
const result = await maybeQuiet(jsonOutput, () => performDomainLookup(label, account.address, clientWrapper));
|
|
267150
|
+
const result = await maybeQuiet(jsonOutput, () => performDomainLookup(label, account.address, clientWrapper, nativeTokenDecimals, nativeTokenSymbol));
|
|
267035
267151
|
if (jsonOutput) {
|
|
267036
267152
|
console.log(JSON.stringify(result));
|
|
267037
267153
|
} else {
|
|
@@ -267061,12 +267177,12 @@ Error: Domain label is required
|
|
|
267061
267177
|
try {
|
|
267062
267178
|
const merged = { ...options2 ?? {}, ...getAuthOptions(cmd) };
|
|
267063
267179
|
const jsonOutput = getJsonFlag(cmd);
|
|
267064
|
-
const { clientWrapper, account } = await maybeQuiet(jsonOutput, () => prepareReadOnlyContext(merged));
|
|
267180
|
+
const { clientWrapper, account, nativeTokenDecimals, nativeTokenSymbol } = await maybeQuiet(jsonOutput, () => prepareReadOnlyContext(merged));
|
|
267065
267181
|
if (!jsonOutput)
|
|
267066
267182
|
console.log(source_default.bold(`
|
|
267067
267183
|
▶ Domain Lookup
|
|
267068
267184
|
`));
|
|
267069
|
-
const result = await maybeQuiet(jsonOutput, () => performDomainLookup(merged.name, account.address, clientWrapper));
|
|
267185
|
+
const result = await maybeQuiet(jsonOutput, () => performDomainLookup(merged.name, account.address, clientWrapper, nativeTokenDecimals, nativeTokenSymbol));
|
|
267070
267186
|
if (jsonOutput) {
|
|
267071
267187
|
console.log(JSON.stringify(result));
|
|
267072
267188
|
} else {
|
|
@@ -267376,6 +267492,19 @@ function attachTextCommands(root) {
|
|
|
267376
267492
|
|
|
267377
267493
|
// src/cli/commands/pop.ts
|
|
267378
267494
|
init_source();
|
|
267495
|
+
function formatPopStatus(status) {
|
|
267496
|
+
switch (status) {
|
|
267497
|
+
case 1 /* ProofOfPersonhoodLite */:
|
|
267498
|
+
return "lite";
|
|
267499
|
+
case 2 /* ProofOfPersonhoodFull */:
|
|
267500
|
+
return "full";
|
|
267501
|
+
case 3 /* Reserved */:
|
|
267502
|
+
return "reserved";
|
|
267503
|
+
case 0 /* NoStatus */:
|
|
267504
|
+
default:
|
|
267505
|
+
return "none";
|
|
267506
|
+
}
|
|
267507
|
+
}
|
|
267379
267508
|
async function readPopInfo(options2) {
|
|
267380
267509
|
const context = await prepareReadOnlyContext(options2);
|
|
267381
267510
|
const status = await getUserProofOfPersonhoodStatus(context.clientWrapper, context.account.address, context.evmAddress);
|
|
@@ -267386,31 +267515,9 @@ async function readPopInfo(options2) {
|
|
|
267386
267515
|
};
|
|
267387
267516
|
}
|
|
267388
267517
|
function attachPopCommands(root) {
|
|
267389
|
-
const popCommand = root.command("pop").description("ProofOfPersonhood status
|
|
267518
|
+
const popCommand = root.command("pop").description("ProofOfPersonhood status lookup");
|
|
267390
267519
|
addAuthOptions(popCommand);
|
|
267391
|
-
const
|
|
267392
|
-
addAuthOptions(setPopCommand).action(async (status, options2, command) => {
|
|
267393
|
-
const jsonOutput = getJsonFlag(command);
|
|
267394
|
-
try {
|
|
267395
|
-
const mergedOptions = getMergedOptions(command, options2);
|
|
267396
|
-
const context = await maybeQuiet(jsonOutput, () => prepareContext(mergedOptions));
|
|
267397
|
-
const parsedStatus = parseProofOfPersonhoodStatus(status);
|
|
267398
|
-
await maybeQuiet(jsonOutput, () => setUserProofOfPersonhoodStatus(context.clientWrapper, context.substrateAddress, context.signer, context.evmAddress, "", parsedStatus));
|
|
267399
|
-
if (!emitJsonResult(jsonOutput, {
|
|
267400
|
-
ok: true,
|
|
267401
|
-
status: ProofOfPersonhoodStatus[parsedStatus].toLowerCase(),
|
|
267402
|
-
statusCode: parsedStatus
|
|
267403
|
-
})) {
|
|
267404
|
-
console.log(source_default.green(`
|
|
267405
|
-
✓ PoP Status Updated
|
|
267406
|
-
`));
|
|
267407
|
-
}
|
|
267408
|
-
process.exit(0);
|
|
267409
|
-
} catch (error2) {
|
|
267410
|
-
handleCommandError(jsonOutput, error2);
|
|
267411
|
-
}
|
|
267412
|
-
});
|
|
267413
|
-
const infoCommand = popCommand.command("info").description("Display ProofOfPersonhood status").option("--json", "Output result as JSON (suppresses all other output)", false);
|
|
267520
|
+
const infoCommand = popCommand.command("info").alias("status").description("Display ProofOfPersonhood status from the personhood precompile").option("--json", "Output result as JSON (suppresses all other output)", false);
|
|
267414
267521
|
addAuthOptions(infoCommand).action(async (options2, command) => {
|
|
267415
267522
|
const jsonOutput = getJsonFlag(command);
|
|
267416
267523
|
try {
|
|
@@ -267419,7 +267526,7 @@ function attachPopCommands(root) {
|
|
|
267419
267526
|
if (!emitJsonResult(jsonOutput, {
|
|
267420
267527
|
substrate: info2.substrate,
|
|
267421
267528
|
evm: info2.evm,
|
|
267422
|
-
status:
|
|
267529
|
+
status: formatPopStatus(info2.status),
|
|
267423
267530
|
statusCode: info2.status
|
|
267424
267531
|
})) {
|
|
267425
267532
|
console.log(source_default.bold(`
|
|
@@ -267427,7 +267534,7 @@ function attachPopCommands(root) {
|
|
|
267427
267534
|
`));
|
|
267428
267535
|
console.log(source_default.gray(" substrate: ") + source_default.white(info2.substrate));
|
|
267429
267536
|
console.log(source_default.gray(" evm: ") + source_default.white(info2.evm));
|
|
267430
|
-
console.log(source_default.gray(" status: ") + source_default.white(
|
|
267537
|
+
console.log(source_default.gray(" status: ") + source_default.white(formatPopStatus(info2.status)));
|
|
267431
267538
|
console.log(source_default.green(`
|
|
267432
267539
|
✓ PoP Status Retrieved
|
|
267433
267540
|
`));
|
|
@@ -267453,12 +267560,11 @@ function resolveCommitmentBuffer(cliValue) {
|
|
|
267453
267560
|
}
|
|
267454
267561
|
function attachRegisterCommand(root) {
|
|
267455
267562
|
const registerCommand = root.command("register").description("Domain registration commands");
|
|
267456
|
-
const domainCommand = registerCommand.command("domain").description("Register a new base domain").option("-n, --name <label>", "Domain label to register (without .dot)").option("-
|
|
267563
|
+
const domainCommand = registerCommand.command("domain").description("Register a new base domain").option("-n, --name <label>", "Domain label to register (without .dot)").option("-r, --reverse", "Enable reverse record registration", false).option("-g, --governance", "Use governance registration path", false).option("-o, --owner <address>", "Owner address (EVM or Substrate, or label)").option("--transfer", "Transfer domain after registration", false).option("--to <destination>", "Transfer destination (EVM address, SS58, or domain label)").option("--cb, --commitment-buffer <seconds>", `Extra seconds to wait after minCommitmentAge (default: ${DEFAULT_COMMITMENT_BUFFER_SECONDS}, env: DOTNS_COMMITMENT_BUFFER)`).option("--json", "Output result as JSON (suppresses all other output)", false).action(async (options2, cmd) => {
|
|
267457
267564
|
const jsonOutput = getJsonFlag(cmd);
|
|
267458
267565
|
try {
|
|
267459
267566
|
const merged = { ...options2, ...getAuthOptions(cmd) };
|
|
267460
267567
|
const allOpts = typeof cmd.optsWithGlobals === "function" ? cmd.optsWithGlobals() : cmd.opts();
|
|
267461
|
-
merged.__statusProvided = allOpts?.status != null;
|
|
267462
267568
|
merged.commitmentBuffer = resolveCommitmentBuffer(allOpts?.commitmentBuffer);
|
|
267463
267569
|
if (merged.transfer === true && !merged.to) {
|
|
267464
267570
|
throw new Error("Missing transfer destination: use --to <evm|ss58|label>");
|
|
@@ -267578,7 +267684,8 @@ function attachAccountCommands(root) {
|
|
|
267578
267684
|
addAuthOptions(infoCommand).action(async (options2, command) => {
|
|
267579
267685
|
try {
|
|
267580
267686
|
const mergedOptions = getMergedOptions(command, options2);
|
|
267581
|
-
const
|
|
267687
|
+
const environment = mergedOptions.env ?? mergedOptions.network;
|
|
267688
|
+
const rpc = resolveRpc(mergedOptions.rpc, environment);
|
|
267582
267689
|
const keystorePath = resolveKeystorePath(mergedOptions.keystorePath);
|
|
267583
267690
|
const client = await step(`Connecting RPC ${rpc}`, async () => createClient3(getWsProvider(rpc)).getTypedApi(paseo_default));
|
|
267584
267691
|
const clientWrapper = new ReviveClientWrapper(client);
|
|
@@ -267594,7 +267701,7 @@ function attachAccountCommands(root) {
|
|
|
267594
267701
|
console.log(source_default.gray(`
|
|
267595
267702
|
Auth: `) + source_default.white(auth.resolvedFrom));
|
|
267596
267703
|
console.log(source_default.gray(" Account: ") + source_default.white(auth.account));
|
|
267597
|
-
await displayAccountInformation(client, evmAddress, context.substrateAddress);
|
|
267704
|
+
await displayAccountInformation(client, evmAddress, context.substrateAddress, context.nativeTokenDecimals, context.nativeTokenSymbol);
|
|
267598
267705
|
console.log(source_default.green(`
|
|
267599
267706
|
✓ Complete
|
|
267600
267707
|
`));
|
|
@@ -267610,7 +267717,8 @@ function attachAccountCommands(root) {
|
|
|
267610
267717
|
addAuthOptions(mapCommand).action(async (options2, command) => {
|
|
267611
267718
|
try {
|
|
267612
267719
|
const mergedOptions = getMergedOptions(command, options2);
|
|
267613
|
-
const
|
|
267720
|
+
const environment = mergedOptions.env ?? mergedOptions.network;
|
|
267721
|
+
const rpc = resolveRpc(mergedOptions.rpc, environment);
|
|
267614
267722
|
const client = await step(`Connecting RPC ${rpc}`, async () => createClient3(getWsProvider(rpc)).getTypedApi(paseo_default));
|
|
267615
267723
|
const clientWrapper = new ReviveClientWrapper(client);
|
|
267616
267724
|
const context = await prepareContext(mergedOptions);
|
|
@@ -267713,7 +267821,7 @@ function attachAccountCommands(root) {
|
|
|
267713
267821
|
});
|
|
267714
267822
|
}
|
|
267715
267823
|
// package.json
|
|
267716
|
-
var version5 = "0.6.
|
|
267824
|
+
var version5 = "0.6.3";
|
|
267717
267825
|
|
|
267718
267826
|
// src/cli/commands/store.ts
|
|
267719
267827
|
init_source();
|
|
@@ -268022,10 +268130,12 @@ function attachStoreCommands(root) {
|
|
|
268022
268130
|
}
|
|
268023
268131
|
|
|
268024
268132
|
// src/cli/program.ts
|
|
268133
|
+
init_env();
|
|
268025
268134
|
function createProgram() {
|
|
268026
268135
|
const program2 = new Command;
|
|
268027
268136
|
program2.name("dotns").description("dotns developer CLI");
|
|
268028
268137
|
program2.version(version5, "-v, --version");
|
|
268138
|
+
program2.option("--env <environment>", `DotNS environment: paseo-v2 (env: ${ENV.DOTNS_ENV})`).option("--network <environment>", "Alias for --env");
|
|
268029
268139
|
attachPopCommands(program2);
|
|
268030
268140
|
attachAuthCommands(program2);
|
|
268031
268141
|
attachRegisterCommand(program2);
|