From bab42a5e6eb2bd369112ca74b85763fed1e19d90 Mon Sep 17 00:00:00 2001 From: Camila Sosa Morales Date: Wed, 14 Jun 2023 13:01:44 -0300 Subject: [PATCH] feat: add ipfs hash in mint form (#267) * feat: add ipfs hash in mint form * chore: remove harcoded verifier from mint form --- .../ethereum/contracts/FleekERC721.json | 287 +++++++++++------- .../ethereum/hooks/ethereum-hooks.tsx | 1 + .../integrations/ethereum/lib/fleek-erc721.ts | 2 + ui/src/providers/connectkit-provider.tsx | 4 +- .../views/components-test/combobox-test.tsx | 2 +- .../mint/nfa-step/form-step/fields/index.ts | 1 + .../form-step/fields/ipfs-hash-field.tsx | 17 ++ .../nfa-step/form-step/mint-form.context.ts | 2 + .../mint/nfa-step/form-step/mint-form.tsx | 11 +- .../nfa-step/verify-step/select-verifier.tsx | 1 + 10 files changed, 218 insertions(+), 110 deletions(-) create mode 100644 ui/src/views/mint/nfa-step/form-step/fields/ipfs-hash-field.tsx diff --git a/ui/src/integrations/ethereum/contracts/FleekERC721.json b/ui/src/integrations/ethereum/contracts/FleekERC721.json index 1bf5681..103c42d 100644 --- a/ui/src/integrations/ethereum/contracts/FleekERC721.json +++ b/ui/src/integrations/ethereum/contracts/FleekERC721.json @@ -1,9 +1,15 @@ { - "timestamp": "3/17/2023, 3:01:31 PM", - "address": "0x8795608346Eb475E42e69F1281008AEAa522479D", - "transactionHash": "0x626662cdb0902646dd70d3ef50abb00c12614d8e572b175f2e45a40a73d4954e", - "gasPrice": 6790794151, + "buildId": "ac10169ad2aa4aa05d336485b75a1a2f", + "timestamp": "5/17/2023, 5:27:20 PM", + "address": "0xdAbc1E0f926545a2898c644870FA4DC39E83EB70", + "transactionHash": "0xfc68decd1ce3d80c8bb94ef0c715792ef0fc555e9b63b85945841349a5640918", + "gasPrice": 1746000023, "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, { "inputs": [], "name": "AccessPointAlreadyExists", @@ -49,6 +55,11 @@ "name": "MustBeAccessPointOwner", "type": "error" }, + { + "inputs": [], + "name": "MustBeENSOwner", + "type": "error" + }, { "inputs": [ { @@ -482,9 +493,9 @@ }, { "indexed": false, - "internalType": "string[2]", + "internalType": "string[4]", "name": "value", - "type": "string[2]" + "type": "string[4]" }, { "indexed": true, @@ -597,6 +608,12 @@ "name": "gitRepository", "type": "string" }, + { + "indexed": false, + "internalType": "string", + "name": "ipfsHash", + "type": "string" + }, { "indexed": false, "internalType": "string", @@ -800,25 +817,6 @@ "name": "Withdrawn", "type": "event" }, - { - "inputs": [ - { - "internalType": "enum FleekBilling.Billing", - "name": "", - "type": "uint8" - } - ], - "name": "_billings", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1237,6 +1235,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "isTokenVerified", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1261,7 +1278,7 @@ }, { "internalType": "string", - "name": "ENS", + "name": "ens", "type": "string" }, { @@ -1274,6 +1291,11 @@ "name": "gitRepository", "type": "string" }, + { + "internalType": "string", + "name": "ipfsHash", + "type": "string" + }, { "internalType": "string", "name": "logo", @@ -1592,6 +1614,16 @@ "internalType": "string", "name": "_gitRepository", "type": "string" + }, + { + "internalType": "string", + "name": "_ipfsHash", + "type": "string" + }, + { + "internalType": "string", + "name": "_domain", + "type": "string" } ], "name": "setTokenBuild", @@ -1730,6 +1762,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "verified", + "type": "bool" + } + ], + "name": "setTokenVerified", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1837,12 +1887,12 @@ "type": "function" } ], - "bytecode": "0x608080604052346100175761562a90816200001e8239f35b50600080fdfe6040608081526004361015610015575b50600080fd5b600090813560e01c806301468deb1461088957806301ffc9a71461086d57806302dba24d146104f057806306fdde0314610851578063081812fc14610835578063095ea7b31461081d5780630a212d2f1461080557806323b872dd146107ed578063246a908b146107d557806327dc5cec146107b95780632d957aad146107a15780633806f152146107895780633ccfd60b146107725780633e2332051461075a5780633f4ba83a1461074357806342842e0e1461072b57806342966c681461071457806342e44bbf146106fc5780635aa6ab3b146106e45780636352211e146106c857806370a08231146106ac57806372c299c414610677578063736d323a146106605780637469a03b1461064957806378278cca1461063157806383c4c00d146106155780638456cb59146105fe5780638a2e25be146105e65780638c3c0a44146105ce57806394ec65c5146105b757806395d89b411461059b578063a09a16011461056b578063a22cb46514610553578063a27d0b271461053b578063a397c83014610524578063aad045a21461050c578063ac8cf285146104f0578063b187bd26146104c4578063b20b94f1146104ac578063b30437a014610499578063b42dbe3814610439578063b88d4fde1461041e578063b948a3c514610406578063ba4c458a146103ee578063c87b56dd146103c7578063cdb0e89e146103af578063d6c084ce1461037c578063d7a75be114610360578063e4b50cb814610330578063e94472501461030c578063e985e9c51461029f578063eb5fd26b146102875763f931517714610269575061000f565b346102835761028061027a36610b90565b90613348565b51f35b5080fd5b50346102835761028061029936611128565b90613b09565b50346102835761030891506102f76102f06102d96102bc366110f5565b6001600160a01b039091166000908152606a602052604090209091565b9060018060a01b0316600052602052604060002090565b5460ff1690565b905190151581529081906020820190565b0390f35b50346102835761030891506102f76102f06102d961032936610be9565b9190611c16565b503461028357610308915061034c610347366109e5565b61316e565b949795969390939291925197889788611085565b50346102835761030891506102f761037736610bbf565b611e70565b5061030891506103a061038e36610f72565b999890989791979692969593956127f2565b90519081529081906020820190565b5034610283576102806103c136610b90565b9061369c565b50346102835761030891506103e36103de366109e5565b612ceb565b9051918291826109d4565b50346102835761028061040036610ea4565b91611ffc565b50346102835761028061041836610b90565b90613990565b50346102835761028061043036610e34565b92919091611768565b50346102835761030891506102f76102f06104946102d9610459366108d7565b939091610485610473826000526099602052604060002090565b5491600052609a602052604060002090565b90600052602052604060002090565b611c52565b506102806104a636610b90565b906141ed565b5034610283576102806104be36610c8f565b90614732565b50346102835761030891506104d83661096c565b60cc54905160ff909116151581529081906020820190565b50346102835761030891506103a061050736610954565b610e1a565b50346102835761028061051e36610dd1565b9061458d565b50346102835761028061053636610bbf565b611f87565b50346102835761028061054d366108d7565b91614a5a565b50346102835761028061056536610da0565b906115b4565b503461028357610308915061057f3661096c565b60cc54905160089190911c60ff16151581529081906020820190565b50346102835761030891506105af3661096c565b6103e36113b7565b5034610283576102806105c936610bbf565b611eb8565b5034610283576102806105e036610be9565b90614b69565b5034610283576102806105f836610d60565b91614636565b50346102835761060d3661096c565b610280614d17565b50346102835761030891506106293661096c565b6103a061322c565b50346102835761028061064336610b90565b90613524565b50346102835761028061065b36610bbf565b6144a9565b50346102835761028061067236610d44565b614de0565b503461028357610308915061069361068e366109e5565b6141ae565b90516001600160a01b0390911681529081906020820190565b50346102835761030891506103a06106c336610d21565b61114b565b50346102835761030891506106936106df366109e5565b611211565b5034610283576102806106f636610cde565b91613bc6565b50346102835761028061070e36610c8f565b906148cb565b503461028357610280610726366109e5565b613e96565b50346102835761028061073d36610a45565b9161172e565b5034610283576107523661096c565b610280614d83565b50346102835761028061076c36610c5f565b90614e56565b5034610283576107813661096c565b610280614e68565b50346102835761028061079b36610c19565b91613d29565b5034610283576102806107b336610be9565b9061496b565b50346102835761030891506103e36107d036610bbf565b611cb6565b5034610283576102806107e736610b90565b90613812565b5034610283576102806107ff36610a45565b916116e0565b50346102835761028061081736610a1e565b9061409d565b50346102835761028061082f366109f7565b90611450565b503461028357610308915061069361084c366109e5565b611576565b50346102835761030891506108653661096c565b6103e3611300565b50346102835761030891506102f76108843661092f565b613259565b50346102835761028061089b366108d7565b91614c4e565b600435906001600160a01b0382168214156108b857565b5050600080fd5b61014435906001600160a01b0382168214156108b857565b606090600319011261000f5760043590602435600181101561091457906044356001600160a01b03811681141561090b5790565b50505050600080fd5b505050600080fd5b6001600160e01b03198116141561000f57565b602090600319011261000f576004356109478161091c565b90565b6002111561000f57565b602090600319011261000f576004356109478161094a565b600090600319011261000f57565b918091926000905b82821061099a575011610993575050565b6000910152565b91508060209183015181860152018291610982565b906020916109c88151809281855285808601910161097a565b601f01601f1916010190565b9060206109479281815201906109af565b602090600319011261000f5760043590565b604090600319011261000f576004356001600160a01b0381168114156108b8579060243590565b604090600319011261000f57600435906024356001600160a01b0381168114156109145790565b606090600319011261000f576001600160a01b03906004358281168114156109145791602435908116811415610914579060443590565b50634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117610aae57604052565b610ab6610a7c565b604052565b90601f801991011681019081106001600160401b03821117610aae57604052565b60405190610ae982610a93565b565b6040519060c082018281106001600160401b03821117610aae57604052565b6020906001600160401b038111610b27575b601f01601f19160190565b610b2f610a7c565b610b1c565b929192610b4082610b0a565b91610b4e6040519384610abb565b829481845281830111610b6b578281602093846000960137010152565b5050505050600080fd5b9080601f830112156109145781602061094793359101610b34565b9060406003198301126108b85760043591602435906001600160401b03821161090b5761094791600401610b75565b60206003198201126108b857600435906001600160401b0382116109145761094791600401610b75565b604090600319011261000f57600435610c018161094a565b906024356001600160a01b0381168114156109145790565b60606003198201126108b857600435916001600160401b03602435818111610b6b5783610c4891600401610b75565b92604435918211610b6b5761094791600401610b75565b604090600319011261000f57600435610c778161094a565b9060243590565b61012435908115158214156108b857565b60406003198201126108b857600435906001600160401b03821161091457610cb991600401610b75565b906024358015158114156109145790565b610104359062ffffff82168214156108b857565b9060606003198301126108b85760043591602435906001600160401b03821161090b57610d0d91600401610b75565b9060443562ffffff811681141561090b5790565b602090600319011261000f576004356001600160a01b0381168114156108b85790565b602090600319011261000f576004358015158114156108b85790565b9060606003198301126108b85760043591602435906001600160401b03821161090b57610d8f91600401610b75565b9060443580151581141561090b5790565b604090600319011261000f576004356001600160a01b0381168114156108b857906024358015158114156109145790565b604090600319011261000f57600435906024358015158114156109145790565b50634e487b7160e01b600052602160045260246000fd5b60021115610e1257565b610ae9610df1565b610e2381610e08565b60005260fe60205260406000205490565b9060806003198301126108b8576001600160a01b039160043583811681141561090b579260243590811681141561090b579160443591606435906001600160401b038211610e995780602383011215610e995781602461094793600401359101610b34565b505050505050600080fd5b9060606003198301126108b8576001600160401b039060043582811161090b5783610ed191600401610b75565b92602435838111610b6b5781610ee991600401610b75565b9260443591818311610e995780602384011215610e99578260040135918211610f65575b8160051b60405193602093610f2485840187610abb565b8552602484860192820101928311610f5857602401905b828210610f49575050505090565b81358152908301908301610f3b565b5050505050505050600080fd5b610f6d610a7c565b610f0d565b6101606003198201126108b857610f876108a1565b916001600160401b0390602435828111610b6b57610fa9846004928301610b75565b936044358481116110795781610fc0918401610b75565b93606435818111610f585782610fd7918501610b75565b9360843582811161106b5783610fee918601610b75565b9360a43583811161105c5784611005918301610b75565b9360c43584811161104c578161101c918401610b75565b9360e43590811161104c576110319201610b75565b9061103a610cca565b90611043610c7e565b906109476108bf565b5050505050505050505050600080fd5b50505050505050505050600080fd5b505050505050505050600080fd5b50505050505050600080fd5b959062ffffff946110cd6110ee956110bf60c099966110b16110db969d9e9d60e08e81815201906109af565b8c810360208e0152906109af565b908a820360408c01526109af565b9088820360608a01526109af565b91608087015285820360a08701526109af565b9416910152565b604090600319011261000f576001600160a01b039060043582811681141561091457916024359081168114156109145790565b604090600319011261000f576004359060243562ffffff81168114156109145790565b6001600160a01b0316801561116b57600052606860205260406000205490565b505060405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b156111cb57565b5060405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152606760205260409020546001600160a01b03166109478115156111c4565b90600182811c92168015611266575b602083101461124e57565b5050634e487b7160e01b600052602260045260246000fd5b91607f1691611243565b906000929180549161128183611234565b9182825260019384811690816000146112e357506001146112a3575b50505050565b90919394506000526020928360002092846000945b8386106112cf57505050500101903880808061129d565b8054858701830152940193859082016112b8565b60ff1916602084015250506040019350389150819050808061129d565b604051906000826065549161131483611234565b8083529260019081811690811561139a575060011461133b575b50610ae992500383610abb565b6065600090815291507f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b84831061137f5750610ae993505081016020013861132e565b81935090816020925483858a01015201910190918592611366565b94505050505060ff19166020830152610ae982604081013861132e565b60405190600082606654916113cb83611234565b8083529260019081811690811561139a57506001146113f15750610ae992500383610abb565b6066600090815291507f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b8483106114355750610ae993505081016020013861132e565b81935090816020925483858a0101520191019091859261141c565b9061145a81611211565b6001600160a01b0381811690841681146115235733149081156114f5575b501561148757610ae991611a52565b505060405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260849150fd5b6001600160a01b03166000908152606a6020526040902060ff915061151b9033906102d9565b541638611478565b5050505050608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152fd5b600081815260676020526040902054611599906001600160a01b031615156111c4565b6000908152606960205260409020546001600160a01b031690565b6001600160a01b038116919033831461163557816115f46116059233600052606a60205260406000209060018060a01b0316600052602052604060002090565b9060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3565b50505050606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b1561168457565b5060405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b90610ae992916116f86116f38433611804565b61167d565b6118d7565b60405190602082018281106001600160401b03821117611721575b60405260008252565b611729610a7c565b611718565b9091610ae99260405192602084018481106001600160401b0382111761175b575b60405260008452611768565b611763610a7c565b61174f565b9061178c93929161177c6116f38433611804565b6117878383836118d7565b611b5e565b1561179357565b5060405162461bcd60e51b8152806117ad600482016117b1565b0390fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b6001600160a01b038061181684611211565b16928183169284841494851561184c575b50508315611836575b50505090565b61184291929350611576565b1614388080611830565b6000908152606a602090815260408083206001600160a01b03949094168352929052205460ff1693503880611827565b1561188357565b5060405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b6118fb906118e484611211565b6001600160a01b038281169390918216841461187c565b83169283156119fc576119798261191687846119d39661329d565b611938856119326119268a611211565b6001600160a01b031690565b1461187c565b61195f61194f886000526069602052604060002090565b80546001600160a01b0319169055565b6001600160a01b0316600090815260686020526040902090565b80546000190190556001600160a01b0381166000908152606860205260409020600181540190556119b4856000526067602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000604051a4565b505050505050608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152fd5b600082815260696020526040902080546001600160a01b0319166001600160a01b0383161790556001600160a01b0380611a8b84611211565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256000604051a4565b600090815260676020526040902054610ae9906001600160a01b031615156111c4565b908160209103126108b857516109478161091c565b6001600160a01b039182168152911660208201526040810191909152608060608201819052610947929101906109af565b506040513d6000823e3d90fd5b3d15611b59573d90611b3f82610b0a565b91611b4d6040519384610abb565b82523d6000602084013e565b606090565b92909190823b15611c0d57611b91926020926000604051809681958294630a85bd0160e11b9a8b85523360048601611af0565b03926001600160a01b03165af160009181611bed575b50611bdf57505050611bb7611b2e565b80519081611bda57505060405162461bcd60e51b8152806117ad600482016117b1565b602001fd5b6001600160e01b0319161490565b611c06919250611bfd3d82610abb565b3d810190611adb565b9038611ba7565b50505050600190565b611c1f81610e08565b6000526098602052604060002090565b611c3881610e08565b6000526097602052604060002090565b60011115610e1257565b906001811015611c6b575b600052602052604060002090565b611c73610df1565b611c5d565b90611c8b6020928281519485920161097a565b0190565b6020611ca891816040519382858094519384920161097a565b810161013081520301902090565b6001600160a01b0390816002611ccb83611c8f565b015460101c1615611e5b57611cdf90611c8f565b908154611ceb906151d6565b906001830154611cfa906151d6565b92600201548060081c60ff16611d0f9061547a565b91611d1c60ff831661547a565b908260101c16611d2b906153c5565b9160b01c60ff16611d3b81614375565b611d44906151d6565b604051607b60f81b60208201529586959194916021870169113a37b5b2b724b2111d60b11b8152600a01611d7791611c78565b600b60fa1b8152600101671139b1b7b932911d60c11b8152600801611d9b91611c78565b600b60fa1b81526001016e113730b6b2ab32b934b334b2b2111d60891b8152600f01611dc691611c78565b600b60fa1b8152600101711131b7b73a32b73a2b32b934b334b2b2111d60711b8152601201611df491611c78565b600b60fa1b8152600101681137bbb732b9111d1160b91b8152600901611e1991611c78565b61088b60f21b8152600201681139ba30ba3ab9911d60b91b8152600901611e3f91611c78565b607d60f81b815260010103601f19810182526109479082610abb565b5050604051630d436c3560e21b815260049150fd5b6001600160a01b036002611e8383611c8f565b015460101c1615611ea4576002611e9b60ff92611c8f565b015460081c1690565b5050604051630d436c3560e21b8152600490fd5b6001600160a01b036002611ecb83611c8f565b015460101c1615611ea4576001611ee182611c8f565b01611eec8154611f53565b9055611ef781611c8f565b547f3ea1c0fcf71b86fca8f96ccac3cf26fba8983d3bbbe7bd720f1865d67fbaee43611f376001611f2785611c8f565b0154604051918291339683611f6b565b0390a3565b50634e487b7160e01b600052601160045260246000fd5b6001906000198114611f63570190565b611c8b611f3c565b929190611f826020916040865260408601906109af565b930152565b6001600160a01b036002611f9a83611c8f565b015460101c1615611ea4576001611fb082611c8f565b015415611fcd576001611fc282611c8f565b01611eec8154611fe1565b50506040516341f3125f60e11b8152600490fd5b8015611fef575b6000190190565b611ff7611f3c565b611fe8565b90916000549260ff8460081c16158094819561211e575b81156120fe575b501561209e576120409284612037600160ff196000541617600055565b6120855761212c565b61204657565b61205661ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61209961010061ff00196000541617600055565b61212c565b5050505050608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152fd5b303b15915081612110575b503861201a565b6001915060ff161438612109565b600160ff8216109150612013565b92919061214960ff60005460081c166121448161226e565b61226e565b83516001600160401b038111612261575b61216e81612169606554611234565b6122e6565b602080601f83116001146121cb575090806121ab93926121b896976000926121c0575b50508160011b916000199060031b1c1916176065556123d7565b6121b36125aa565b612724565b610ae9614ecf565b015190503880612191565b90601f198316966121fe60656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c790565b926000905b8982106122495750509183916001936121ab96956121b8999a10612230575b505050811b016065556123d7565b015160001960f88460031b161c19169055388080612222565b80600185968294968601518155019501930190612203565b612269610a7c565b61215a565b1561227557565b5060405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b8181106122da575050565b600081556001016122cf565b90601f82116122f3575050565b610ae99160656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7906020601f840160051c8301931061233d575b601f0160051c01906122cf565b9091508190612330565b90601f8211612354575050565b610ae99160666000527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354906020601f840160051c8301931061233d57601f0160051c01906122cf565b9190601f81116123ac57505050565b610ae9926000526020600020906020601f840160051c8301931061233d57601f0160051c01906122cf565b9081516001600160401b0381116124c1575b6123fd816123f8606654611234565b612347565b602080601f8311600114612439575081929360009261242e575b50508160011b916000199060031b1c191617606655565b015190503880612417565b90601f1983169461246c60666000527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435490565b926000905b8782106124a9575050836001959610612490575b505050811b01606655565b015160001960f88460031b161c19169055388080612485565b80600185968294968601518155019501930190612471565b6124c9610a7c565b6123e9565b91909182516001600160401b03811161259d575b6124f6816124f08454611234565b8461239d565b602080601f8311600114612532575081929394600092612527575b50508160011b916000199060031b1c1916179055565b015190503880612511565b90601f1983169561254885600052602060002090565b926000905b8882106125855750508360019596971061256c575b505050811b019055565b015160001960f88460031b161c19169055388080612562565b8060018596829496860151815501950193019061254d565b6125a5610a7c565b6124e2565b60006125bc60ff825460081c1661226e565b808052609860209081526040808320336000908152908352819020549192909160ff166126f057808052609883528181203360009081526020919091526040902061260f905b805460ff19166001179055565b808052609783528181206126238154612704565b905581516001815233602082018190527faf048a30703f33a377518eb62cc39bd3a14d6d1a1bb8267dcc440f1bde67b61a949183908690604090a36001825260988152828220336000908152602091909152604090205460ff166126db579181609760019485849552609881526126b1612602338686209060018060a01b0316600052602052604060002090565b85835252206126c08154612704565b90555160018152336020820181905292908060408101611f37565b5050516397b705ed60e01b8152600492509050fd5b50516397b705ed60e01b8152600492509050fd5b6001906001198111611f63570190565b6002906002198111611f63570190565b9061273660ff60005460081c1661226e565b60005b8251811015612783578061274f61277192610e08565b8351811015612776575b61276c60208260051b860101518261279f565b611f53565b612739565b61277e612788565b612759565b509050565b50634e487b7160e01b600052603260045260246000fd5b6040907f6819853ffee8927169953e7bdc42aaba347fb03ff918a45bfccaf88626d90096926127cd82610e08565b8160005260fe6020528083600020558251916127e881610e08565b82526020820152a1565b92968a988a919b929397969b612806612c65565b6101639788549d8e996128198b8a612b36565b5461282390612704565b6101635561283c8a600052610164602052604060002090565b61284688826124ce565b6128538c600183016124ce565b6128608d600283016124ce565b61286d8a600383016124ce565b61287a84600483016124ce565b60058101805462ffffff191662ffffff87161790556000600682015561289e610adc565b908282528360208301526007016128be9060008052602052604060002090565b906128c891612945565b604051988998600160a01b60019003169c339c6128e5998b612a3c565b037fba754491b4e452f016c3b656dfb44a5933d928f4dabae3cf2d65f1a27e4b807291a461291e83600052610165602052604060002090565b80546001600160a01b0319166001600160a01b039092169190911790556109479082612c41565b9080519081516001600160401b038111612a2f575b61296e816129688654611234565b8661239d565b6020928390601f83116001146129ba57918060019492610ae99796946000926129af575b5050600019600383901b1c191690841b1784555b015191016124ce565b015190503880612992565b90601f198316916129d087600052602060002090565b9260005b818110612a1857509260019593928592610ae99998968895106129ff575b505050811b0184556129a6565b015160001960f88460031b161c191690553880806129f2565b9293876001819287860151815501950193016129d4565b612a37610a7c565b61295a565b95612aae610ae99a96612aa062ffffff979b9e9d9b612a92612aca98612a848d6101209f9a612a76612abc9b6101408085528401906109af565b9160208184039101526109af565b8d810360408f0152906109af565b908b820360608d01526109af565b9089820360808b01526109af565b9087820360a08901526109af565b9085820360c08701526109af565b971660e083015215156101008201526001600160a01b03909216910152565b15612af057565b5060405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b6001600160a01b038116908115612bf957600083815260676020526040902054612bcf9190612b71906001600160a01b031615155b15612ae9565b612b79614ef1565b600084815260676020526040902054612b9c906001600160a01b03161515612b6b565b6001600160a01b0381166000908152606860205260409020600181540190556119b4846000526067602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef81604051a4565b50505050606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b90610ae99160005261013160205260406000209060ff801983541691151516179055565b6000805260fe6020527f32796e36004994222362c2f9423d5e208bb848170964890784a8d59ed40f50af5434811415612c9b5750565b6024915060405190635f7e28df60e01b82526004820152fd5b600160005260fe6020527f457c8a48b4735f56b938837eb0a8a5f9c55f23c1a85767ce3b65c3e59d3d32b75434811415612c9b5750565b600081815260676020526040902054612d0e906001600160a01b031615156111c4565b612d1781611211565b90600090815261013160205260409160ff838320541661016460205283832092612d7e855193612d4685610a93565b601d85527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000060208601526001600160a01b03166153c5565b91600385016005860191612dc184612da1612d9c865462ffffff1690565b6154c0565b8a518093819263891c235f60e01b83528c88600482019160048601615112565b038173__$ecf603b2c2aa531f37c90ec146d2a3e91a$__5af4948515613161575b8095613137575b5050612df49061547a565b90600787019060068801549282612e1685809590600052602052604060002090565b93612e2a9190600052602052604060002090565b60010193612e37906151d6565b945462ffffff16612e47906154c0565b8a51607b60f81b602082015267113730b6b2911d1160c11b6021820152998a98919791612e7760298b018361515a565b61088b60f21b81526002016e113232b9b1b934b83a34b7b7111d1160891b8152600f01612ea7906001840161515a565b61088b60f21b8152600201681137bbb732b9111d1160b91b8152600901612ecd91611c78565b61088b60f21b81526002016f1132bc3a32b93730b62fbab936111d1160811b8152601001612efd9160020161515a565b61088b60f21b8152600201681134b6b0b3b2911d1160b91b8152600901612f2391611c78565b61088b60f21b81526002017f226163636573735f706f696e745f6175746f5f617070726f76616c223a0000008152601d01612f5d91611c78565b600b60fa1b81526001016e2261747472696275746573223a205b60881b8152600f017f7b2274726169745f74797065223a2022454e53222c202276616c7565223a22008152601f01612fae9161515a565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a2022436f6d6d69742048617368222c20227681526630b63ab2911d1160c91b6020820152602701612ff99161515a565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a20225265706f7369746f7279222c20227661815265363ab2911d1160d11b60208201526026016130439161515a565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a202256657273696f6e222c202276616c7565815262111d1160e91b602082015260230161308a91611c78565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a2022436f6c6f72222c202276616c7565223a8152601160f91b60208201526021016130cf91611c78565b61227d60f01b8152600201605d60f81b8152600101607d60f81b81526001010391601f199283810182526131039082610abb565b61310c90614fd9565b92519283916020830161311e91611c78565b61312791611c78565b0390810182526109479082610abb565b612df492955090613159913d90823e6131503d82610abb565b3d8101906150b4565b939038612de9565b613169611b21565b612de2565b600081815260676020526040902054613191906001600160a01b031615156111c4565b60005261016460205260409081600020600681015462ffffff6005830154169380516131c8816131c18187611270565b0382610abb565b9481516131dc816131c18160018901611270565b94600461321984516131f5816131c18160028c01611270565b966131c1865161320c816131c18160038701611270565b9796518094819301611270565b9190565b60018110611fef576000190190565b6101635480156132455760018110611fef576000190190565b50506040516327e4ec1b60e21b8152600490fd5b63ffffffff60e01b166380ac58cd60e01b811490811561328c575b811561327e575090565b6301ffc9a760e01b14919050565b635b5e139f60e01b81149150613274565b906132a6614ef1565b6001600160a01b03918216151580806132e6575b156132cb57505050610ae9906132f1565b6132d457505050565b16156132dd5750565b610ae9906132f1565b5082821615156132ba565b8060005260996020526040600020600181548119811161333b575b0190557f8c7eb22d1ba10f86d9249f2a8eb0e3e35b4f0b2f21f92dea9ec25a4d84b20fa06020604051338152a2565b613343611f3c565b61330c565b61335181611211565b6001600160a01b0316331415613487575b600081815260676020526040902054613385906001600160a01b031615156111c4565b8060005260206101648152600260406000200190835180916001600160401b03821161347a575b6133ba826129688654611234565b80601f831160011461340c5750600091613401575b508160011b916000199060031b1c19161790555b6000805160206155c783398151915260405180611f37339582613495565b9050840151386133cf565b9150601f19831661342285600052602060002090565b926000905b8282106134625750509083600194939210613449575b5050811b0190556133e3565b86015160001960f88460031b161c19169055388061343d565b80600185968294968c01518155019501930190613427565b613482610a7c565b6133ac565b613490816134c8565b613362565b9060806109479260408152600b60408201526a195e1d195c9b985b15549360aa1b606082015281602082015201906109af565b600081815260996020908152604080832054609a83528184209084528252808320838052825280832033845290915281205460ff1615613506575050565b604492506040519163158eff0360e21b835260048301526024820152fd5b61352d81611211565b6001600160a01b0316331415613663575b600081815260676020526040902054613561906001600160a01b031615156111c4565b8060005260206101648152600360406000200190835180916001600160401b038211613656575b613596826129688654611234565b80601f83116001146135e857506000916135dd575b508160011b916000199060031b1c19161790555b6000805160206155c783398151915260405180611f37339582613671565b9050840151386135ab565b9150601f1983166135fe85600052602060002090565b926000905b82821061363e5750509083600194939210613625575b5050811b0190556135bf565b86015160001960f88460031b161c191690553880613619565b80600185968294968c01518155019501930190613603565b61365e610a7c565b613588565b61366c816134c8565b61353e565b90608061094792604081526003604082015262454e5360e81b606082015281602082015201906109af565b6136a581611211565b6001600160a01b03163314156137d8575b6000818152606760205260409020546136d9906001600160a01b031615156111c4565b8060005260206101648152604060002090835180916001600160401b0382116137cb575b61370b826129688654611234565b80601f831160011461375d5750600091613752575b508160011b916000199060031b1c19161790555b6000805160206155c783398151915260405180611f373395826137e6565b905084015138613720565b9150601f19831661377385600052602060002090565b926000905b8282106137b3575050908360019493921061379a575b5050811b019055613734565b86015160001960f88460031b161c19169055388061378e565b80600185968294968c01518155019501930190613778565b6137d3610a7c565b6136fd565b6137e1816134c8565b6136b6565b906080610947926040815260046040820152636e616d6560e01b606082015281602082015201906109af565b61381b81611211565b6001600160a01b031633141561394f575b60008181526067602052604090205461384f906001600160a01b031615156111c4565b8060005260206101648152600180604060002001918451906001600160401b038211613942575b613884826129688654611234565b80601f83116001146138d75750819282916000936138cc575b501b916000199060031b1c19161790555b6000805160206155c783398151915260405180611f3733958261395d565b87015192503861389d565b9082601f1981166138ed87600052602060002090565b936000905b87838310613928575050501061390f575b5050811b0190556138ae565b86015160001960f88460031b161c191690553880613903565b8b86015187559095019493840193869350908101906138f2565b61394a610a7c565b613876565b613958816134c8565b61382c565b9060806109479260408152600b60408201526a3232b9b1b934b83a34b7b760a91b606082015281602082015201906109af565b61399981611211565b6001600160a01b0316331415613acf575b6000818152606760205260409020546139cd906001600160a01b031615156111c4565b8060005260206101648152600460406000200190835180916001600160401b038211613ac2575b613a02826129688654611234565b80601f8311600114613a545750600091613a49575b508160011b916000199060031b1c19161790555b6000805160206155c783398151915260405180611f37339582613add565b905084015138613a17565b9150601f198316613a6a85600052602060002090565b926000905b828210613aaa5750509083600194939210613a91575b5050811b019055613a2b565b86015160001960f88460031b161c191690553880613a85565b80600185968294968c01518155019501930190613a6f565b613aca610a7c565b6139f4565b613ad8816134c8565b6139aa565b906080610947926040815260046040820152636c6f676f60e01b606082015281602082015201906109af565b613b1281611211565b6001600160a01b0316331415613bb8575b600081815260676020526040902054613b46906001600160a01b031615156111c4565b600081815261016460205260409020600501805462ffffff191662ffffff841617905562ffffff6040519260408452600560408501526431b7b637b960d91b60608501521660208301527f7a3039988e102050cb4e0b6fe203e58afd9545e192ef2ca50df8d14ee2483e7e60803393a3565b613bc1816134c8565b613b23565b92919092613bd381611211565b6001600160a01b0316331415613d1b575b600081815260676020526040902054613c07906001600160a01b031615156111c4565b80600052602093610164855260046040600020018151956001600160401b038711613d0e575b613c3b876124f08454611234565b80601f8811600114613c9d57509580610ae99697600091613c92575b508160011b916000199060031b1c19161790555b816000805160206155c783398151915260405180613c8a339582613add565b0390a3613b09565b905083015138613c57565b90601f198816613cb284600052602060002090565b926000905b828210613cf6575050918891610ae9989960019410613cdd575b5050811b019055613c6b565b85015160001960f88460031b161c191690553880613cd1565b80600185968294968a01518155019501930190613cb7565b613d16610a7c565b613c2d565b613d24816134c8565b613be4565b90917f1df66319cf29e55bca75419e56e75507b2b443b0a062a59d4b06b8d4dd13ce6b90613d5683611211565b6001600160a01b0316331415613e1a575b600083815260676020526040902054613d8a906001600160a01b031615156111c4565b604090613df082518381018181106001600160401b03821117613e0d575b845286815282602082015285600052610164602052613deb600785600020016006866000200190613dd98254611f53565b80925590600052602052604060002090565b612945565b613df8610adc565b94855260208501525180611f37339582613e28565b613e15610a7c565b613da8565b613e23836134c8565b613d67565b604081526005604082015264189d5a5b1960da1b606082015260808101906020916080838301529160c0820193926000905b60028210613e6a57505050505090565b90919293948380613e87600193607f1989820301865289516109af565b97019201920190939291613e5a565b613e9f81611211565b6001600160a01b03908116331415613fc0576000818392613ebf84611211565b613ec7614ef1565b1615158080613fb9575b8314613fa25750613ee1836132f1565b613eea83611211565b613f0161194f856000526069602052604060002090565b6001600160a01b038116600090815260686020526040902083198154019055613f3761194f856000526067602052604060002090565b167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef82604051a4613f7e6002613f7883600052610164602052604060002090565b01613fda565b613f855750565b613f9d610ae991600052610164602052604060002090565b614055565b613fab57613ee1565b613fb4836132f1565b613ee1565b5082613ed1565b5060249150604051906355d2292f60e11b82526004820152fd5b6109479054611234565b6001600160fe1b038111600116613ffc575b60021b90565b614004611f3c565b613ff6565b6140138154611234565b908161401d575050565b81601f6000931160011461402f575055565b8183526020832061404b91601f0160051c8101906001016122cf565b8160208120915555565b600660009161406381614009565b61406f60018201614009565b61407b60028201614009565b61408760038201614009565b61409360048201614009565b8260058201550155565b6140a681611211565b6001600160a01b0316331415614193576001600160a01b03821660009081527fe66b7f18a15fed257e722ee4e0b46d479842712099771fae6234a4975b3be6fa602052604090205460ff1615614177576140ff81611ab8565b614118826119b483600052610165602052604060002090565b60408051818152600891810191909152673b32b934b334b2b960c11b60608201526001600160a01b03909216602083015233917f967cd1f911fe3c627b223c427ab2e2a18d89bef4a19ba762b552fd5fbc1033aa908060808101611f37565b505060405163070198dd60e51b81526001600482015260249150fd5b905060249150604051906355d2292f60e11b82526004820152fd5b6000818152606760205260409020546141d1906001600160a01b031615156111c4565b600090815261016560205260409020546001600160a01b031690565b6141f5614ef1565b6141fd612cb4565b600081815260676020526040902054614220906001600160a01b031615156111c4565b6001600160a01b03614247600261423685611c8f565b015460101c6001600160a01b031690565b16614360577fb3f4be48c43e81d71721c23e88ed2db7f6782bf8b181c690104db1e31f82bbe890604051817f8140554c907b4ba66a04ea1f43b882cba992d3db4cd5c49298a56402d7b36ca23392806142a088826109d4565b0390a36142bb6102f082600052610131602052604060002090565b1561431557614310906143026142cf610aeb565b828152600060208201819052604082018190526060820152336080820152600160a08201526142fd86611c8f565b61437f565b60405191829133958361445b565b0390a2565b61431090614352614324610aeb565b828152600060208201819052604082018190526060820152336080820152600060a08201526142fd86611c8f565b604051918291339583614437565b505060405163142d0c2f60e11b815260049150fd5b60041115610e1257565b600290825181556020830151600182015501906143ae60408201511515839060ff801983541691151516179055565b6060810151825461ff00191690151560081b61ff00161782556080810151825462010000600160b01b0319811660109290921b62010000600160b01b0316918217845560a09092015161440081614375565b600481101561442a575b62010000600160b81b03199092161760b09190911b60ff60b01b16179055565b614432610df1565b61440a565b6040906144516000939594956060835260608301906109af565b9460208201520152565b6040906144516001939594956060835260608301906109af565b6040906144516003939594956060835260608301906109af565b6040906144516002939594956060835260608301906109af565b6144b1614ef1565b6001600160a01b038060026144c584611c8f565b015460101c1615611e5b5760026144db83611c8f565b015460101c163314156145795761450a60026144f683611c8f565b01805460ff60b01b1916600360b01b179055565b61451381611c8f565b546040517fb3f4be48c43e81d71721c23e88ed2db7f6782bf8b181c690104db1e31f82bbe8339180614546858783614475565b0390a27fef2f6bed86b96d79b41799f5285f73b31274bb303ebe5d55a3cb48c567ab2db060405180611f373395826109d4565b5050604051631851b23d60e01b8152600490fd5b61459681611211565b6001600160a01b0316331415614193576000818152606760205260409020546145c9906001600160a01b031615156111c4565b6145d38282612c41565b6040519160408352601760408401527f616363657373506f696e744175746f417070726f76616c0000000000000000006060840152151560208301527e91a55492d3e3f4e2c9b36ff4134889d9118003521f9d531728503da510b11f60803393a3565b91909161464281611211565b6001600160a01b03163314156147165761465b83611c8f565b81815414156147005760020190614677825460ff9060b01c1690565b61468081614375565b6146ea577fb3f4be48c43e81d71721c23e88ed2db7f6782bf8b181c690104db1e31f82bbe892156146c657815460ff60b01b1916600160b01b1790915561431090614302565b815460ff60b01b1916600160b11b179091556143109060405191829133958361448f565b5050505050600460405163d9e5c51160e01b8152fd5b50505050506004604051636653b1a360e01b8152fd5b91505060249150604051906355d2292f60e11b82526004820152fd5b61473a6147fa565b614743816148a0565b600081815261016560205260409020546001600160a01b03919082163314156147dd5750600261477283611c8f565b015460101c1615611e5b5761479e82600261478c84611c8f565b019060ff801983541691151516179055565b7fe2e598f7ff2dfd4bc3bd989635401b4c56846b7893cb7eace51d099f21e69bff611f376147cb83611c8f565b54604051918291339615159583611f6b565b92505050602491506040519063926e6e9960e01b82526004820152fd5b3360009081527fe66b7f18a15fed257e722ee4e0b46d479842712099771fae6234a4975b3be6fa602052604090205460ff161561483357565b5060405163070198dd60e51b815260016004820152602490fd5b3360009081527fddaeee8e61001dbcfaf4f92c6943552c392a86665d734d3c1905d7b3c23b1b1e602052604090205460ff161561488657565b5060405163070198dd60e51b815260006004820152602490fd5b6001600160a01b0360026148b383611c8f565b015460101c1615611ea4576148c790611c8f565b5490565b6148d36147fa565b6148dc816148a0565b600081815261016560205260409020546001600160a01b03919082163314156147dd5750600261490b83611c8f565b015460101c1615611e5b5761493e82600261492584611c8f565b019061ff00825491151560081b169061ff001916179055565b7f17bd9b465aa0cdc6b308874903e9c38b13f561ecb1f2edaa8bf3969fe603d11c611f376147cb83611c8f565b614973614ef1565b61497b61484d565b61498481610e08565b60008181526098602090815260408083206001600160a01b038616845290915290205460ff16614a45576149b781610e08565b60008181526098602090815260408083206001600160a01b038616845290915290206149e290612602565b6149eb81611c2f565b6149f58154612704565b9055614a0081610e08565b60408051600181523360208201526001600160a01b03909316927faf048a30703f33a377518eb62cc39bd3a14d6d1a1bb8267dcc440f1bde67b61a9181908101611f37565b50506040516397b705ed60e01b815260049150fd5b614a62614ef1565b614a6b81611211565b6001600160a01b03908116331415614b4c57816000526099602052614ab36102f0856102d986610494604060002054609a602052604060002090600052602052604060002090565b614b36577fa4e6ad394cc40a3bae0d24623f88f7bb2e1463d19dab64bafd9985b0bc78211890614b10612602866102d987610494614afb896000526099602052604060002090565b546104858a600052609a602052604060002090565b614b1984611c48565b60408051600181523360208201529190951694819081015b0390a4565b505050505060046040516397b705ed60e01b8152fd5b5091505060249150604051906355d2292f60e11b82526004820152fd5b614b71614ef1565b614b7961484d565b614b90614b8c6102f0846102d985611c16565b1590565b614a4557614b9d81610e08565b801580614c3b575b614c2657614bc3614bb9836102d984611c16565b805460ff19169055565b614bcc81611c2f565b614bd6815461321d565b9055614be181610e08565b60408051600081523360208201526001600160a01b03909316927faf048a30703f33a377518eb62cc39bd3a14d6d1a1bb8267dcc440f1bde67b61a9181908101611f37565b50506040516360ed092b60e01b815260049150fd5b506001614c4782611c2f565b5414614ba5565b614c56614ef1565b614c5f81611211565b6001600160a01b03908116331415614b4c57816000526099602052614caa614b8c6102f0866102d987610494604060002054609a602052604060002090600052602052604060002090565b614b36577fa4e6ad394cc40a3bae0d24623f88f7bb2e1463d19dab64bafd9985b0bc78211890614cf2614bb9866102d987610494614afb896000526099602052604060002090565b614cfb84611c48565b6040805160008152336020820152919095169481908101614b31565b614d1f61484d565b614d27614ef1565b60cc5460ff8160081c1615614d6f5760019060ff19161760cc5560007f07e8f74f605213c41c1a057118d86bca5540e9cf52c351026d0d65e46421aa1a6020604051338152a2565b5050604051635970d9f560e11b8152600490fd5b614d8b61484d565b60cc5460ff811615614dcc5760ff191660cc5560007f07e8f74f605213c41c1a057118d86bca5540e9cf52c351026d0d65e46421aa1a6020604051338152a2565b50506040516355d413dd60e01b8152600490fd5b614de861484d565b60cc549015159060ff8160081c1615158214614e3c5761ff008260081b169061ff0019161760cc557f959581ef17eb8c8936ef9832169bc89dbcd1358765adca8ca81f28b416bb5efa6020604051338152a2565b506024915060405190632e15c5c160e21b82526004820152fd5b90610ae991614e6361484d565b61279f565b614e7061484d565b478060008115614ec6575b600080809381933390f115614eb9575b6040519081527f8c7cdad0d12a8db3e23561b42da6f10c8137914c97beff202213a410e1f520a360203392a2565b614ec1611b21565b614e8b565b506108fc614e7b565b614ee060ff60005460081c1661226e565b60cc805461ffff1916610100179055565b60ff60cc5416614efd57565b506040516306d39fcd60e41b8152600490fd5b60405190606082018281106001600160401b03821117614f80575b604052604082527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f6040837f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208201520152565b614f88610a7c565b614f2b565b60405190614f9a82610a93565b6008825260203681840137565b90614fb182610b0a565b614fbe6040519182610abb565b8281528092614fcf601f1991610b0a565b0190602036910137565b8051156150ab57614fe8614f10565b61500c615007615002614ffb8551612714565b6003900490565b613fe4565b614fa7565b9160208301918182518301915b828210615059575050506003905106806001146150465760021461503b575090565b603d90600019015390565b50603d9081600019820153600119015390565b9091936004906003809401938451600190603f9082828260121c16880101518553828282600c1c16880101518386015382828260061c1688010151600286015316850101519082015301939190615019565b506109476116fd565b602081830312610914578051906001600160401b03821161090b570181601f820112156109145780516150e681610b0a565b926150f46040519485610abb565b8184526020828401011161090b57610947916020808501910161097a565b9261513e610947959361513061514c94608088526080880190611270565b908682036020880152611270565b908482036040860152611270565b9160608184039101526109af565b60009291815461516981611234565b926001918083169081156151c157506001146151855750505050565b90919293945060005260209081600020906000915b8583106151b0575050505001903880808061129d565b80548584015291830191810161519a565b60ff191684525050500191503880808061129d565b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008082101561530b575b506d04ee2d6d415b85acef8100000000808310156152fc575b50662386f26fc10000808310156152ed575b506305f5e100808310156152de575b50612710808310156152cf575b5060648210156152bf575b600a809210156152b5575b60019081602161526d828701614fa7565b95860101905b61527f575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156152b057919082615273565b615278565b916001019161525c565b9190606460029104910191615251565b60049193920491019138615246565b60089193920491019138615239565b6010919392049101913861522a565b60209193920491019138615218565b6040935081049150386151ff565b6040519061532682610a93565b6007825260203681840137565b602090805115615341570190565b611c8b612788565b602190805160011015615341570190565b90602091805182101561536c57010190565b615374612788565b010190565b1561538057565b50606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b60405190606082018281106001600160401b0382111761546d575b604052602a8252604036602084013760306153fa83615333565b53607861540683615349565b536029905b6001821161541e57610947915015615379565b80600f61545a92166010811015615460575b6f181899199a1a9b1b9c1cb0b131b232b360811b901a615450848661535a565b5360041c91611fe1565b9061540b565b615468612788565b615430565b615475610a7c565b6153e0565b1561549f5760405161548b81610a93565b60048152637472756560e01b602082015290565b6040516154ab81610a93565b600581526466616c736560d81b602082015290565b62ffffff166154cd614f8d565b9060306154d983615333565b5360786154e583615349565b5360079081905b60018211615581576154ff915015615379565b615507615319565b91825115615574575b60236020840153600190815b83811061552a575050505090565b615562906001198111615567575b6001600160f81b031961554d8286018561535a565b511660001a61555c828861535a565b53611f53565b61551c565b61556f611f3c565b615538565b61557c612788565b615510565b80600f6155b3921660108110156155b9575b6f181899199a1a9b1b9c1cb0b131b232b360811b901a615450848761535a565b906154ec565b6155c1612788565b61559356fe0eef1ffa5f2982ad38bb9f5022d2ac4c29b22af1469b6ed4f49176c737d74a18a36469706673582212202f0779215aad43d1450e511f6c450bd364e85e6cc1862e13ca70e0ca80fcebb06c6578706572696d656e74616cf564736f6c634300080c0041", - "metadata": "{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessPointAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessPointCreationStatusAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessPointNotExistent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessPointScoreCannotBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsNotPausable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenIdForAccessPoint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeAccessPointOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MustBeTokenOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MustBeTokenVerifier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustHaveAtLeastOneOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"MustHaveCollectionRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"MustHaveTokenRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"state\",\"type\":\"bool\"}],\"name\":\"PausableIsSetTo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requiredValue\",\"type\":\"uint256\"}],\"name\":\"RequiredPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoleAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ThereIsNoTokenMinted\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"key\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"BillingChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointContentVerify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum FleekAccessPoints.AccessPointCreationStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointCreationStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointNameVerify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointScore\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"CollectionRoleChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"value\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string[2]\",\"name\":\"value\",\"type\":\"string[2]\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewAccessPoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"externalURL\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ENS\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"commitHash\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gitRepository\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"color\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"accessPointAutoApproval\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"NewMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isPausable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PausableStatusChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauseStatusChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RemoveAccessPoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"TokenRoleChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"TokenRolesCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_billings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"addAccessPoint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"decreaseAccessPointScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"getAccessPointJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"key\",\"type\":\"uint8\"}],\"name\":\"getBilling\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenVerifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCollectionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantTokenRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasCollectionRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasTokenRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"increaseAccessPointScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"initialBillings\",\"type\":\"uint256[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"isAccessPointNameVerified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPausable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"externalURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ENS\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"commitHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gitRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"uint24\",\"name\":\"color\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"accessPointAutoApproval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"removeAccessPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeCollectionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeTokenRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_apAutoApproval\",\"type\":\"bool\"}],\"name\":\"setAccessPointAutoApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"}],\"name\":\"setAccessPointContentVerify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"}],\"name\":\"setAccessPointNameVerify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAccessPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"key\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setBilling\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pausable\",\"type\":\"bool\"}],\"name\":\"setPausable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_commitHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_gitRepository\",\"type\":\"string\"}],\"name\":\"setTokenBuild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"_tokenColor\",\"type\":\"uint24\"}],\"name\":\"setTokenColor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenDescription\",\"type\":\"string\"}],\"name\":\"setTokenDescription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenENS\",\"type\":\"string\"}],\"name\":\"setTokenENS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenExternalURL\",\"type\":\"string\"}],\"name\":\"setTokenExternalURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenLogo\",\"type\":\"string\"}],\"name\":\"setTokenLogo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenLogo\",\"type\":\"string\"},{\"internalType\":\"uint24\",\"name\":\"_tokenColor\",\"type\":\"uint24\"}],\"name\":\"setTokenLogoAndColor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenName\",\"type\":\"string\"}],\"name\":\"setTokenName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"setTokenVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addAccessPoint(uint256,string)\":{\"details\":\"Add a new AccessPoint register for an app token. The AP name should be a DNS or ENS url and it should be unique. Anyone can add an AP but it should requires a payment. May emit a {NewAccessPoint} event. Requirements: - the tokenId must be minted and valid. - billing for add acess point may be applied. - the contract must be not paused.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Burns a previously minted `tokenId`. May emit a {Transfer} event. Requirements: - the tokenId must be minted and valid. - the sender must be the owner of the token. - the contract must be not paused.\"},\"decreaseAccessPointScore(string)\":{\"details\":\"Decreases the score of a AccessPoint registry if is greater than 0.\"},\"getAccessPointJSON(string)\":{\"details\":\"A view function to gether information about an AccessPoint. It returns a JSON string representing the AccessPoint information.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getBilling(uint8)\":{\"details\":\"Returns the billing value for a given key.\"},\"getLastTokenId()\":{\"details\":\"Returns the last minted tokenId.\"},\"getToken(uint256)\":{\"details\":\"Returns the token metadata associated with the `tokenId`. Returns multiple string and uint values in relation to metadata fields of the App struct. Requirements: - the tokenId must be minted and valid.\"},\"getTokenVerifier(uint256)\":{\"details\":\"Returns the verifier of a token. Requirements: - the tokenId must be minted and valid.\"},\"grantCollectionRole(uint8,address)\":{\"details\":\"Grants the collection role to an address. Requirements: - the caller should have the collection role.\"},\"grantTokenRole(uint256,uint8,address)\":{\"details\":\"Grants the token role to an address. Requirements: - the caller should have the token role.\"},\"hasCollectionRole(uint8,address)\":{\"details\":\"Returns `True` if a certain address has the collection role.\"},\"hasTokenRole(uint256,uint8,address)\":{\"details\":\"Returns `True` if a certain address has the token role.\"},\"increaseAccessPointScore(string)\":{\"details\":\"Increases the score of a AccessPoint registry.\"},\"initialize(string,string,uint256[])\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"isAccessPointNameVerified(string)\":{\"details\":\"A view function to check if a AccessPoint is verified.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isPausable()\":{\"details\":\"Returns true if the contract is pausable, and false otherwise.\"},\"isPaused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"mint(address,string,string,string,string,string,string,string,uint24,bool,address)\":{\"details\":\"Mints a token and returns a tokenId. If the `tokenId` has not been minted before, and the `to` address is not zero, emits a {Transfer} event. Requirements: - the caller must have ``collectionOwner``'s admin role. - billing for the minting may be applied. - the contract must be not paused.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"pause()\":{\"details\":\"Sets the contract to paused state. Requirements: - the sender must have the `controller` role. - the contract must be pausable. - the contract must be not paused.\"},\"removeAccessPoint(string)\":{\"details\":\"Remove an AccessPoint registry for an app token. It will also remove the AP from the app token APs list. May emit a {RemoveAccessPoint} event. Requirements: - the AP must exist. - must be called by the AP owner. - the contract must be not paused.\"},\"revokeCollectionRole(uint8,address)\":{\"details\":\"Revokes the collection role of an address. Requirements: - the caller should have the collection role.\"},\"revokeTokenRole(uint256,uint8,address)\":{\"details\":\"Revokes the token role of an address. Requirements: - the caller should have the token role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setAccessPointAutoApproval(uint256,bool)\":{\"details\":\"Updates the `accessPointAutoApproval` settings on minted `tokenId`. May emit a {MetadataUpdate} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setAccessPointContentVerify(string,bool)\":{\"details\":\"Set the content verification of a AccessPoint registry. May emit a {ChangeAccessPointContentVerify} event. Requirements: - the AP must exist. - the sender must have the token controller role.\"},\"setAccessPointNameVerify(string,bool)\":{\"details\":\"Set the name verification of a AccessPoint registry. May emit a {ChangeAccessPointNameVerify} event. Requirements: - the AP must exist. - the sender must have the token controller role.\"},\"setApprovalForAccessPoint(uint256,string,bool)\":{\"details\":\"Set approval settings for an access point. It will add the access point to the token's AP list, if `approved` is true. May emit a {ChangeAccessPointApprovalStatus} event. Requirements: - the tokenId must exist and be the same as the tokenId that is set for the AP. - the AP must exist. - must be called by a token controller.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBilling(uint8,uint256)\":{\"details\":\"Sets the billing value for a given key. May emit a {BillingChanged} event. Requirements: - the sender must have the `collectionOwner` role.\"},\"setPausable(bool)\":{\"details\":\"Sets the contract to pausable state. Requirements: - the sender must have the `owner` role. - the contract must be in the oposite pausable state.\"},\"setTokenBuild(uint256,string,string)\":{\"details\":\"Adds a new build to a minted `tokenId`'s builds mapping. May emit a {NewBuild} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenColor(uint256,uint24)\":{\"details\":\"Updates the `color` metadata field of a minted `tokenId`. May emit a {NewTokenColor} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenDescription(uint256,string)\":{\"details\":\"Updates the `description` metadata field of a minted `tokenId`. May emit a {NewTokenDescription} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenENS(uint256,string)\":{\"details\":\"Updates the `ENS` metadata field of a minted `tokenId`. May emit a {NewTokenENS} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenExternalURL(uint256,string)\":{\"details\":\"Updates the `externalURL` metadata field of a minted `tokenId`. May emit a {NewTokenExternalURL} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenLogo(uint256,string)\":{\"details\":\"Updates the `logo` metadata field of a minted `tokenId`. May emit a {NewTokenLogo} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenLogoAndColor(uint256,string,uint24)\":{\"details\":\"Updates the `logo` and `color` metadata fields of a minted `tokenId`. May emit a {NewTokenLogo} and a {NewTokenColor} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenName(uint256,string)\":{\"details\":\"Updates the `name` metadata field of a minted `tokenId`. May emit a {NewTokenName} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenVerifier(uint256,address)\":{\"details\":\"Sets an address as verifier of a token. The verifier must have `CollectionRoles.Verifier` role. May emit a {MetadataUpdate} event. Requirements: - the tokenId must be minted and valid. - the sender must be the owner of the token. - the verifier must have `CollectionRoles.Verifier` role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the token metadata associated with the `tokenId`. Returns a based64 encoded string value of the URI. Requirements: - the tokenId must be minted and valid.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unpause()\":{\"details\":\"Sets the contract to unpaused state. Requirements: - the sender must have the `controller` role. - the contract must be paused.\"},\"withdraw()\":{\"details\":\"Withdraws all the funds from contract. May emmit a {Withdrawn} event. Requirements: - the sender must have the `collectionOwner` role.\"}},\"version\":1},\"userdoc\":{\"events\":{\"MetadataUpdate(uint256,string,string,address)\":{\"notice\":\"Event emitted when a token's metadata is updated.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FleekERC721.sol\":\"FleekERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb\",\"dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/utils/Base64.sol\":{\"keccak256\":\"0x5f3461639fe20794cfb4db4a6d8477388a15b2e70a018043084b7c4bedfa8136\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77e5309e2cc4cdc3395214edb0ff43ff5a5f7373f5a425383e540f6fab530f96\",\"dweb:/ipfs/QmTV8DZ9knJDa3b5NPBFQqjvTzodyZVjRUg5mx5A99JPLJ\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/FleekAccessControl.sol\":{\"keccak256\":\"0xdd0352b2e9e1a7393cb85a85efb7135cc5c0d5365ee156ca78eda2c82113b6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62245b17047d2261afb923ffb7592cc54c78cad599828deb3342e4e6de6c99\",\"dweb:/ipfs/QmRfsz1x2dh4fx78KizNXLMjfisgvzGkizbpAasqzZvggr\"]},\"contracts/FleekAccessPoints.sol\":{\"keccak256\":\"0xa74f4f1af3f7100dde68c4824784a93927191c72f00416f96dded39b36cd43cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6aee8dc6e13e77cec72fbfadee051aad02ab25848646cda7f5a57a89126ea729\",\"dweb:/ipfs/QmWk9raFrRkASBmmZ3Ng9a5HyHYUbjfxEJKhdqwfR2WmL9\"]},\"contracts/FleekBilling.sol\":{\"keccak256\":\"0x6fed8b7faba37011bd15b0bc395ca40e24a85499dec167de6942acabc5407d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1f71b1173e8cd21e14e44e97a1add07d1f08115aa2a4053e40aacfbbc270a19\",\"dweb:/ipfs/QmSej6eRfhhL84SMMFrPJWesTUhMRc4HSTY85b2zAKzzhs\"]},\"contracts/FleekERC721.sol\":{\"keccak256\":\"0xa3983a828ea8b47ff27eb2739cd460f22b9e48b1b528352dc950175508ffd3cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98ae63d6535f37d78c5351d43d98675e5045c6217e478e13123bcd47506bf094\",\"dweb:/ipfs/Qma4BdEwAajK3tTTMGRJc9tvLN218wcsLoQfEu8M94mnLT\"]},\"contracts/FleekPausable.sol\":{\"keccak256\":\"0x4d172714ea6231b283f96cb8e355cc9f5825e01039aa5a521e7a29bcb3ccd1cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f099c1af04b71bf43bb34fe8413dffb51a8962f91fd99d61693160c3272bd58\",\"dweb:/ipfs/QmWQe9XyVeD955es4fgbHJuSDNZuqsdTCSDMrfJvioZCdj\"]},\"contracts/IERCX.sol\":{\"keccak256\":\"0x7afe1e845aa2c43bb00b5d1612e913507a8ff98d973c52d9f3884896162bc60c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://add2ab3df569f36460b72b4dd465dc453c2dfd7e0cff38cec710b794d454bbdf\",\"dweb:/ipfs/QmXmK8cyUPKRH9Am9P85S9iw7KqMkh4dgp2DBagUJc5Hen\"]},\"contracts/util/FleekSVG.sol\":{\"keccak256\":\"0x9d52d0defd643999776563c3ac36f084ae5a04a22c76ec316a0aadf6666c3c9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87bc5cca5451b7b8f3986dec26087857fe0f09505116536efad370172fe731a3\",\"dweb:/ipfs/QmZmDxPG8BUUjrVD92T2dktcuFQBxvHgMEnWx5aPBcSfrA\"]},\"contracts/util/FleekStrings.sol\":{\"keccak256\":\"0x8e33068360a9dae2a7fc41f614ce463448a1ef8a9c01605408bb6df8ed456486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b7392c591ef6cd1aa8fb018871717c204eb533bb61392f047a48e250b961c42\",\"dweb:/ipfs/Qmc3FAfBPj36egS9xKxsBYMeWMgAYNKtDAyw1eGbdZoZGN\"]}},\"version\":1}", + "bytecode": "0x60808060405234620000975760cc549060ff8260081c16151560011462000080575061ff0019166101001760cc556040513381526001907f959581ef17eb8c8936ef9832169bc89dbcd1358765adca8ca81f28b416bb5efa90602090a26200006662000148565b620000706200009d565b604051615b059081620001c38239f35b632e15c5c160e21b81526001600482015260249150fd5b50600080fd5b60005460ff8160081c16620000f15760ff80821610620000ba5750565b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1565b505060405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b60cc5460ff8116620001ae5760ff8160081c16156200019a5760019060ff19161760cc5560007f07e8f74f605213c41c1a057118d86bca5540e9cf52c351026d0d65e46421aa1a6020604051338152a2565b5050604051635970d9f560e11b8152600490fd5b50506040516306d39fcd60e41b8152600490fdfe6040608081526004361015610015575b50600080fd5b600090813560e01c806301468deb146108ce57806301ffc9a7146108b257806302dba24d1461089657806306fdde031461087a578063081812fc1461085e578063095ea7b3146108465780630a212d2f1461082e57806323b872dd14610816578063246a908b146107fe57806327dc5cec146107e25780632d957aad146107ca578063355c5561146107a35780633ccfd60b1461078c5780633e233205146107745780633f4ba83a1461075d57806342842e0e1461074557806342966c681461072e57806342e44bbf1461071657806349aa155e146106fe5780635aa6ab3b146106e65780636352211e146106ca57806370a08231146106ae57806372c299c414610679578063736d323a146106625780637469a03b1461064b57806378278cca1461063357806383c4c00d146106085780638456cb59146105f15780638a2e25be146105d95780638c3c0a44146105c157806394ec65c5146105aa57806395d89b411461058e578063a09a16011461055e578063a22cb46514610546578063a27d0b271461052e578063a397c83014610517578063a7ef6a97146104fc578063aad045a2146104e4578063b187bd26146104b8578063b20b94f1146104a0578063b30437a01461048d578063b42dbe381461042d578063b88d4fde14610412578063b948a3c5146103fa578063ba4c458a146103e2578063c87b56dd146103bb578063cdb0e89e146103a3578063d7a75be114610387578063e4b50cb814610357578063e944725014610333578063e985e9c5146102db578063eb5fd26b146102c3578063f4fe5f0c146102925763f931517714610274575061000f565b3461028e5761028b61028536610bac565b90613604565b51f35b5080fd5b503461028e576102bf91506102ae6102a936610a0f565b61457a565b905190151581529081906020820190565b0390f35b503461028e5761028b6102d536611177565b90613d0e565b503461028e576102bf91506102ae61032c6103156102f83661115f565b6001600160a01b039091166000908152606a602052604090209091565b9060018060a01b0316600052602052604060002090565b5460ff1690565b503461028e576102bf91506102ae61032c61031561035036610c15565b9190611c8e565b503461028e576102bf915061037361036e36610a0f565b61342a565b9497959693909392919251978897886110ef565b503461028e576102bf91506102ae61039e36610beb565b611ee4565b503461028e5761028b6103b536610bac565b906138a1565b503461028e576102bf91506103d76103d236610a0f565b612f67565b9051918291826109fe565b503461028e5761028b6103f43661102e565b9161208a565b503461028e5761028b61040c36610bac565b90613b95565b503461028e5761028b61042436610fd4565b929190916117b7565b503461028e576102bf91506102ae61032c61048861031561044d36610915565b939091610479610467826000526099602052604060002090565b5491600052609a602052604060002090565b90600052602052604060002090565b611cca565b5061028b61049a36610bac565b906145b2565b503461028e5761028b6104b236610df4565b90614af7565b503461028e576102bf91506104cc36610996565b60cc54905160ff909116151581529081906020820190565b503461028e5761028b6104f636610e2f565b90614952565b503461028e5761028b61050e36610f51565b93929092613f2e565b503461028e5761028b61052936610beb565b611ffb565b503461028e5761028b61054036610915565b91614d79565b503461028e5761028b61055836610f39565b90611603565b503461028e576102bf915061057236610996565b60cc54905160089190911c60ff16151581529081906020820190565b503461028e576102bf91506105a236610996565b6103d7611406565b503461028e5761028b6105bc36610beb565b611f2c565b503461028e5761028b6105d336610c15565b90614e88565b503461028e5761028b6105eb36610ef9565b916149fb565b503461028e5761060036610996565b61028b615032565b503461028e576102bf915061061c36610996565b6106246134e8565b90519081529081906020820190565b503461028e5761028b61064536610ec6565b916137e6565b503461028e5761028b61065d36610beb565b61486e565b503461028e5761028b61067436610eaa565b6150fb565b503461028e576102bf915061069561069036610a0f565b6143c3565b90516001600160a01b0390911681529081906020820190565b503461028e576102bf91506106246106c536610e92565b61119a565b503461028e576102bf91506106956106e136610a0f565b611260565b503461028e5761028b6106f836610e4f565b91613dcb565b503461028e5761028b61071036610e2f565b90614402565b503461028e5761028b61072836610df4565b90614bea565b503461028e5761028b61074036610a0f565b6140ab565b503461028e5761028b61075736610a5c565b9161177d565b503461028e5761076c36610996565b61028b61509e565b503461028e5761028b61078636610ddc565b90615171565b503461028e5761079b36610996565b61028b615183565b506102bf91506106246107b536610c8c565b9b9a909a999199989298979397969496612880565b503461028e5761028b6107dc36610c15565b90614c8a565b503461028e576102bf91506103d76107f936610beb565b611d2e565b503461028e5761028b61081036610bac565b90613a17565b503461028e5761028b61082836610a5c565b9161172f565b503461028e5761028b61084036610a40565b906142b2565b503461028e5761028b61085836610a21565b9061149f565b503461028e576102bf915061069561087536610a0f565b6115c5565b503461028e576102bf915061088e36610996565b6103d761134f565b503461028e576102bf91506106246108ad3661097e565b612070565b503461028e576102bf91506102ae6108c93661095c565b613515565b503461028e5761028b6108e036610915565b91614f69565b6001600160a01b038116141561000f57565b60043590610905826108e6565b565b6101643590610905826108e6565b606090600319011261000f57600435906024356001811015610941579060443561093e816108e6565b90565b505050600080fd5b6001600160e01b03198116141561000f57565b602090600319011261000f5760043561093e81610949565b6002111561000f57565b602090600319011261000f5760043561093e81610974565b600090600319011261000f57565b918091926000905b8282106109c45750116109bd575050565b6000910152565b915080602091830151818601520182916109ac565b906020916109f2815180928185528580860191016109a4565b601f01601f1916010190565b90602061093e9281815201906109d9565b602090600319011261000f5760043590565b604090600319011261000f57600435610a39816108e6565b9060243590565b604090600319011261000f576004359060243561093e816108e6565b606090600319011261000f57600435610a74816108e6565b90602435610a81816108e6565b9060443590565b50634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117610aba57604052565b610ac2610a88565b604052565b90601f801991011681019081106001600160401b03821117610aba57604052565b60405190608082018281106001600160401b03821117610aba57604052565b6040519060c082018281106001600160401b03821117610aba57604052565b6020906001600160401b038111610b43575b601f01601f19160190565b610b4b610a88565b610b38565b929192610b5c82610b26565b91610b6a6040519384610ac7565b829481845281830111610b87578281602093846000960137010152565b5050505050600080fd5b9080601f830112156109415781602061093e93359101610b50565b906040600319830112610be45760043591602435906001600160401b038211610bdb5761093e91600401610b91565b50505050600080fd5b5050600080fd5b6020600319820112610be457600435906001600160401b0382116109415761093e91600401610b91565b604090600319011261000f57600435610c2d81610974565b9060243561093e816108e6565b9181601f84011215610941578235916001600160401b038311610bdb576020838186019501011161094157565b610124359062ffffff8216821415610be457565b6101443590811515821415610be457565b90610180600319830112610be457610ca26108f8565b91602435906001600160401b03808311610b8757610cc4826004948501610b91565b93604435828111610dd05783610cdb918601610b91565b93606435838111610dc35784610cf2918301610b91565b93608435848111610db55781610d09918401610c3a565b9490949360a435828111610da55783610d23918601610b91565b9360c435838111610d945784610d3a918301610b91565b9360e435848111610d825781610d51918401610b91565b9361010435908111610d8257610d679201610b91565b90610d70610c67565b90610d79610c7b565b9061093e610907565b50505050505050505050505050600080fd5b505050505050505050505050600080fd5b5050505050505050505050600080fd5b505050505050505050600080fd5b5050505050505050600080fd5b50505050505050600080fd5b604090600319011261000f57600435610a3981610974565b6040600319820112610be457600435906001600160401b03821161094157610e1e91600401610b91565b906024358015158114156109415790565b604090600319011261000f57600435906024358015158114156109415790565b906060600319830112610be45760043591602435906001600160401b038211610bdb57610e7e91600401610b91565b9060443562ffffff8116811415610bdb5790565b602090600319011261000f5760043561093e816108e6565b602090600319011261000f57600435801515811415610be45790565b906040600319830112610be45760043591602435906001600160401b038211610bdb57610ef591600401610c3a565b9091565b906060600319830112610be45760043591602435906001600160401b038211610bdb57610f2891600401610b91565b90604435801515811415610bdb5790565b604090600319011261000f57600435610e1e816108e6565b9060a0600319830112610be457600435916001600160401b0390602435828111610b875781610f8291600401610b91565b92604435838111610fc95782610f9a91600401610b91565b92606435818111610dd05783610fb291600401610b91565b92608435918211610dd05761093e91600401610b91565b505050505050600080fd5b906080600319830112610be457600435610fed816108e6565b91602435610ffa816108e6565b9160443591606435906001600160401b038211610fc95780602383011215610fc95781602461093e93600401359101610b50565b906060600319830112610be4576001600160401b0390600435828111610bdb578361105b91600401610b91565b92602435838111610b87578161107391600401610b91565b9260443591818311610fc95780602384011215610fc95782600401359182116110e2575b8160051b604051936020936110ae85840187610ac7565b8552602484860192820101928311610dc357602401905b8282106110d3575050505090565b813581529083019083016110c5565b6110ea610a88565b611097565b959062ffffff946111376111589561112960c0999661111b611145969d9e9d60e08e81815201906109d9565b8c810360208e0152906109d9565b908a820360408c01526109d9565b9088820360608a01526109d9565b91608087015285820360a08701526109d9565b9416910152565b604090600319011261000f57600435610c2d816108e6565b604090600319011261000f576004359060243562ffffff81168114156109415790565b6001600160a01b031680156111ba57600052606860205260406000205490565b505060405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b1561121a57565b5060405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152606760205260409020546001600160a01b031661093e811515611213565b90600182811c921680156112b5575b602083101461129d57565b5050634e487b7160e01b600052602260045260246000fd5b91607f1691611292565b90600092918054916112d083611283565b91828252600193848116908160001461133257506001146112f2575b50505050565b90919394506000526020928360002092846000945b83861061131e5750505050010190388080806112ec565b805485870183015294019385908201611307565b60ff191660208401525050604001935038915081905080806112ec565b604051906000826065549161136383611283565b808352926001908181169081156113e9575060011461138a575b5061090592500383610ac7565b6065600090815291507f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b8483106113ce575061090593505081016020013861137d565b81935090816020925483858a010152019101909185926113b5565b94505050505060ff1916602083015261090582604081013861137d565b604051906000826066549161141a83611283565b808352926001908181169081156113e95750600114611440575061090592500383610ac7565b6066600090815291507f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b848310611484575061090593505081016020013861137d565b81935090816020925483858a0101520191019091859261146b565b906114a981611260565b6001600160a01b038181169084168114611572573314908115611544575b50156114d65761090591611aa1565b505060405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260849150fd5b6001600160a01b03166000908152606a6020526040902060ff915061156a903390610315565b5416386114c7565b5050505050608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152fd5b6000818152606760205260409020546115e8906001600160a01b03161515611213565b6000908152606960205260409020546001600160a01b031690565b6001600160a01b038116919033831461168457816116436116549233600052606a60205260406000209060018060a01b0316600052602052604060002090565b9060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3565b50505050606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b156116d357565b5060405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b9061090592916117476117428433611853565b6116cc565b611926565b60405190602082018281106001600160401b03821117611770575b60405260008252565b611778610a88565b611767565b90916109059260405192602084018481106001600160401b038211176117aa575b604052600084526117b7565b6117b2610a88565b61179e565b906117db9392916117cb6117428433611853565b6117d6838383611926565b611bad565b156117e257565b5060405162461bcd60e51b8152806117fc60048201611800565b0390fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b6001600160a01b038061186584611260565b16928183169284841494851561189b575b50508315611885575b50505090565b611891919293506115c5565b161438808061187f565b6000908152606a602090815260408083206001600160a01b03949094168352929052205460ff1693503880611876565b156118d257565b5060405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b61194a9061193384611260565b6001600160a01b03828116939091821684146118cb565b8316928315611a4b576119c8826119658784611a2296613559565b611987856119816119758a611260565b6001600160a01b031690565b146118cb565b6119ae61199e886000526069602052604060002090565b80546001600160a01b0319169055565b6001600160a01b0316600090815260686020526040902090565b80546000190190556001600160a01b038116600090815260686020526040902060018154019055611a03856000526067602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000604051a4565b505050505050608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152fd5b600082815260696020526040902080546001600160a01b0319166001600160a01b0383161790556001600160a01b0380611ada84611260565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256000604051a4565b600090815260676020526040902054610905906001600160a01b03161515611213565b90816020910312610be4575161093e81610949565b6001600160a01b03918216815291166020820152604081019190915260806060820181905261093e929101906109d9565b506040513d6000823e3d90fd5b3d15611ba8573d90611b8e82610b26565b91611b9c6040519384610ac7565b82523d6000602084013e565b606090565b92909190823b15611c5c57611be0926020926000604051809681958294630a85bd0160e11b9a8b85523360048601611b3f565b03926001600160a01b03165af160009181611c3c575b50611c2e57505050611c06611b7d565b80519081611c2957505060405162461bcd60e51b8152806117fc60048201611800565b602001fd5b6001600160e01b0319161490565b611c55919250611c4c3d82610ac7565b3d810190611b2a565b9038611bf6565b50505050600190565b50634e487b7160e01b600052602160045260246000fd5b60021115611c8657565b610905611c65565b611c9781611c7c565b6000526098602052604060002090565b611cb081611c7c565b6000526097602052604060002090565b60011115611c8657565b906001811015611ce3575b600052602052604060002090565b611ceb611c65565b611cd5565b90611d03602092828151948592016109a4565b0190565b6020611d209181604051938285809451938492016109a4565b810161013081520301902090565b6001600160a01b0390816002611d4383611d07565b015460101c1615611ecf57611d5790611d07565b908154611d63906156b9565b906001830154611d72906156b9565b92600201548060081c60ff16611d8790615955565b91611d9460ff8316615955565b908260101c16611da3906158a0565b9160b01c60ff16611db38161473a565b611dbc906156b9565b604051607b60f81b60208201529586959194916021870169113a37b5b2b724b2111d60b11b8152600a01611def91611cf0565b611df8906156ac565b671139b1b7b932911d60c11b8152600801611e1291611cf0565b611e1b906156ac565b6e113730b6b2ab32b934b334b2b2111d60891b8152600f01611e3c91611cf0565b611e45906156ac565b711131b7b73a32b73a2b32b934b334b2b2111d60711b8152601201611e6991611cf0565b611e72906156ac565b681137bbb732b9111d1160b91b8152600901611e8d91611cf0565b61088b60f21b8152600201681139ba30ba3ab9911d60b91b8152600901611eb391611cf0565b607d60f81b815260010103601f198101825261093e9082610ac7565b5050604051630d436c3560e21b815260049150fd5b6001600160a01b036002611ef783611d07565b015460101c1615611f18576002611f0f60ff92611d07565b015460081c1690565b5050604051630d436c3560e21b8152600490fd5b6001600160a01b036002611f3f83611d07565b015460101c1615611f18576001611f5582611d07565b01611f608154611fc7565b9055611f6b81611d07565b547f3ea1c0fcf71b86fca8f96ccac3cf26fba8983d3bbbe7bd720f1865d67fbaee43611fab6001611f9b85611d07565b0154604051918291339683611fdf565b0390a3565b50634e487b7160e01b600052601160045260246000fd5b6001906000198114611fd7570190565b611d03611fb0565b929190611ff66020916040865260408601906109d9565b930152565b6001600160a01b03600261200e83611d07565b015460101c1615611f1857600161202482611d07565b01541561204157600161203682611d07565b01611f608154612055565b50506040516341f3125f60e11b8152600490fd5b8015612063575b6000190190565b61206b611fb0565b61205c565b61207981611c7c565b60005260fe60205260406000205490565b90916000549260ff8460081c1615809481956121ac575b811561218c575b501561212c576120ce92846120c5600160ff196000541617600055565b612113576121ba565b6120d457565b6120e461ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61212761010061ff00196000541617600055565b6121ba565b5050505050608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152fd5b303b1591508161219e575b50386120a8565b6001915060ff161438612197565b600160ff82161091506120a1565b9291906121d760ff60005460081c166121d2816122fc565b6122fc565b83516001600160401b0381116122ef575b6121fc816121f7606554611283565b612374565b602080601f8311600114612259575090806122399392612246969760009261224e575b50508160011b916000199060031b1c191617606555612465565b612241612638565b6127b2565b6109056151ea565b01519050388061221f565b90601f1983169661228c60656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c790565b926000905b8982106122d75750509183916001936122399695612246999a106122be575b505050811b01606555612465565b015160001960f88460031b161c191690553880806122b0565b80600185968294968601518155019501930190612291565b6122f7610a88565b6121e8565b1561230357565b5060405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b818110612368575050565b6000815560010161235d565b90601f8211612381575050565b6109059160656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7906020601f840160051c830193106123cb575b601f0160051c019061235d565b90915081906123be565b90601f82116123e2575050565b6109059160666000527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354906020601f840160051c830193106123cb57601f0160051c019061235d565b9190601f811161243a57505050565b610905926000526020600020906020601f840160051c830193106123cb57601f0160051c019061235d565b9081516001600160401b03811161254f575b61248b81612486606654611283565b6123d5565b602080601f83116001146124c757508192936000926124bc575b50508160011b916000199060031b1c191617606655565b0151905038806124a5565b90601f198316946124fa60666000527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435490565b926000905b87821061253757505083600195961061251e575b505050811b01606655565b015160001960f88460031b161c19169055388080612513565b806001859682949686015181550195019301906124ff565b612557610a88565b612477565b91909182516001600160401b03811161262b575b6125848161257e8454611283565b8461242b565b602080601f83116001146125c05750819293946000926125b5575b50508160011b916000199060031b1c1916179055565b01519050388061259f565b90601f198316956125d685600052602060002090565b926000905b888210612613575050836001959697106125fa575b505050811b019055565b015160001960f88460031b161c191690553880806125f0565b806001859682949686015181550195019301906125db565b612633610a88565b612570565b600061264a60ff825460081c166122fc565b808052609860209081526040808320336000908152908352819020549192909160ff1661277e57808052609883528181203360009081526020919091526040902061269d905b805460ff19166001179055565b808052609783528181206126b18154612792565b905581516001815233602082018190527faf048a30703f33a377518eb62cc39bd3a14d6d1a1bb8267dcc440f1bde67b61a949183908690604090a36001825260988152828220336000908152602091909152604090205460ff166127695791816097600194858495526098815261273f612690338686209060018060a01b0316600052602052604060002090565b858352522061274e8154612792565b90555160018152336020820181905292908060408101611fab565b5050516397b705ed60e01b8152600492509050fd5b50516397b705ed60e01b8152600492509050fd5b6001906001198111611fd7570190565b6002906002198111611fd7570190565b906127c460ff60005460081c166122fc565b60005b825181101561281157806127dd6127ff92611c7c565b8351811015612804575b6127fa60208260051b860101518261282d565b611fc7565b6127c7565b61280c612816565b6127e7565b509050565b50634e487b7160e01b600052603260045260246000fd5b6040907f6819853ffee8927169953e7bdc42aaba347fb03ff918a45bfccaf88626d900969261285b82611c7c565b8160005260fe60205280836000205582519161287681611c7c565b82526020820152a1565b9496919792989b999093959b612894612ee1565b600160005260986020526128d26128ce61032c8d7fe66b7f18a15fed257e722ee4e0b46d479842712099771fae6234a4975b3be6fa610315565b1590565b612a5c578a938c9389612a4d575b610163549e8f9a6128f18c8b612db2565b8d8d8d6101635461290190612792565b6101635561291a90600052610164602052604060002090565b906129258c8361255c565b612932906001830161255c565b61293f826002830161255c565b61294d838e60038401612a8a565b61295a876004830161255c565b60058101805462ffffff191662ffffff8a161790556000600682015561297e610ae8565b9184835285602084015286604084015260608301526007016129a99060008052602052604060002090565b906129b391612b57565b6040519a8b9a600160a01b60019003169e339e6129d09b8d612c97565b037f11d53b6a608f8a1150f88cdb3e563af3830dd531f39be8e1cdaa8cc8b43d77b491a4612a0983600052610165602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055612a3b82600052610166602052604060002090565b805460ff1916905561093e9082612ebd565b612a578a8a61522b565b6128e0565b505050505050505050505050505060405163070198dd60e51b8152806117fc60048201906001602083019252565b9092916001600160401b038111612b4a575b612aaa8161257e8454611283565b6000601f8211600114612ae35781929394600092612ad85750508160011b916000199060031b1c1916179055565b01359050388061259f565b601f19821694612af884600052602060002090565b91805b878110612b32575083600195969710612b1857505050811b019055565b0135600019600384901b60f8161c191690553880806125f0565b90926020600181928686013581550194019101612afb565b612b52610a88565b612a9c565b91909182519283516001600160401b038111612c69575b612b8281612b7c8554611283565b8561242b565b6020948590601f8311600114612bf05761090595968360609460039694612bcb94600092612be5575b50508160011b9160001990881b1c19161786555b8201516001860161255c565b612bdc60408201516002860161255c565b0151910161255c565b015190503880612bab565b90601f19831691612c0686600052602060002090565b9260005b818110612c5257508460039694612bcb946109059a9b9460609860019510612c3a575b505050811b018655612bbf565b0151600019838a1b60f8161c19169055388080612c2d565b929389600181928786015181550195019301612c0a565b612c71610a88565b612b6e565b908060209392818452848401376000828201840152601f01601f1916010190565b9790612d5597612d129b9e9d9b6109059d98612d048c612d4b9a6101409f999a612cf6612d3c9c612ce8612d2e9c612cda612d209c610160808a528901906109d9565b9087820360208901526109d9565b9085820360408701526109d9565b926060818503910152612c76565b8c810360808e0152906109d9565b908a820360a08c01526109d9565b9088820360c08a01526109d9565b9086820360e08801526109d9565b62ffffff909916610100850152565b1515610120830152565b6001600160a01b03909216910152565b15612d6c57565b5060405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b6001600160a01b038116908115612e7557600083815260676020526040902054612e4b9190612ded906001600160a01b031615155b15612d65565b612df561520c565b600084815260676020526040902054612e18906001600160a01b03161515612de7565b6001600160a01b038116600090815260686020526040902060018154019055611a03846000526067602052604060002090565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef81604051a4565b50505050606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b906109059160005261013160205260406000209060ff801983541691151516179055565b6000805260fe6020527f32796e36004994222362c2f9423d5e208bb848170964890784a8d59ed40f50af5434811415612f175750565b6024915060405190635f7e28df60e01b82526004820152fd5b600160005260fe6020527f457c8a48b4735f56b938837eb0a8a5f9c55f23c1a85767ce3b65c3e59d3d32b75434811415612f175750565b600081815260676020526040902054612f8a906001600160a01b03161515611213565b612f9381611260565b90600090815260206101318152604060ff818420541692610166835260ff828220541690610164845282812094613006845197612fcf89610a9f565b601d89527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000878a01526001600160a01b03166158a0565b9260038701600588019261304a85613029613024875462ffffff1690565b61599b565b8b8a51938492839263891c235f60e01b8452886004820191600486016155e8565b038173__$ecf603b2c2aa531f37c90ec146d2a3e91a$__5af495861561341d575b80966133f3575b505061307d90615955565b9161308790615955565b90600789019160068a015493836130a986809690600052602052604060002090565b946130bd9190600052602052604060002090565b600101946130ca906156b9565b955462ffffff166130da9061599b565b9689519b8c998c8b016130f590600190607b60f81b81520190565b67113730b6b2911d1160c11b81526008016131109083615630565b61088b60f21b81526002016e113232b9b1b934b83a34b7b7111d1160891b8152600f016131409060018401615630565b61088b60f21b8152600201681137bbb732b9111d1160b91b815260090161316691611cf0565b61088b60f21b81526002016f1132bc3a32b93730b62fbab936111d1160811b815260100161319691600201615630565b61088b60f21b8152600201681134b6b0b3b2911d1160b91b81526009016131bc91611cf0565b61088b60f21b81526002017f226163636573735f706f696e745f6175746f5f617070726f76616c223a0000008152601d016131f691611cf0565b6131ff906156ac565b6a113b32b934b334b2b2111d60a91b8152600b0161321c91611cf0565b613225906156ac565b6e2261747472696275746573223a205b60881b8152600f017f7b2274726169745f74797065223a2022454e53222c202276616c7565223a22008152601f0161326c91615630565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a2022436f6d6d69742048617368222c20227681526630b63ab2911d1160c91b60208201526027016132b791615630565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a20225265706f7369746f7279222c20227661815265363ab2911d1160d11b602082015260260161330191615630565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a202256657273696f6e222c202276616c7565815262111d1160e91b602082015260230161334891611cf0565b62089f4b60ea1b81526003017f7b2274726169745f74797065223a2022436f6c6f72222c202276616c7565223a8152601160f91b602082015260210161338d91611cf0565b61227d60f01b8152600201605d60f81b8152600101607d60f81b81526001010392601f199384810182526133c19082610ac7565b6133ca906154af565b905193849283016133da91611cf0565b6133e391611cf0565b03908101825261093e9082610ac7565b61307d92965090613415913d90823e61340c3d82610ac7565b3d81019061558a565b949038613072565b613425611b70565b61306b565b60008181526067602052604090205461344d906001600160a01b03161515611213565b60005261016460205260409081600020600681015462ffffff6005830154169380516134848161347d81876112bf565b0382610ac7565b9481516134988161347d81600189016112bf565b9460046134d584516134b18161347d8160028c016112bf565b9661347d86516134c88161347d81600387016112bf565b97965180948193016112bf565b9190565b60018110612063576000190190565b6101635480156135015760018110612063576000190190565b50506040516327e4ec1b60e21b8152600490fd5b63ffffffff60e01b166380ac58cd60e01b8114908115613548575b811561353a575090565b6301ffc9a760e01b14919050565b635b5e139f60e01b81149150613530565b9061356261520c565b6001600160a01b03918216151580806135a2575b1561358757505050610905906135ad565b61359057505050565b16156135995750565b610905906135ad565b508282161515613576565b806000526099602052604060002060018154811981116135f7575b0190557f8c7eb22d1ba10f86d9249f2a8eb0e3e35b4f0b2f21f92dea9ec25a4d84b20fa06020604051338152a2565b6135ff611fb0565b6135c8565b61360d81611260565b6001600160a01b0316331415613749575b600081815260676020526040902054613641906001600160a01b03161515611213565b8060005260206101648152600260406000200190835180916001600160401b03821161373c575b61367c826136768654611283565b8661242b565b80601f83116001146136ce57506000916136c3575b508160011b916000199060031b1c19161790555b600080516020615aa283398151915260405180611fab339582613757565b905084015138613691565b9150601f1983166136e485600052602060002090565b926000905b828210613724575050908360019493921061370b575b5050811b0190556136a5565b86015160001960f88460031b161c1916905538806136ff565b80600185968294968c015181550195019301906136e9565b613744610a88565b613668565b6137528161378a565b61361e565b90608061093e9260408152600b60408201526a195e1d195c9b985b15549360aa1b606082015281602082015201906109d9565b600081815260996020908152604080832054609a83528184209084528252808320838052825280832033845290915281205460ff16156137c8575050565b604492506040519163158eff0360e21b835260048301526024820152fd5b90611fab600080516020615aa28339815191529161380384611260565b6001600160a01b0316331415613893575b61381e858261522b565b600084815260676020526040902054613841906001600160a01b03161515611213565b6138638582600361385d88600052610164602052604060002090565b01612a8a565b604051918291604083526003604084015262454e5360e81b60608401526080602084015233966080840191612c76565b61389c8461378a565b613814565b6138aa81611260565b6001600160a01b03163314156139dd575b6000818152606760205260409020546138de906001600160a01b03161515611213565b8060005260206101648152604060002090835180916001600160401b0382116139d0575b613910826136768654611283565b80601f83116001146139625750600091613957575b508160011b916000199060031b1c19161790555b600080516020615aa283398151915260405180611fab3395826139eb565b905084015138613925565b9150601f19831661397885600052602060002090565b926000905b8282106139b8575050908360019493921061399f575b5050811b019055613939565b86015160001960f88460031b161c191690553880613993565b80600185968294968c0151815501950193019061397d565b6139d8610a88565b613902565b6139e68161378a565b6138bb565b90608061093e926040815260046040820152636e616d6560e01b606082015281602082015201906109d9565b613a2081611260565b6001600160a01b0316331415613b54575b600081815260676020526040902054613a54906001600160a01b03161515611213565b8060005260206101648152600180604060002001918451906001600160401b038211613b47575b613a89826136768654611283565b80601f8311600114613adc575081928291600093613ad1575b501b916000199060031b1c19161790555b600080516020615aa283398151915260405180611fab339582613b62565b870151925038613aa2565b9082601f198116613af287600052602060002090565b936000905b87838310613b2d5750505010613b14575b5050811b019055613ab3565b86015160001960f88460031b161c191690553880613b08565b8b8601518755909501949384019386935090810190613af7565b613b4f610a88565b613a7b565b613b5d8161378a565b613a31565b90608061093e9260408152600b60408201526a3232b9b1b934b83a34b7b760a91b606082015281602082015201906109d9565b613b9e81611260565b6001600160a01b0316331415613cd4575b600081815260676020526040902054613bd2906001600160a01b03161515611213565b8060005260206101648152600460406000200190835180916001600160401b038211613cc7575b613c07826136768654611283565b80601f8311600114613c595750600091613c4e575b508160011b916000199060031b1c19161790555b600080516020615aa283398151915260405180611fab339582613ce2565b905084015138613c1c565b9150601f198316613c6f85600052602060002090565b926000905b828210613caf5750509083600194939210613c96575b5050811b019055613c30565b86015160001960f88460031b161c191690553880613c8a565b80600185968294968c01518155019501930190613c74565b613ccf610a88565b613bf9565b613cdd8161378a565b613baf565b90608061093e926040815260046040820152636c6f676f60e01b606082015281602082015201906109d9565b613d1781611260565b6001600160a01b0316331415613dbd575b600081815260676020526040902054613d4b906001600160a01b03161515611213565b600081815261016460205260409020600501805462ffffff191662ffffff841617905562ffffff6040519260408452600560408501526431b7b637b960d91b60608501521660208301527f7a3039988e102050cb4e0b6fe203e58afd9545e192ef2ca50df8d14ee2483e7e60803393a3565b613dc68161378a565b613d28565b92919092613dd881611260565b6001600160a01b0316331415613f20575b600081815260676020526040902054613e0c906001600160a01b03161515611213565b80600052602093610164855260046040600020018151956001600160401b038711613f13575b613e408761257e8454611283565b80601f8811600114613ea2575095806109059697600091613e97575b508160011b916000199060031b1c19161790555b81600080516020615aa283398151915260405180613e8f339582613ce2565b0390a3613d0e565b905083015138613e5c565b90601f198816613eb784600052602060002090565b926000905b828210613efb575050918891610905989960019410613ee2575b5050811b019055613e70565b85015160001960f88460031b161c191690553880613ed6565b80600185968294968a01518155019501930190613ebc565b613f1b610a88565b613e32565b613f298161378a565b613de9565b92909391613f3b84611260565b6001600160a01b031633141561402e575b600084815260676020526040902054613f6f906001600160a01b03161515611213565b613fe4613f7a610ae8565b868152826020820152836040820152846060820152613fdf6007613fa988600052610164602052604060002090565b016006613fc189600052610164602052604060002090565b0190613fcd8254611fc7565b80925590600052602052604060002090565b612b57565b613fec610ae8565b9485526020850152604084015260608301527fc34cc0b39823c062f2d31bfcde1d16c45decb5d1378a2f63942221b5d39dfbf060405180611fab33958261403c565b6140378461378a565b613f4c565b604081526005604082015264189d5a5b1960da1b6060820152608081019060209160808383015291610100820193926000905b6004821061407f57505050505090565b9091929394838061409c600193607f1989820301865289516109d9565b9701920192019093929161406f565b6140b481611260565b6001600160a01b039081163314156141d55760008183926140d484611260565b6140dc61520c565b16151580806141ce575b83146141b757506140f6836135ad565b6140ff83611260565b61411661199e856000526069602052604060002090565b6001600160a01b03811660009081526068602052604090208319815401905561414c61199e856000526067602052604060002090565b167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef82604051a4614193600261418d83600052610164602052604060002090565b016141ef565b61419a5750565b6141b261090591600052610164602052604060002090565b61426a565b6141c0576140f6565b6141c9836135ad565b6140f6565b50826140e6565b5060249150604051906355d2292f60e11b82526004820152fd5b61093e9054611283565b6001600160fe1b038111600116614211575b60021b90565b614219611fb0565b61420b565b6142288154611283565b9081614232575050565b81601f60009311600114614244575055565b8183526020832061426091601f0160051c81019060010161235d565b8160208120915555565b60066000916142788161421e565b6142846001820161421e565b6142906002820161421e565b61429c6003820161421e565b6142a86004820161421e565b8260058201550155565b6142bb81611260565b6001600160a01b03163314156143a8576001600160a01b03821660009081527fe66b7f18a15fed257e722ee4e0b46d479842712099771fae6234a4975b3be6fa602052604090205460ff161561438c5761431481611b07565b61432d82611a0383600052610165602052604060002090565b60408051818152600891810191909152673b32b934b334b2b960c11b60608201526001600160a01b03909216602083015233917f967cd1f911fe3c627b223c427ab2e2a18d89bef4a19ba762b552fd5fbc1033aa908060808101611fab565b505060405163070198dd60e51b81526001600482015260249150fd5b905060249150604051906355d2292f60e11b82526004820152fd5b6000818152606760205260409020546143e6906001600160a01b03161515611213565b600090815261016560205260409020546001600160a01b031690565b61440a6144d4565b8060005261016560205260409160018060a01b038360002054163314156144bb5760008281526067602052604090205461444e906001600160a01b03161515611213565b8160005261016660205261447181846000209060ff801983541691151516179055565b6008835193808552840152671d995c9a599a595960c21b6060840152151560208301527e91a55492d3e3f4e2c9b36ff4134889d9118003521f9d531728503da510b11f60803393a3565b509060249250519063926e6e9960e01b82526004820152fd5b3360009081527fe66b7f18a15fed257e722ee4e0b46d479842712099771fae6234a4975b3be6fa602052604090205460ff161561450d57565b5060405163070198dd60e51b815260016004820152602490fd5b3360009081527fddaeee8e61001dbcfaf4f92c6943552c392a86665d734d3c1905d7b3c23b1b1e602052604090205460ff161561456057565b5060405163070198dd60e51b815260006004820152602490fd5b60008181526067602052604090205461459d906001600160a01b03161515611213565b60005261016660205260ff6040600020541690565b6145ba61520c565b6145c2612f30565b6000818152606760205260409020546145e5906001600160a01b03161515611213565b6001600160a01b0361460c60026145fb85611d07565b015460101c6001600160a01b031690565b16614725577fb3f4be48c43e81d71721c23e88ed2db7f6782bf8b181c690104db1e31f82bbe890604051817f8140554c907b4ba66a04ea1f43b882cba992d3db4cd5c49298a56402d7b36ca233928061466588826109fe565b0390a361468061032c82600052610131602052604060002090565b156146da576146d5906146c7614694610b07565b828152600060208201819052604082018190526060820152336080820152600160a08201526146c286611d07565b614744565b604051918291339583614820565b0390a2565b6146d5906147176146e9610b07565b828152600060208201819052604082018190526060820152336080820152600060a08201526146c286611d07565b6040519182913395836147fc565b505060405163142d0c2f60e11b815260049150fd5b60041115611c8657565b6002908251815560208301516001820155019061477360408201511515839060ff801983541691151516179055565b6060810151825461ff00191690151560081b61ff00161782556080810151825462010000600160b01b0319811660109290921b62010000600160b01b0316918217845560a0909201516147c58161473a565b60048110156147ef575b62010000600160b81b03199092161760b09190911b60ff60b01b16179055565b6147f7611c65565b6147cf565b6040906148166000939594956060835260608301906109d9565b9460208201520152565b6040906148166001939594956060835260608301906109d9565b6040906148166003939594956060835260608301906109d9565b6040906148166002939594956060835260608301906109d9565b61487661520c565b6001600160a01b0380600261488a84611d07565b015460101c1615611ecf5760026148a083611d07565b015460101c1633141561493e576148cf60026148bb83611d07565b01805460ff60b01b1916600360b01b179055565b6148d881611d07565b546040517fb3f4be48c43e81d71721c23e88ed2db7f6782bf8b181c690104db1e31f82bbe833918061490b85878361483a565b0390a27fef2f6bed86b96d79b41799f5285f73b31274bb303ebe5d55a3cb48c567ab2db060405180611fab3395826109fe565b5050604051631851b23d60e01b8152600490fd5b61495b81611260565b6001600160a01b03163314156143a85760008181526067602052604090205461498e906001600160a01b03161515611213565b6149988282612ebd565b6040519160408352601760408401527f616363657373506f696e744175746f417070726f76616c0000000000000000006060840152151560208301527e91a55492d3e3f4e2c9b36ff4134889d9118003521f9d531728503da510b11f60803393a3565b919091614a0781611260565b6001600160a01b0316331415614adb57614a2083611d07565b8181541415614ac55760020190614a3c825460ff9060b01c1690565b614a458161473a565b614aaf577fb3f4be48c43e81d71721c23e88ed2db7f6782bf8b181c690104db1e31f82bbe89215614a8b57815460ff60b01b1916600160b01b179091556146d5906146c7565b815460ff60b01b1916600160b11b179091556146d590604051918291339583614854565b5050505050600460405163d9e5c51160e01b8152fd5b50505050506004604051636653b1a360e01b8152fd5b91505060249150604051906355d2292f60e11b82526004820152fd5b614aff6144d4565b614b0881614bbf565b600081815261016560205260409020546001600160a01b0391908216331415614ba257506002614b3783611d07565b015460101c1615611ecf57614b63826002614b5184611d07565b019060ff801983541691151516179055565b7fe2e598f7ff2dfd4bc3bd989635401b4c56846b7893cb7eace51d099f21e69bff611fab614b9083611d07565b54604051918291339615159583611fdf565b92505050602491506040519063926e6e9960e01b82526004820152fd5b6001600160a01b036002614bd283611d07565b015460101c1615611f1857614be690611d07565b5490565b614bf26144d4565b614bfb81614bbf565b600081815261016560205260409020546001600160a01b0391908216331415614ba257506002614c2a83611d07565b015460101c1615611ecf57614c5d826002614c4484611d07565b019061ff00825491151560081b169061ff001916179055565b7f17bd9b465aa0cdc6b308874903e9c38b13f561ecb1f2edaa8bf3969fe603d11c611fab614b9083611d07565b614c9261520c565b614c9a614527565b614ca381611c7c565b60008181526098602090815260408083206001600160a01b038616845290915290205460ff16614d6457614cd681611c7c565b60008181526098602090815260408083206001600160a01b03861684529091529020614d0190612690565b614d0a81611ca7565b614d148154612792565b9055614d1f81611c7c565b60408051600181523360208201526001600160a01b03909316927faf048a30703f33a377518eb62cc39bd3a14d6d1a1bb8267dcc440f1bde67b61a9181908101611fab565b50506040516397b705ed60e01b815260049150fd5b614d8161520c565b614d8a81611260565b6001600160a01b03908116331415614e6b57816000526099602052614dd261032c8561031586610488604060002054609a602052604060002090600052602052604060002090565b614e55577fa4e6ad394cc40a3bae0d24623f88f7bb2e1463d19dab64bafd9985b0bc78211890614e2f6126908661031587610488614e1a896000526099602052604060002090565b546104798a600052609a602052604060002090565b614e3884611cc0565b60408051600181523360208201529190951694819081015b0390a4565b505050505060046040516397b705ed60e01b8152fd5b5091505060249150604051906355d2292f60e11b82526004820152fd5b614e9061520c565b614e98614527565b614eab6128ce61032c8461031585611c8e565b614d6457614eb881611c7c565b801580614f56575b614f4157614ede614ed48361031584611c8e565b805460ff19169055565b614ee781611ca7565b614ef181546134d9565b9055614efc81611c7c565b60408051600081523360208201526001600160a01b03909316927faf048a30703f33a377518eb62cc39bd3a14d6d1a1bb8267dcc440f1bde67b61a9181908101611fab565b50506040516360ed092b60e01b815260049150fd5b506001614f6282611ca7565b5414614ec0565b614f7161520c565b614f7a81611260565b6001600160a01b03908116331415614e6b57816000526099602052614fc56128ce61032c8661031587610488604060002054609a602052604060002090600052602052604060002090565b614e55577fa4e6ad394cc40a3bae0d24623f88f7bb2e1463d19dab64bafd9985b0bc7821189061500d614ed48661031587610488614e1a896000526099602052604060002090565b61501684611cc0565b6040805160008152336020820152919095169481908101614e50565b61503a614527565b61504261520c565b60cc5460ff8160081c161561508a5760019060ff19161760cc5560007f07e8f74f605213c41c1a057118d86bca5540e9cf52c351026d0d65e46421aa1a6020604051338152a2565b5050604051635970d9f560e11b8152600490fd5b6150a6614527565b60cc5460ff8116156150e75760ff191660cc5560007f07e8f74f605213c41c1a057118d86bca5540e9cf52c351026d0d65e46421aa1a6020604051338152a2565b50506040516355d413dd60e01b8152600490fd5b615103614527565b60cc549015159060ff8160081c16151582146151575761ff008260081b169061ff0019161760cc557f959581ef17eb8c8936ef9832169bc89dbcd1358765adca8ca81f28b416bb5efa6020604051338152a2565b506024915060405190632e15c5c160e21b82526004820152fd5b906109059161517e614527565b61282d565b61518b614527565b4780600081156151e1575b600080809381933390f1156151d4575b6040519081527f8c7cdad0d12a8db3e23561b42da6f10c8137914c97beff202213a410e1f520a360203392a2565b6151dc611b70565b6151a6565b506108fc615196565b6151fb60ff60005460081c166122fc565b60cc805461ffff1916610100179055565b60ff60cc541661521857565b506040516306d39fcd60e41b8152600490fd5b615237916000916152ff565b604051906302571be360e01b825260048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa9081156152c6575b600091615298575b506001600160a01b031633141561528557565b50604051631644084960e21b8152600490fd5b906152a33d83610ac7565b6020823d810103126152c05750516152ba816108e6565b38615272565b91505080fd5b6152ce611b70565b61526a565b908210156152df570190565b611d03612816565b90939293848311610b87578411610bdb578101920390565b91805b82811061535b5750906153199181615320946152e7565b3691610b50565b60208151910120604051615355816153476020820194856040916000825260208201520190565b03601f198101835282610ac7565b51902090565b601760f91b61538c61537f6153718487896152d3565b356001600160f81b03191690565b6001600160f81b03191690565b1461539f5761539a90611fc7565b615302565b6153b56153ae82949394612792565b83866152ff565b92615319926153c494956152e7565b8051602091820120604080519283019384528201526153558160608101615347565b60405190606082018281106001600160401b03821117615456575b604052604082527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f6040837f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208201520152565b61545e610a88565b615401565b6040519061547082610a9f565b6008825260203681840137565b9061548782610b26565b6154946040519182610ac7565b82815280926154a5601f1991610b26565b0190602036910137565b805115615581576154be6153e6565b6154e26154dd6154d86154d185516127a2565b6003900490565b6141f9565b61547d565b9160208301918182518301915b82821061552f5750505060039051068060011461551c57600214615511575090565b603d90600019015390565b50603d9081600019820153600119015390565b9091936004906003809401938451600190603f9082828260121c16880101518553828282600c1c16880101518386015382828260061c16880101516002860153168501015190820153019391906154ef565b5061093e61174c565b602081830312610941578051906001600160401b038211610bdb570181601f820112156109415780516155bc81610b26565b926155ca6040519485610ac7565b81845260208284010111610bdb5761093e91602080850191016109a4565b9261561461093e9593615606615622946080885260808801906112bf565b9086820360208801526112bf565b9084820360408601526112bf565b9160608184039101526109d9565b60009291815461563f81611283565b92600191808316908115615697575060011461565b5750505050565b90919293945060005260209081600020906000915b85831061568657505050500190388080806112ec565b805485840152918301918101615670565b60ff19168452505050019150388080806112ec565b600b60fa1b815260010190565b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000808210156157ee575b506d04ee2d6d415b85acef8100000000808310156157df575b50662386f26fc10000808310156157d0575b506305f5e100808310156157c1575b50612710808310156157b2575b5060648210156157a2575b600a80921015615798575b60019081602161575082870161547d565b95860101905b615762575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530491821561579357919082615756565b61575b565b916001019161573f565b9190606460029104910191615734565b60049193920491019138615729565b6008919392049101913861571c565b6010919392049101913861570d565b602091939204910191386156fb565b6040935081049150386156e2565b6040519061580982610a9f565b6007825260203681840137565b6020908051156152df570190565b6021908051600110156152df570190565b90602091805182101561584757010190565b61584f612816565b010190565b1561585b57565b50606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b60405190606082018281106001600160401b03821117615948575b604052602a8252604036602084013760306158d583615816565b5360786158e183615824565b536029905b600182116158f95761093e915015615854565b80600f6159359216601081101561593b575b6f181899199a1a9b1b9c1cb0b131b232b360811b901a61592b8486615835565b5360041c91612055565b906158e6565b615943612816565b61590b565b615950610a88565b6158bb565b1561597a5760405161596681610a9f565b60048152637472756560e01b602082015290565b60405161598681610a9f565b600581526466616c736560d81b602082015290565b62ffffff166159a8615463565b9060306159b483615816565b5360786159c083615824565b5360079081905b60018211615a5c576159da915015615854565b6159e26157fc565b91825115615a4f575b60236020840153600190815b838110615a05575050505090565b615a3d906001198111615a42575b6001600160f81b0319615a2882860185615835565b511660001a615a378288615835565b53611fc7565b6159f7565b615a4a611fb0565b615a13565b615a57612816565b6159eb565b80600f615a8e92166010811015615a94575b6f181899199a1a9b1b9c1cb0b131b232b360811b901a61592b8487615835565b906159c7565b615a9c612816565b615a6e56fe0eef1ffa5f2982ad38bb9f5022d2ac4c29b22af1469b6ed4f49176c737d74a18a3646970667358221220643a832f303122bb101860c1f4e4f43c514c06eba21d20ca2352d0017715cc8a6c6578706572696d656e74616cf564736f6c634300080c0041", + "metadata": "{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessPointAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessPointCreationStatusAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessPointNotExistent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessPointScoreCannotBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsNotPausable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenIdForAccessPoint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeAccessPointOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustBeENSOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MustBeTokenOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MustBeTokenVerifier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustHaveAtLeastOneOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"MustHaveCollectionRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"MustHaveTokenRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"state\",\"type\":\"bool\"}],\"name\":\"PausableIsSetTo\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requiredValue\",\"type\":\"uint256\"}],\"name\":\"RequiredPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RoleAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ThereIsNoTokenMinted\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"key\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"BillingChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointContentVerify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum FleekAccessPoints.AccessPointCreationStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointCreationStatus\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointNameVerify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"ChangeAccessPointScore\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"CollectionRoleChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"value\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string[4]\",\"name\":\"value\",\"type\":\"string[4]\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NewAccessPoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"externalURL\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ENS\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"commitHash\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"gitRepository\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ipfsHash\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"color\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"accessPointAutoApproval\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"NewMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isPausable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PausableStatusChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauseStatusChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RemoveAccessPoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"TokenRoleChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"TokenRolesCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"addAccessPoint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"decreaseAccessPointScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"getAccessPointJSON\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"key\",\"type\":\"uint8\"}],\"name\":\"getBilling\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenVerifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCollectionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantTokenRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasCollectionRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasTokenRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"increaseAccessPointScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"initialBillings\",\"type\":\"uint256[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"isAccessPointNameVerified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPausable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isTokenVerified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"externalURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ens\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"commitHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gitRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ipfsHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"uint24\",\"name\":\"color\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"accessPointAutoApproval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"}],\"name\":\"removeAccessPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.CollectionRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeCollectionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.TokenRoles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeTokenRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_apAutoApproval\",\"type\":\"bool\"}],\"name\":\"setAccessPointAutoApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"}],\"name\":\"setAccessPointContentVerify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"}],\"name\":\"setAccessPointNameVerify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"apName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAccessPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekBilling.Billing\",\"name\":\"key\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setBilling\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pausable\",\"type\":\"bool\"}],\"name\":\"setPausable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_commitHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_gitRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ipfsHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_domain\",\"type\":\"string\"}],\"name\":\"setTokenBuild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"_tokenColor\",\"type\":\"uint24\"}],\"name\":\"setTokenColor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenDescription\",\"type\":\"string\"}],\"name\":\"setTokenDescription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenENS\",\"type\":\"string\"}],\"name\":\"setTokenENS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenExternalURL\",\"type\":\"string\"}],\"name\":\"setTokenExternalURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenLogo\",\"type\":\"string\"}],\"name\":\"setTokenLogo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenLogo\",\"type\":\"string\"},{\"internalType\":\"uint24\",\"name\":\"_tokenColor\",\"type\":\"uint24\"}],\"name\":\"setTokenLogoAndColor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenName\",\"type\":\"string\"}],\"name\":\"setTokenName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"verified\",\"type\":\"bool\"}],\"name\":\"setTokenVerified\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"name\":\"setTokenVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addAccessPoint(uint256,string)\":{\"details\":\"Add a new AccessPoint register for an app token. The AP name should be a DNS or ENS url and it should be unique. Anyone can add an AP but it should requires a payment. May emit a {NewAccessPoint} event. Requirements: - the tokenId must be minted and valid. - billing for add acess point may be applied. - the contract must be not paused.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Burns a previously minted `tokenId`. May emit a {Transfer} event. Requirements: - the tokenId must be minted and valid. - the sender must be the owner of the token. - the contract must be not paused.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decreaseAccessPointScore(string)\":{\"details\":\"Decreases the score of a AccessPoint registry if is greater than 0.\"},\"getAccessPointJSON(string)\":{\"details\":\"A view function to gether information about an AccessPoint. It returns a JSON string representing the AccessPoint information.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getBilling(uint8)\":{\"details\":\"Returns the billing value for a given key.\"},\"getLastTokenId()\":{\"details\":\"Returns the last minted tokenId.\"},\"getToken(uint256)\":{\"details\":\"Returns the token metadata associated with the `tokenId`. Returns multiple string and uint values in relation to metadata fields of the App struct. Requirements: - the tokenId must be minted and valid.\"},\"getTokenVerifier(uint256)\":{\"details\":\"Returns the verifier of a token. Requirements: - the tokenId must be minted and valid.\"},\"grantCollectionRole(uint8,address)\":{\"details\":\"Grants the collection role to an address. Requirements: - the caller should have the collection role.\"},\"grantTokenRole(uint256,uint8,address)\":{\"details\":\"Grants the token role to an address. Requirements: - the caller should have the token role.\"},\"hasCollectionRole(uint8,address)\":{\"details\":\"Returns `True` if a certain address has the collection role.\"},\"hasTokenRole(uint256,uint8,address)\":{\"details\":\"Returns `True` if a certain address has the token role.\"},\"increaseAccessPointScore(string)\":{\"details\":\"Increases the score of a AccessPoint registry.\"},\"initialize(string,string,uint256[])\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"isAccessPointNameVerified(string)\":{\"details\":\"A view function to check if a AccessPoint is verified.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isPausable()\":{\"details\":\"Returns true if the contract is pausable, and false otherwise.\"},\"isPaused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"isTokenVerified(uint256)\":{\"details\":\"Returns the verification status of a token. Requirements: - the tokenId must be minted and valid.\"},\"mint(address,string,string,string,string,string,string,string,string,uint24,bool,address)\":{\"details\":\"Mints a token and returns a tokenId. If the `tokenId` has not been minted before, and the `to` address is not zero, emits a {Transfer} event. Requirements: - the caller must have ``collectionOwner``'s admin role. - billing for the minting may be applied. - the contract must be not paused.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"pause()\":{\"details\":\"Sets the contract to paused state. Requirements: - the sender must have the `controller` role. - the contract must be pausable. - the contract must be not paused.\"},\"removeAccessPoint(string)\":{\"details\":\"Remove an AccessPoint registry for an app token. It will also remove the AP from the app token APs list. May emit a {RemoveAccessPoint} event. Requirements: - the AP must exist. - must be called by the AP owner. - the contract must be not paused.\"},\"revokeCollectionRole(uint8,address)\":{\"details\":\"Revokes the collection role of an address. Requirements: - the caller should have the collection role.\"},\"revokeTokenRole(uint256,uint8,address)\":{\"details\":\"Revokes the token role of an address. Requirements: - the caller should have the token role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setAccessPointAutoApproval(uint256,bool)\":{\"details\":\"Updates the `accessPointAutoApproval` settings on minted `tokenId`. May emit a {MetadataUpdate} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setAccessPointContentVerify(string,bool)\":{\"details\":\"Set the content verification of a AccessPoint registry. May emit a {ChangeAccessPointContentVerify} event. Requirements: - the AP must exist. - the sender must have the token controller role.\"},\"setAccessPointNameVerify(string,bool)\":{\"details\":\"Set the name verification of a AccessPoint registry. May emit a {ChangeAccessPointNameVerify} event. Requirements: - the AP must exist. - the sender must have the token controller role.\"},\"setApprovalForAccessPoint(uint256,string,bool)\":{\"details\":\"Set approval settings for an access point. It will add the access point to the token's AP list, if `approved` is true. May emit a {ChangeAccessPointApprovalStatus} event. Requirements: - the tokenId must exist and be the same as the tokenId that is set for the AP. - the AP must exist. - must be called by a token controller.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBilling(uint8,uint256)\":{\"details\":\"Sets the billing value for a given key. May emit a {BillingChanged} event. Requirements: - the sender must have the `collectionOwner` role.\"},\"setPausable(bool)\":{\"details\":\"Sets the contract to pausable state. Requirements: - the sender must have the `owner` role. - the contract must be in the oposite pausable state.\"},\"setTokenBuild(uint256,string,string,string,string)\":{\"details\":\"Adds a new build to a minted `tokenId`'s builds mapping. May emit a {NewBuild} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenColor(uint256,uint24)\":{\"details\":\"Updates the `color` metadata field of a minted `tokenId`. May emit a {NewTokenColor} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenDescription(uint256,string)\":{\"details\":\"Updates the `description` metadata field of a minted `tokenId`. May emit a {NewTokenDescription} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenENS(uint256,string)\":{\"details\":\"Updates the `ENS` metadata field of a minted `tokenId`. May emit a {NewTokenENS} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenExternalURL(uint256,string)\":{\"details\":\"Updates the `externalURL` metadata field of a minted `tokenId`. May emit a {NewTokenExternalURL} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenLogo(uint256,string)\":{\"details\":\"Updates the `logo` metadata field of a minted `tokenId`. May emit a {NewTokenLogo} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenLogoAndColor(uint256,string,uint24)\":{\"details\":\"Updates the `logo` and `color` metadata fields of a minted `tokenId`. May emit a {NewTokenLogo} and a {NewTokenColor} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenName(uint256,string)\":{\"details\":\"Updates the `name` metadata field of a minted `tokenId`. May emit a {NewTokenName} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenVerified(uint256,bool)\":{\"details\":\"Sets the verification status of a token. May emit a {MetadataUpdate} event. Requirements: - the tokenId must be minted and valid. - the sender must be the token verifier. - the sender must have `CollectionRoles.Verifier` role.\"},\"setTokenVerifier(uint256,address)\":{\"details\":\"Sets an address as verifier of a token. The verifier must have `CollectionRoles.Verifier` role. May emit a {MetadataUpdate} event. Requirements: - the tokenId must be minted and valid. - the sender must be the owner of the token. - the verifier must have `CollectionRoles.Verifier` role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the token metadata associated with the `tokenId`. Returns a based64 encoded string value of the URI. Requirements: - the tokenId must be minted and valid.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unpause()\":{\"details\":\"Sets the contract to unpaused state. Requirements: - the sender must have the `controller` role. - the contract must be paused.\"},\"withdraw()\":{\"details\":\"Withdraws all the funds from contract. May emmit a {Withdrawn} event. Requirements: - the sender must have the `collectionOwner` role.\"}},\"version\":1},\"userdoc\":{\"events\":{\"MetadataUpdate(uint256,string,string,address)\":{\"notice\":\"Event emitted when a token's metadata is updated.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FleekERC721.sol\":\"FleekERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ensdomains/ens-contracts/contracts/registry/ENS.sol\":{\"keccak256\":\"0x7cb1158c7d268b63de1468e28e2711b28d686e2628ddb22da2149cd93ddeafda\",\"urls\":[\"bzz-raw://a7018309acca24b10ea1235b1c27828f29f2ddfabb653a794639baf620dc2314\",\"dweb:/ipfs/QmakFQT5NFvGs3g8xxwtgtWdddq28Wtm6MjNSpJNhV1YpR\"]},\"@ensdomains/ens-contracts/contracts/resolvers/Resolver.sol\":{\"keccak256\":\"0x62b71222aa65138e124b94f5835c2163cc88213491e5f0a80d7a4c45641fbe64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2def0b17096b07578ac974ab3871d71c757a01389bbfdb124d103308a3ecaad9\",\"dweb:/ipfs/QmepR8cbk2etYYnKHArZFuGNTZ2huqFihxq9mzfS3YgE3Y\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IABIResolver.sol\":{\"keccak256\":\"0x85b373d02d19374fe570af407f459768285704bf7f30ab17c30eabfb5a10e4c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2046ce3d92d29806d7b447f7ab4227f19b0b2e5c75fd5b4a3fcaef7fe2442141\",\"dweb:/ipfs/QmRgnfWjFetrSJngkhU7Yui1ZcK1MeatvZDpvUTYNuYnND\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddrResolver.sol\":{\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43922ba183ff20d87dce7fc5d715e626b26594151e36dcc8d7c6329b9a822963\",\"dweb:/ipfs/QmTg9uHTugTxzqddN68gnhNbGt4bGJBS9mQcss6GYggR4X\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddressResolver.sol\":{\"keccak256\":\"0x411447c1e90c51e09702815a85ec725ffbbe37cf96e8cc4d2a8bd4ad8a59d73e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543aa2756447a428711b69aea79e9f4641c22f8330ba920b2a49fde8d9207f82\",\"dweb:/ipfs/QmTdpcYRWLH3BL7iytnqcSzRojTPe3YettKaTqeCvKPk54\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IContentHashResolver.sol\":{\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daf1fee7770679bd935b8b5686789a4ecc532caeef5a9b8e1b60ae0c285e743e\",\"dweb:/ipfs/QmSaHBAqtDdbQLH6QN4EbupMrq2ah8g6fqE7fLX1u4cjMZ\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IDNSRecordResolver.sol\":{\"keccak256\":\"0xcfa52200edd337f2c6c5bf402352600584da033b21323603e53de33051a3e25d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c8355211d58db82660140191678ee342eb8a7ac46fa097ae8e03eef008f592e\",\"dweb:/ipfs/QmYDNiECPd4fJ7Vk9Xywfpg73rUvDpcYqas95ofGcpt7fM\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IDNSZoneResolver.sol\":{\"keccak256\":\"0xca1b3a16e7005533f2800a3e66fcdccf7c574deac7913d8c810f40aec1d58dc0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4e38d5eb69e236c37e4a013628838070720c9e1923569650b01252868038c7a\",\"dweb:/ipfs/QmV397iZMRxtem79kJy5sueJadXoVL89gNViX2xciQHUrk\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedResolver.sol\":{\"keccak256\":\"0x5d81521cfae7d9a4475d27533cd8ed0d3475d369eb0674fd90ffbdbdf292faa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d244d15588785044b54c453ab6dc51c616ab70cb8b9e687d3e54565bcae97760\",\"dweb:/ipfs/QmXz4ZZBTFogdkdTV1mcE3ywvL2agKVZHLNNeRHCKVruYM\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IInterfaceResolver.sol\":{\"keccak256\":\"0x390321fb58f7b927df9562450981e74b4be3907e7c09df321fd3b7409b63ae28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://045d12c6e0e4596b3672614751a9e75188183a89765a6abd938294e0294e9c56\",\"dweb:/ipfs/QmazngvagEoKe29s4M9Rv8KygWD5hrAtNPkYDPJ2pK13yx\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/INameResolver.sol\":{\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5b2cd9e5339b09f40e82bd91fed7d5f643dd031393eefb9aec588eaba8465049\",\"dweb:/ipfs/QmT2A8eswhJU9YadCs9BtwKNj6YGypntXmFepANQYyGw7x\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2f86e50bd17c38fb10feb577d88d8970c585017a391ef10e3aaa3d50f81555\",\"dweb:/ipfs/QmaxLx2pqCUxf9W2dusfviZ9aSiTuVwuekGo73rjvmGifE\"]},\"@ensdomains/ens-contracts/contracts/resolvers/profiles/ITextResolver.sol\":{\"keccak256\":\"0x7c5debb3c42cd9f5de2274ea7aa053f238608314b62db441c40e31cea2543fd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://412e34ae2d84d542ffa6791486963f3fe04432a3ffd51877d441256dc2941914\",\"dweb:/ipfs/QmciS4mGAQ6KJtLiLcBFekHKhYAYMmubDWGkpZ3sUFtJPW\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb\",\"dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/utils/Base64.sol\":{\"keccak256\":\"0x5f3461639fe20794cfb4db4a6d8477388a15b2e70a018043084b7c4bedfa8136\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77e5309e2cc4cdc3395214edb0ff43ff5a5f7373f5a425383e540f6fab530f96\",\"dweb:/ipfs/QmTV8DZ9knJDa3b5NPBFQqjvTzodyZVjRUg5mx5A99JPLJ\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/FleekAccessControl.sol\":{\"keccak256\":\"0xdd0352b2e9e1a7393cb85a85efb7135cc5c0d5365ee156ca78eda2c82113b6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62245b17047d2261afb923ffb7592cc54c78cad599828deb3342e4e6de6c99\",\"dweb:/ipfs/QmRfsz1x2dh4fx78KizNXLMjfisgvzGkizbpAasqzZvggr\"]},\"contracts/FleekAccessPoints.sol\":{\"keccak256\":\"0xa74f4f1af3f7100dde68c4824784a93927191c72f00416f96dded39b36cd43cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6aee8dc6e13e77cec72fbfadee051aad02ab25848646cda7f5a57a89126ea729\",\"dweb:/ipfs/QmWk9raFrRkASBmmZ3Ng9a5HyHYUbjfxEJKhdqwfR2WmL9\"]},\"contracts/FleekBilling.sol\":{\"keccak256\":\"0xcb1568aa8629045a5c97a365d81c448a24f0d6434798e386125633029393ed94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c775e1ea3aeab0841976c63bfcf95e64ba879ad4a4b635f76ef12fb6a5348b12\",\"dweb:/ipfs/Qmct7TaBnvH86d184URxWYtHwSHMAVyCrtvTG8hcoArD7p\"]},\"contracts/FleekERC721.sol\":{\"keccak256\":\"0xcc28cd2b0afd53d984cc2bb88d008dd4d3b7cfc4ada6448e127fd002bf48368e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce93fa89b284d106f8357ed5e370895bb077011149b9b4a9daca45fa8b30ed96\",\"dweb:/ipfs/Qme5ejsjF9k4LXRQFKf83qX3cZGPipgumoweRihwEeCcoA\"]},\"contracts/FleekPausable.sol\":{\"keccak256\":\"0x4d172714ea6231b283f96cb8e355cc9f5825e01039aa5a521e7a29bcb3ccd1cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f099c1af04b71bf43bb34fe8413dffb51a8962f91fd99d61693160c3272bd58\",\"dweb:/ipfs/QmWQe9XyVeD955es4fgbHJuSDNZuqsdTCSDMrfJvioZCdj\"]},\"contracts/IERCX.sol\":{\"keccak256\":\"0xa3ed18c17836d56b1663c34de75a4ce309965fa6f13e88b08eeed29aca4cf4bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae2d073b525af1cf0445655d94c78fe02492e7d4562f815251e6b44a73a5904\",\"dweb:/ipfs/Qmesee9NVvXn84TR2H8AudwGaAZvrQN3JQ9Xs7spcwVs7A\"]},\"contracts/util/FleekENS.sol\":{\"keccak256\":\"0xf9be784932977798e530160f38eefdfbb55ae25a3d9cc58b477b092ef9936039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffc81ef864a34e42a3ab1638e56d95f88721ec1032baadbc251a5ba3b4dd445\",\"dweb:/ipfs/QmUieEHXPHU79i1nx7KmoTVMfwjJGJHWRy2BYGd3PEceSB\"]},\"contracts/util/FleekSVG.sol\":{\"keccak256\":\"0x9d52d0defd643999776563c3ac36f084ae5a04a22c76ec316a0aadf6666c3c9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87bc5cca5451b7b8f3986dec26087857fe0f09505116536efad370172fe731a3\",\"dweb:/ipfs/QmZmDxPG8BUUjrVD92T2dktcuFQBxvHgMEnWx5aPBcSfrA\"]},\"contracts/util/FleekStrings.sol\":{\"keccak256\":\"0xccadd4e9c9c14068c6ca83c95d98a5b83b321bf442443f5432045a4313fcfce6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb4b7110961d44fba3f8f016a6fe1eeba7d783c723be7153ac8f05b24c68676d\",\"dweb:/ipfs/QmSCetjeCy7TGG9WFFbDLvpdVwYZrkMsdTBQmJuPwrugUT\"]}},\"version\":1}", "storageLayout": { "storage": [ { - "astId": 6, + "astId": 533, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_initialized", "offset": 0, @@ -1850,7 +1900,7 @@ "type": "t_uint8" }, { - "astId": 9, + "astId": 536, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_initializing", "offset": 1, @@ -1858,7 +1908,7 @@ "type": "t_bool" }, { - "astId": 1624, + "astId": 2151, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -1866,7 +1916,7 @@ "type": "t_array(t_uint256)50_storage" }, { - "astId": 1843, + "astId": 2370, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -1874,7 +1924,7 @@ "type": "t_array(t_uint256)50_storage" }, { - "astId": 197, + "astId": 724, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_name", "offset": 0, @@ -1882,7 +1932,7 @@ "type": "t_string_storage" }, { - "astId": 199, + "astId": 726, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_symbol", "offset": 0, @@ -1890,7 +1940,7 @@ "type": "t_string_storage" }, { - "astId": 203, + "astId": 730, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_owners", "offset": 0, @@ -1898,7 +1948,7 @@ "type": "t_mapping(t_uint256,t_address)" }, { - "astId": 207, + "astId": 734, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_balances", "offset": 0, @@ -1906,7 +1956,7 @@ "type": "t_mapping(t_address,t_uint256)" }, { - "astId": 211, + "astId": 738, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_tokenApprovals", "offset": 0, @@ -1914,7 +1964,7 @@ "type": "t_mapping(t_uint256,t_address)" }, { - "astId": 217, + "astId": 744, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_operatorApprovals", "offset": 0, @@ -1922,7 +1972,7 @@ "type": "t_mapping(t_address,t_mapping(t_address,t_bool))" }, { - "astId": 1137, + "astId": 1664, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -1930,23 +1980,23 @@ "type": "t_array(t_uint256)44_storage" }, { - "astId": 3999, + "astId": 4526, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_collectionRolesCounter", "offset": 0, "slot": "151", - "type": "t_mapping(t_enum(CollectionRoles)3958,t_uint256)" + "type": "t_mapping(t_enum(CollectionRoles)4485,t_uint256)" }, { - "astId": 4007, + "astId": 4534, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_collectionRoles", "offset": 0, "slot": "152", - "type": "t_mapping(t_enum(CollectionRoles)3958,t_mapping(t_address,t_bool))" + "type": "t_mapping(t_enum(CollectionRoles)4485,t_mapping(t_address,t_bool))" }, { - "astId": 4012, + "astId": 4539, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_tokenRolesVersion", "offset": 0, @@ -1954,15 +2004,15 @@ "type": "t_mapping(t_uint256,t_uint256)" }, { - "astId": 4024, + "astId": 4551, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_tokenRoles", "offset": 0, "slot": "154", - "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)3960,t_mapping(t_address,t_bool))))" + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)4487,t_mapping(t_address,t_bool))))" }, { - "astId": 4357, + "astId": 4884, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -1970,7 +2020,7 @@ "type": "t_array(t_uint256)49_storage" }, { - "astId": 6312, + "astId": 6973, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_paused", "offset": 0, @@ -1978,7 +2028,7 @@ "type": "t_bool" }, { - "astId": 6314, + "astId": 6975, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_canPause", "offset": 1, @@ -1986,7 +2036,7 @@ "type": "t_bool" }, { - "astId": 6465, + "astId": 7126, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -1994,15 +2044,15 @@ "type": "t_array(t_uint256)49_storage" }, { - "astId": 4946, + "astId": 5473, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_billings", "offset": 0, "slot": "254", - "type": "t_mapping(t_enum(Billing)4925,t_uint256)" + "type": "t_mapping(t_enum(Billing)5452,t_uint256)" }, { - "astId": 5074, + "astId": 5601, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -2010,15 +2060,15 @@ "type": "t_array(t_uint256)49_storage" }, { - "astId": 4462, + "astId": 4989, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_accessPoints", "offset": 0, "slot": "304", - "type": "t_mapping(t_string_memory_ptr,t_struct(AccessPoint)4457_storage)" + "type": "t_mapping(t_string_memory_ptr,t_struct(AccessPoint)4984_storage)" }, { - "astId": 4466, + "astId": 4993, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_autoApproval", "offset": 0, @@ -2026,7 +2076,7 @@ "type": "t_mapping(t_uint256,t_bool)" }, { - "astId": 4912, + "astId": 5439, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "__gap", "offset": 0, @@ -2034,7 +2084,7 @@ "type": "t_array(t_uint256)49_storage" }, { - "astId": 5163, + "astId": 5693, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_appIds", "offset": 0, @@ -2042,20 +2092,28 @@ "type": "t_uint256" }, { - "astId": 5168, + "astId": 5698, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_apps", "offset": 0, "slot": "356", - "type": "t_mapping(t_uint256,t_struct(Token)6538_storage)" + "type": "t_mapping(t_uint256,t_struct(Token)7203_storage)" }, { - "astId": 5172, + "astId": 5702, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "_tokenVerifier", "offset": 0, "slot": "357", "type": "t_mapping(t_uint256,t_address)" + }, + { + "astId": 5706, + "contract": "contracts/FleekERC721.sol:FleekERC721", + "label": "_tokenVerified", + "offset": 0, + "slot": "358", + "type": "t_mapping(t_uint256,t_bool)" } ], "types": { @@ -2087,22 +2145,22 @@ "label": "bool", "numberOfBytes": "1" }, - "t_enum(AccessPointCreationStatus)4443": { + "t_enum(AccessPointCreationStatus)4970": { "encoding": "inplace", "label": "enum FleekAccessPoints.AccessPointCreationStatus", "numberOfBytes": "1" }, - "t_enum(Billing)4925": { + "t_enum(Billing)5452": { "encoding": "inplace", "label": "enum FleekBilling.Billing", "numberOfBytes": "1" }, - "t_enum(CollectionRoles)3958": { + "t_enum(CollectionRoles)4485": { "encoding": "inplace", "label": "enum FleekAccessControl.CollectionRoles", "numberOfBytes": "1" }, - "t_enum(TokenRoles)3960": { + "t_enum(TokenRoles)4487": { "encoding": "inplace", "label": "enum FleekAccessControl.TokenRoles", "numberOfBytes": "1" @@ -2128,40 +2186,40 @@ "numberOfBytes": "32", "value": "t_uint256" }, - "t_mapping(t_enum(Billing)4925,t_uint256)": { + "t_mapping(t_enum(Billing)5452,t_uint256)": { "encoding": "mapping", - "key": "t_enum(Billing)4925", + "key": "t_enum(Billing)5452", "label": "mapping(enum FleekBilling.Billing => uint256)", "numberOfBytes": "32", "value": "t_uint256" }, - "t_mapping(t_enum(CollectionRoles)3958,t_mapping(t_address,t_bool))": { + "t_mapping(t_enum(CollectionRoles)4485,t_mapping(t_address,t_bool))": { "encoding": "mapping", - "key": "t_enum(CollectionRoles)3958", + "key": "t_enum(CollectionRoles)4485", "label": "mapping(enum FleekAccessControl.CollectionRoles => mapping(address => bool))", "numberOfBytes": "32", "value": "t_mapping(t_address,t_bool)" }, - "t_mapping(t_enum(CollectionRoles)3958,t_uint256)": { + "t_mapping(t_enum(CollectionRoles)4485,t_uint256)": { "encoding": "mapping", - "key": "t_enum(CollectionRoles)3958", + "key": "t_enum(CollectionRoles)4485", "label": "mapping(enum FleekAccessControl.CollectionRoles => uint256)", "numberOfBytes": "32", "value": "t_uint256" }, - "t_mapping(t_enum(TokenRoles)3960,t_mapping(t_address,t_bool))": { + "t_mapping(t_enum(TokenRoles)4487,t_mapping(t_address,t_bool))": { "encoding": "mapping", - "key": "t_enum(TokenRoles)3960", + "key": "t_enum(TokenRoles)4487", "label": "mapping(enum FleekAccessControl.TokenRoles => mapping(address => bool))", "numberOfBytes": "32", "value": "t_mapping(t_address,t_bool)" }, - "t_mapping(t_string_memory_ptr,t_struct(AccessPoint)4457_storage)": { + "t_mapping(t_string_memory_ptr,t_struct(AccessPoint)4984_storage)": { "encoding": "mapping", "key": "t_string_memory_ptr", "label": "mapping(string => struct FleekAccessPoints.AccessPoint)", "numberOfBytes": "32", - "value": "t_struct(AccessPoint)4457_storage" + "value": "t_struct(AccessPoint)4984_storage" }, "t_mapping(t_uint256,t_address)": { "encoding": "mapping", @@ -2177,33 +2235,33 @@ "numberOfBytes": "32", "value": "t_bool" }, - "t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)3960,t_mapping(t_address,t_bool)))": { + "t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)4487,t_mapping(t_address,t_bool)))": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => mapping(enum FleekAccessControl.TokenRoles => mapping(address => bool)))", "numberOfBytes": "32", - "value": "t_mapping(t_enum(TokenRoles)3960,t_mapping(t_address,t_bool))" + "value": "t_mapping(t_enum(TokenRoles)4487,t_mapping(t_address,t_bool))" }, - "t_mapping(t_uint256,t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)3960,t_mapping(t_address,t_bool))))": { + "t_mapping(t_uint256,t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)4487,t_mapping(t_address,t_bool))))": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => mapping(uint256 => mapping(enum FleekAccessControl.TokenRoles => mapping(address => bool))))", "numberOfBytes": "32", - "value": "t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)3960,t_mapping(t_address,t_bool)))" + "value": "t_mapping(t_uint256,t_mapping(t_enum(TokenRoles)4487,t_mapping(t_address,t_bool)))" }, - "t_mapping(t_uint256,t_struct(Build)6518_storage)": { + "t_mapping(t_uint256,t_struct(Build)7183_storage)": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => struct IERCX.Build)", "numberOfBytes": "32", - "value": "t_struct(Build)6518_storage" + "value": "t_struct(Build)7183_storage" }, - "t_mapping(t_uint256,t_struct(Token)6538_storage)": { + "t_mapping(t_uint256,t_struct(Token)7203_storage)": { "encoding": "mapping", "key": "t_uint256", "label": "mapping(uint256 => struct IERCX.Token)", "numberOfBytes": "32", - "value": "t_struct(Token)6538_storage" + "value": "t_struct(Token)7203_storage" }, "t_mapping(t_uint256,t_uint256)": { "encoding": "mapping", @@ -2222,12 +2280,12 @@ "label": "string", "numberOfBytes": "32" }, - "t_struct(AccessPoint)4457_storage": { + "t_struct(AccessPoint)4984_storage": { "encoding": "inplace", "label": "struct FleekAccessPoints.AccessPoint", "members": [ { - "astId": 4445, + "astId": 4972, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "tokenId", "offset": 0, @@ -2235,7 +2293,7 @@ "type": "t_uint256" }, { - "astId": 4447, + "astId": 4974, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "score", "offset": 0, @@ -2243,7 +2301,7 @@ "type": "t_uint256" }, { - "astId": 4449, + "astId": 4976, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "contentVerified", "offset": 0, @@ -2251,7 +2309,7 @@ "type": "t_bool" }, { - "astId": 4451, + "astId": 4978, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "nameVerified", "offset": 1, @@ -2259,7 +2317,7 @@ "type": "t_bool" }, { - "astId": 4453, + "astId": 4980, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "owner", "offset": 2, @@ -2267,22 +2325,22 @@ "type": "t_address" }, { - "astId": 4456, + "astId": 4983, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "status", "offset": 22, "slot": "2", - "type": "t_enum(AccessPointCreationStatus)4443" + "type": "t_enum(AccessPointCreationStatus)4970" } ], "numberOfBytes": "96" }, - "t_struct(Build)6518_storage": { + "t_struct(Build)7183_storage": { "encoding": "inplace", "label": "struct IERCX.Build", "members": [ { - "astId": 6515, + "astId": 7176, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "commitHash", "offset": 0, @@ -2290,22 +2348,38 @@ "type": "t_string_storage" }, { - "astId": 6517, + "astId": 7178, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "gitRepository", "offset": 0, "slot": "1", "type": "t_string_storage" + }, + { + "astId": 7180, + "contract": "contracts/FleekERC721.sol:FleekERC721", + "label": "ipfsHash", + "offset": 0, + "slot": "2", + "type": "t_string_storage" + }, + { + "astId": 7182, + "contract": "contracts/FleekERC721.sol:FleekERC721", + "label": "domain", + "offset": 0, + "slot": "3", + "type": "t_string_storage" } ], - "numberOfBytes": "64" + "numberOfBytes": "128" }, - "t_struct(Token)6538_storage": { + "t_struct(Token)7203_storage": { "encoding": "inplace", "label": "struct IERCX.Token", "members": [ { - "astId": 6520, + "astId": 7185, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "name", "offset": 0, @@ -2313,7 +2387,7 @@ "type": "t_string_storage" }, { - "astId": 6522, + "astId": 7187, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "description", "offset": 0, @@ -2321,7 +2395,7 @@ "type": "t_string_storage" }, { - "astId": 6524, + "astId": 7189, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "externalURL", "offset": 0, @@ -2329,7 +2403,7 @@ "type": "t_string_storage" }, { - "astId": 6526, + "astId": 7191, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "ENS", "offset": 0, @@ -2337,7 +2411,7 @@ "type": "t_string_storage" }, { - "astId": 6528, + "astId": 7193, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "logo", "offset": 0, @@ -2345,7 +2419,7 @@ "type": "t_string_storage" }, { - "astId": 6530, + "astId": 7195, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "color", "offset": 0, @@ -2353,7 +2427,7 @@ "type": "t_uint24" }, { - "astId": 6532, + "astId": 7197, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "currentBuild", "offset": 0, @@ -2361,12 +2435,12 @@ "type": "t_uint256" }, { - "astId": 6537, + "astId": 7202, "contract": "contracts/FleekERC721.sol:FleekERC721", "label": "builds", "offset": 0, "slot": "7", - "type": "t_mapping(t_uint256,t_struct(Build)6518_storage)" + "type": "t_mapping(t_uint256,t_struct(Build)7183_storage)" } ], "numberOfBytes": "256" @@ -2387,5 +2461,6 @@ "numberOfBytes": "1" } } - } + }, + "implementationAddress": "0x5c456c91fe4ADd4440aAfCb856C66F105e8Ade83" } diff --git a/ui/src/integrations/ethereum/hooks/ethereum-hooks.tsx b/ui/src/integrations/ethereum/hooks/ethereum-hooks.tsx index c9da5bf..f7f650a 100644 --- a/ui/src/integrations/ethereum/hooks/ethereum-hooks.tsx +++ b/ui/src/integrations/ethereum/hooks/ethereum-hooks.tsx @@ -179,6 +179,7 @@ export namespace ArgumentsMaps { string, // string ENS string, // string commitHash string, // string gitRepository + string, // string ipfsHash string, // string logo number, // uint24 color boolean, // bool accessPointAutoApproval diff --git a/ui/src/integrations/ethereum/lib/fleek-erc721.ts b/ui/src/integrations/ethereum/lib/fleek-erc721.ts index 8a2e5ad..d2855c5 100644 --- a/ui/src/integrations/ethereum/lib/fleek-erc721.ts +++ b/ui/src/integrations/ethereum/lib/fleek-erc721.ts @@ -39,6 +39,7 @@ export const FleekERC721 = { params.description.replaceAll(/\n/g, '\\n'), //replace break lines with \\n so it doesn't break the json, params.image, params.externalUrl, + params.ipfsHash, params.ens, params.commitHash, params.repo @@ -155,6 +156,7 @@ export namespace FleekERC721 { description: string; owner: string; externalUrl: string; + ipfsHash: string; image: string; ens?: string; commitHash: string; diff --git a/ui/src/providers/connectkit-provider.tsx b/ui/src/providers/connectkit-provider.tsx index ecab9ea..3a3539b 100644 --- a/ui/src/providers/connectkit-provider.tsx +++ b/ui/src/providers/connectkit-provider.tsx @@ -3,12 +3,12 @@ import { getDefaultClient, } from 'connectkit'; import { createClient, WagmiConfig } from 'wagmi'; -import { goerli } from 'wagmi/chains'; +import { goerli, polygonMumbai } from 'wagmi/chains'; import { env } from '@/constants'; const alchemyId = env.alchemy.id; -const chains = [goerli]; +const chains = [polygonMumbai]; const wagmiClient = createClient( getDefaultClient({ diff --git a/ui/src/views/components-test/combobox-test.tsx b/ui/src/views/components-test/combobox-test.tsx index d8e5262..5a2e1dc 100644 --- a/ui/src/views/components-test/combobox-test.tsx +++ b/ui/src/views/components-test/combobox-test.tsx @@ -20,7 +20,7 @@ const ItemsDropdown: ItemDropdown[] = [ export const ComboboxTest: React.FC = () => { const selected = useState(); - const selectedDropdown = useState(ItemsDropdown[0]); + const selectedDropdown = useState(); return ( { + const { + form: { ipfsHash }, + } = useMintFormContext(); + + return ( + + IPFS Hash + + + + ); +}; diff --git a/ui/src/views/mint/nfa-step/form-step/mint-form.context.ts b/ui/src/views/mint/nfa-step/form-step/mint-form.context.ts index da8e11e..5da568c 100644 --- a/ui/src/views/mint/nfa-step/form-step/mint-form.context.ts +++ b/ui/src/views/mint/nfa-step/form-step/mint-form.context.ts @@ -13,6 +13,7 @@ export type MintFormContext = { logoColor: FormField; ens: FormField; domainURL: FormField; + ipfsHash: FormField; verifier: FormField; isValid: ReactState; }; @@ -51,6 +52,7 @@ export const useMintFormContextInit = (): MintFormContext => ({ StringValidators.required, StringValidators.isUrl, ]), + ipfsHash: useFormField('ipfsHash', [StringValidators.required]), ens: useFormField('ens', [], ''), verifier: useFormField('verifier', [StringValidators.required]), isValid: useState(false), diff --git a/ui/src/views/mint/nfa-step/form-step/mint-form.tsx b/ui/src/views/mint/nfa-step/form-step/mint-form.tsx index fad983d..4cca508 100644 --- a/ui/src/views/mint/nfa-step/form-step/mint-form.tsx +++ b/ui/src/views/mint/nfa-step/form-step/mint-form.tsx @@ -16,6 +16,7 @@ import { AppDescriptionField, AppNameField, EnsDomainField, + IPFSHashField, LogoField, } from './fields'; import { useMintFormContext } from './mint-form.context'; @@ -38,12 +39,18 @@ export const MintFormStep: React.FC = () => { domainURL: { value: [domainURL], }, + ipfsHash: { + value: [ipfsHash], + }, gitCommit: { value: [gitCommit], }, gitBranch: { value: [gitBranch], }, + verifier: { + value: [verifier], + }, logoColor: { value: [logoColor], }, @@ -69,10 +76,11 @@ export const MintFormStep: React.FC = () => { ens, gitCommit, `${repositoryName?.url}/tree/${gitBranch}`, + ipfsHash, appLogo, parseColorToNumber(logoColor), verifyNFA, - '0xdBb04e00D5ec8C9e3aeF811D315Ee7C147c5DBFD', //TODO remove hardcode + verifier, { value: billing }, ]); @@ -99,6 +107,7 @@ export const MintFormStep: React.FC = () => { + diff --git a/ui/src/views/mint/nfa-step/verify-step/select-verifier.tsx b/ui/src/views/mint/nfa-step/verify-step/select-verifier.tsx index dec452e..3cc4ebb 100644 --- a/ui/src/views/mint/nfa-step/verify-step/select-verifier.tsx +++ b/ui/src/views/mint/nfa-step/verify-step/select-verifier.tsx @@ -9,6 +9,7 @@ import { useMintFormContext } from '../form-step'; // TODO: remove mocked items after graphql api is fixed const mockedItems = [ + '0xd4997d0facc83231b9f26a8b2155b4869e99946f', '0xdBb04e00D5ec8C9e3aeF811D315Ee7C147c5DBFD', '0x7ED735b7095C05d78dF169F991f2b7f1A1F1A049', ];