[ { "inputs": [ { "internalType": "uint256", "name": "version", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "Feature", "name": "", "type": "uint128" }, { "internalType": "Nonce", "name": "", "type": "uint32" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "DeployFailed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "current", "type": "uint256" }, { "internalType": "uint256", "name": "next", "type": "uint256" } ], "name": "DidNotIncrementVersion", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "Feature", "name": "", "type": "uint128" } ], "name": "FeatureInitialized", "type": "error" }, { "inputs": [ { "internalType": "Feature", "name": "", "type": "uint128" } ], "name": "FeatureNotInitialized", "type": "error" }, { "inputs": [ { "internalType": "Nonce", "name": "", "type": "uint32" } ], "name": "FutureNonce", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "current", "type": "uint256" }, { "internalType": "uint256", "name": "next", "type": "uint256" } ], "name": "IncrementedVersionTooMuch", "type": "error" }, { "inputs": [], "name": "InitializationFailed", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "expected", "type": "address" }, { "internalType": "address", "name": "actual", "type": "address" } ], "name": "InterferedWithImplementation", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expected", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "InterferedWithVersion", "type": "error" }, { "inputs": [], "name": "NoInstance", "type": "error" }, { "inputs": [], "name": "OnlyProxy", "type": "error" }, { "inputs": [], "name": "PermissionDenied", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "expected", "type": "address" }, { "internalType": "address", "name": "actual", "type": "address" } ], "name": "RollbackFailed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "oldVersion", "type": "uint256" }, { "internalType": "uint256", "name": "newVersion", "type": "uint256" } ], "name": "VersionMismatch", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "prev", "type": "address" }, { "indexed": true, "internalType": "address", "name": "curr", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "Feature", "name": "", "type": "uint128" }, { "indexed": true, "internalType": "address", "name": "", "type": "address" }, { "indexed": false, "internalType": "uint40", "name": "", "type": "uint40" } ], "name": "Authorized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "Feature", "name": "", "type": "uint128" }, { "indexed": true, "internalType": "Nonce", "name": "", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "", "type": "address" } ], "name": "Deployed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "", "type": "address" } ], "name": "OwnershipPending", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "PermanentURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "Feature", "name": "", "type": "uint128" }, { "indexed": true, "internalType": "Nonce", "name": "", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "", "type": "address" } ], "name": "Removed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "Feature", "name": "", "type": "uint128" } ], "name": "RemovedAll", "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": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" }, { "internalType": "address", "name": "auth", "type": "address" }, { "internalType": "uint40", "name": "deadline", "type": "uint40" } ], "name": "authorize", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" } ], "name": "authorized", "outputs": [ { "internalType": "address", "name": "auth", "type": "address" }, { "internalType": "uint40", "name": "deadline", "type": "uint40" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "instance", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" } ], "name": "deploy", "outputs": [ { "internalType": "address", "name": "predicted", "type": "address" }, { "internalType": "Nonce", "name": "thisNonce", "type": "uint32" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "instance", "type": "address" } ], "name": "deployInfo", "outputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" }, { "internalType": "Nonce", "name": "nonce", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" } ], "name": "descriptionHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "datas", "type": "bytes[]" } ], "name": "multicall", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" } ], "name": "next", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" } ], "name": "prev", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rejectOwnership", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "instance", "type": "address" } ], "name": "remove", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" }, { "internalType": "Nonce", "name": "nonce", "type": "uint32" } ], "name": "remove", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" } ], "name": "removeAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "Feature", "name": "feature", "type": "uint128" }, { "internalType": "string", "name": "description", "type": "string" } ], "name": "setDescription", "outputs": [ { "internalType": "string", "name": "content", "type": "string" } ], "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgrade", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60c03461016b576001600160401b0390601f6129c138819003918201601f1916830191848311848410176101455780849260209460405283398101031261016b57513060805260a08190526001600160401b0319111561015957604051602081017fc5f61c6a41b2ffabe4e053ff04a445f2a28ea659e9d1b7b2440ee0caf369a949815260208252604082019282841090841117610145578260405260ff1991519020167fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e8009081036101315760015f5260205260405f2060036004820191011161011d5761285190816101708239608051818181610bc0015281816122ab0152612731015260a0518181816108c5015281816112a8015261160f0152f35b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b715f5260116020526024601cfd5b5f80fdfe60406080815260049081361015610014575f80fd5b5f3560e01c806301ffc9a7146118f15780630476baab1461169557806306fdde0314610c66578063081812fc1461166f5780630900f010146115c5578063108a686c1461145657806329092d0e1461142d5780632a6a833b146112445780632bb83987146111be5780633960379b1461115f57806354fd4d50146111205780635c60da1b146110cd578063633a506c1461108d5780636352211e1461104b57806370a082311461101f578063715018a614610f0c57806372ba306f14610ec357806374bcde5114610dc957806379ba509714610cc65780638da5cb5b14610c6b57806395d89b4114610c66578063ac9650d814610b67578063ada52c2614610a38578063c4d66de81461088b578063c87b56dd1461080f578063e2603dc21461070e578063e30c3978146106bb578063e985e9c51461068f578063f160fb0e14610297578063f19f32461461022c5763f2fde38b14610171575f80fd5b346102285760206003193601126102285761018a611bf5565b610192612099565b73ffffffffffffffffffffffffffffffffffffffff8116801561020057602093507fd6aad444c90d39fb0eee1c6e357a7fad83d63f719ac5f880445a2beb0ff3ab585f80a27f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f56555160018152f35b5050517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b5f80fd5b5034610228575f600319360112610228576020906102486126b6565b5f7fd6aad444c90d39fb0eee1c6e357a7fad83d63f719ac5f880445a2beb0ff3ab588180a25f7f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f56555160018152f35b50906102a236611a47565b9190926102ae82612535565b600281018054948763ffffffff926003848916916102cf868b861c16612673565b958691818316809c7fffffffffffffffffffffffffffffffffffffffff00000000ffffffff000000006bffffffff0000000000000000868a1b1691161717905516860101817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082541617905580848115968715610645575b5063ffffffff164660401b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060808b901b1617179050906103883083612800565b951561060157505f985b6fffffffffffffffffffffffffffffffff918289169a8b9373ffffffffffffffffffffffffffffffffffffffff9c8d96878b169e8f915194167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48d820182811067ffffffffffffffff8211176105d5578e5284825260208201908c82526104598a73ffffffffffffffffffffffffffffffffffffffff165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80160205260405f2090565b9251167fffffffffffffffffffffffff000000000000000000000000000000000000000073ffffffff000000000000000000000000000000008454935160801b169216171790558a8a8d51947faa94c583a45742b26ac5274d230aea34ab334ed5722264aa5673010e612bc0b25f80a465ff5f52595ff36006527f7f36585f54601d575f555f5f37365f34f05f816017575ffd5b5260205ff35b305f5260265f80f5938415610228577fa9549013530fb1542c6fac59b531052d9fd0c0433910571c379618caa172f2cb853f036102285782815f936020953734865af1156102285787915f8080808080519561c814f150160361056757813b15610567575050505082519182526020820152f35b86517f09253aa80000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90941692840192835263ffffffff16602083015273ffffffffffffffffffffffffffffffffffffffff16604082015281906060010390fd5b60418b7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b61063f90309063ffffffff164660401b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060808c901b161717612800565b98610392565b610687926003910101907fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff67ffffffff0000000083549260201b169116179055565b80845f610347565b50346102285780600319360112610228576020906106ab611bf5565b506106b4611c18565b50515f8152f35b5034610228575f6003193601126102285760209073ffffffffffffffffffffffffffffffffffffffff7f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f5654915191168152f35b5034610228576020600319360112610228576107286119fa565b6fffffffffffffffffffffffffffffffff81165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e800602052815f20600363ffffffff91610775846125f0565b8316010154169283156107e857506107e06107d960209473ffffffffffffffffffffffffffffffffffffffff939063ffffffff16907fffffffffffffffffffffffffffffffff000000000000000000000000000000004660401b9160801b16171790565b3090612800565b915191168152f35b82517f27eca1b0000000000000000000000000000000000000000000000000000000008152fd5b5034610228576020600319360112610228576fffffffffffffffffffffffffffffffff61083f61088793356125bb565b610848816125f0565b50165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80060205261087c815f205461219f565b905191829182611a94565b0390f35b509034610228576020600319360112610228576108a6611bf5565b6d04533fe15556b1e086bb1a72ceae30148015610a2d575b15610228577f000000000000000000000000000000000000000000000000000000000000000090600182036109e65773ffffffffffffffffffffffffffffffffffffffff81167fd6aad444c90d39fb0eee1c6e357a7fad83d63f719ac5f880445a2beb0ff3ab585f80a27f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f56555b6109536126f6565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354600181018082116109ba57820361098857005b60449351927f034e9fa80000000000000000000000000000000000000000000000000000000084528301526024820152fd5b6011847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b73ffffffffffffffffffffffffffffffffffffffff161561094b576001827f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b50617a6946146108be565b5034610228576020600319360112610228576020906fffffffffffffffffffffffffffffffff610a666119fa565b916002610a7284612535565b0180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000811667ffffffff0000000082851c60201b161790915563ffffffff1680610ae6575b505191167f75150e9e6335cb283f7e029ed2fdf899cec31cdff0b83ccdc07050eb21c8e0d35f80a260018152f35b610b229063ffffffff164660401b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000608087901b1617176107d9565b5f73ffffffffffffffffffffffffffffffffffffffff84861692167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a484610ab8565b5090346102285760209160206003193601126102285781359067ffffffffffffffff92838311610228573660238401121561022857820135928311610228576005918360051b93602490366024878501011161022857947f0000000000000000000000000000000000000000000000000000000000000000928451956024825f940101925b888110610bf557005b848382841b0101358301858101858110610c615736811015610228573590604482818301920101818110610c6157361061022857815f929183928b51928392833781018381520390895af4610c486124ce565b9015610c5a5750878752600101610bec565b8a81519101fd5b6125de565b611ba0565b5034610228575f60031936011261022857602090610c876126f6565b73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354915191168152f35b5034610228575f60031936011261022857602090610ce26126b6565b610cea6126f6565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610373ffffffffffffffffffffffffffffffffffffffff81541633817f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f5f80a3610d516126f6565b33907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a33390555f7fd6aad444c90d39fb0eee1c6e357a7fad83d63f719ac5f880445a2beb0ff3ab588180a25f7f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f56555160018152f35b503461022857602060031936011261022857610de36119fa565b916fffffffffffffffffffffffffffffffff831690815f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e800602052825f2091825415610e945760208473ffffffffffffffffffffffffffffffffffffffff6107e06107d989610e5e63ffffffff60028b0154871c16612673565b63ffffffff16907fffffffffffffffffffffffffffffffff000000000000000000000000000000004660401b9160801b16171790565b602492508351917f7e273289000000000000000000000000000000000000000000000000000000008352820152fd5b50346102285760206003193601126102285763ffffffff610eea610ee5611bf5565b611fe2565b6fffffffffffffffffffffffffffffffff849392935193168352166020820152f35b5034610228575f60031936011261022857602090610f28612099565b5f73ffffffffffffffffffffffffffffffffffffffff7f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f5681815416610ff1575b50610f716126f6565b817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61039182541681817f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f8280a3610fc56126f6565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3555160018152f35b8290817fd6aad444c90d39fb0eee1c6e357a7fad83d63f719ac5f880445a2beb0ff3ab588180a25584610f68565b50346102285760206003193601126102285760209061104461103f611bf5565b611eec565b9051908152f35b50346102285760206003193601126102285773ffffffffffffffffffffffffffffffffffffffff6107e06107d9611084602095356125bb565b610e5e816125f0565b50346102285780600319360112610228576110a66119fa565b906024359163ffffffff83168303610228576020926110c491611c3b565b90519015158152f35b5034610228575f6003193601126102285760209073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54915191168152f35b5034610228575f600319360112610228576108879061087c7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435461210b565b5034610228576020600319360112610228576020906fffffffffffffffffffffffffffffffff61118d6119fa565b165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e8008252805f20549051908152f35b5034610228576020600319360112610228576fffffffffffffffffffffffffffffffff6111e96119fa565b165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e8006020526001815f20015464ffffffffff82519173ffffffffffffffffffffffffffffffffffffffff8116835260a01c166020820152f35b508060031936011261022857611258611bf5565b9160243567ffffffffffffffff8111610228576112789036908301611a19565b91611281612099565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143908154927f00000000000000000000000000000000000000000000000000000000000000009473ffffffffffffffffffffffffffffffffffffffff917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9189841683558851907f19b991a800000000000000000000000000000000000000000000000000000000602083015285825261133a82611adc565b61134381611b66565b906113508b519283611b25565b8082523681850111610228576020815f926113739683860137830101528a6124fd565b505490808816908216036113d8575081548381036113a35760208661139c87878b82895561229d565b5160018152f35b60449250838651927f3503deab0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b85517f8423132700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80891693820193845290911660208301529081906040010390fd5b5034610228576020600319360112610228576020906110c4611450610ee5611bf5565b90611c3b565b5034610228576060600319360112610228576114706119fa565b611478611c18565b906044359164ffffffffff8316908184036102285773ffffffffffffffffffffffffffffffffffffffff906114ab612099565b1691814211831503610228576fffffffffffffffffffffffffffffffff169081156115b357815f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e800602052845f2095865415611584575094826001927f98483806ce9dfc30965d5198a3cf9e04a68aa8e9fb5cac21334d74425c669147602080998951908152a301917fffffffffffffff0000000000000000000000000000000000000000000000000078ffffffffff000000000000000000000000000000000000000084549260a01b169116171790555160018152f35b602490838751917ff7865c1d000000000000000000000000000000000000000000000000000000008352820152fd5b634e487b715f5260216020526024601cfd5b5060206003193601126102285760209061139c6115e0611bf5565b6115e8612099565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143908154907f000000000000000000000000000000000000000000000000000000000000000080938273ffffffffffffffffffffffffffffffffffffffff167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc555561229d565b5034610228576020600319360112610228576106b4611690602093356125bb565b6125f0565b5034610228576fffffffffffffffffffffffffffffffff906116b636611a47565b9390916116c1612099565b1690815f5260207fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e8008152835f209586546118c2576117a060536117038661210b565b9784885199828b93838501997f7b226465736372697074696f6e223a20220000000000000000000000000000008b5260318601378301907f222c20226e616d65223a2022307820536574746c6572206665617475726520006031830152805192839101605083015e017f227d0a00000000000000000000000000000000000000000000000000000000006050820152036033810189520187611b25565b855190620400018210156118b15790600183926117ca6117bf8461278c565b91846118a55761278c565b9060038951948598868a9795600a89975380518a82018984015e5101868101907f08021200000000000000000000000000000000000000000000000000000000008252835f1461189a5750829085518a87018683015e855101918483015e0101905b6018825380518682018584015e510103018160025afa15903d18176118985761188b611880610887967fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207935180915561219f565b845191829182611a94565b0390a25191829182611a94565bfe5b92505050019061182c565b8251841b85010161278c565b604183634e487b715f52526024601cfd5b602490848651917f72d9ef8a000000000000000000000000000000000000000000000000000000008352820152fd5b50903461022857602060031936011261022857357fffffffff0000000000000000000000000000000000000000000000000000000081168091036102285760209161193a6126f6565b7f01ffc9a70000000000000000000000000000000000000000000000000000000082149182156119d0575b82156119a6575b821561197c575b50519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000001491505f611973565b7f80ac58cd000000000000000000000000000000000000000000000000000000008114925061196c565b7f7f5828d00000000000000000000000000000000000000000000000000000000081149250611965565b600435906fffffffffffffffffffffffffffffffff8216820361022857565b9181601f840112156102285782359167ffffffffffffffff8311610228576020838186019501011161022857565b906040600319830112610228576004356fffffffffffffffffffffffffffffffff8116810361022857916024359067ffffffffffffffff821161022857611a9091600401611a19565b9091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff821117611af857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611af857604052565b67ffffffffffffffff8111611af857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b34610228575f60031936011261022857610887604051611bbf81611adc565b600a81527f307820536574746c657200000000000000000000000000000000000000000000602082015260405191829182611a94565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022857565b90611c4582612535565b60028101915f9163ffffffff91845494838083169660401c168611611ebb5791816fffffffffffffffffffffffffffffffff95936003869473ffffffffffffffffffffffffffffffffffffffff971684010190815494808087169660201c16918683155f14611e7b57508054918083168c149081611e6c575b50611e39575b5050916107d99185611d3c945b8115968715611def575b5050507fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008154169055899063ffffffff16907fffffffffffffffffffffffffffffffff000000000000000000000000000000004660401b9160801b16171790565b92611d70575b50501692167f14771144127988a0427a9c8e58dcb697adccdb5eadb2821e26d8a03a622b951b5f80a4600190565b15611dac57505f5b8584169083168284167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f80611d42565b611dea90309063ffffffff164660401b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060808a901b161717612800565b611d78565b611e31926003910101907fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff67ffffffff0000000083549260201b169116179055565b855f80611cdb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090911686179055600195508185611cc4565b90508260201c168b115f611cbe565b90506107d9939150826003611d3c9694880101827fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055611cd1565b602486604051907fddc0466c0000000000000000000000000000000000000000000000000000000082526004820152fd5b73ffffffffffffffffffffffffffffffffffffffff811615611fb857611f4f9073ffffffffffffffffffffffffffffffffffffffff165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80160205260405f2090565b5463ffffffff6fffffffffffffffffffffffffffffffff82168015611fb1575f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80060205280600260405f200154169160801c1614611fac575f90565b600190565b5050505f90565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6120298173ffffffffffffffffffffffffffffffffffffffff165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80160205260405f2090565b549163ffffffff6fffffffffffffffffffffffffffffffff84169360801c169183156120525750565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f89c62b64000000000000000000000000000000000000000000000000000000008352166004820152fd5b6120a16126f6565b73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103541633036120e157565b60046040517f1e092104000000000000000000000000000000000000000000000000000000008152fd5b906930313233343536373839600952604051606e8101604052606d810192600a80918181065186530490815b61216b575050606e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09203019201918252565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8192950194818106518653049081612137565b9060405191605483017931323334353637383941424344454647484a4b4c4d4e505152536019527f5455565758595a6162636465666768696a6b6d6e6f707172737475767778797a603952603a82819392828094065190530460040181810651605386015304602801908082065160528501537f0616868b6a3c45673102217be3fec84b7db78d8bb82965f94d9f33718a8074e381605186019304019160268501925b83821161226b57505050505f82526735697066733a2f2f6007830152605582016040525f606052565b8281817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff930651845304910190612242565b908211156122a9575050565b7f0000000000000000000000000000000000000000000000000000000000000000604051927f0900f01000000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff938483169283602483015260248252606082019167ffffffffffffffff9281811084821117611af85760408190527fb2fa93fb000000000000000000000000000000000000000000000000000000006080830181905273ffffffffffffffffffffffffffffffffffffffff8481166084850152881660a4840152604482529161239e9190612398606483611b25565b886124fd565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc948554908882160361249e575050507f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354908282111561246757828203116124305750508183169055167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2565b60449250604051917f4ead7ebf00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b60448383604051917fa6492b4400000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b60405191825273ffffffffffffffffffffffffffffffffffffffff92831660048301529091166024820152604490fd5b3d156124f8573d906124df82611b66565b916124ed6040519384611b25565b82523d5f602084013e565b606090565b5f918291602082519201905af4906125136124ce565b911561251d575090565b81519190821561252d5750602001fd5b602081519101fd5b6fffffffffffffffffffffffffffffffff165f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80060205260405f2090600182015464ffffffffff73ffffffffffffffffffffffffffffffffffffffff818360a01c16921633036120e15781141590816125b1575b506120e157565b905042115f6125aa565b6fffffffffffffffffffffffffffffffff908181116125de5780156115b3571690565b634e487b715f5260116020526024601cfd5b6fffffffffffffffffffffffffffffffff1690815f527fb48ce68a610ebca40b9e7586fb84b5d8b0b030b71733a8d4a75a983d5f78e80060205263ffffffff600260405f200154169182156126425750565b602490604051907f7e2732890000000000000000000000000000000000000000000000000000000082526004820152fd5b600163ffffffff80921601818111612689571690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f6ed8ad4e485c433a46d43a225e2ebe6a14259468c9e0ee3a0c38eefca7d49f56541633036120e157565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff90817f000000000000000000000000000000000000000000000000000000000000000016918291160361276257301461276257565b60046040517f8e3edd10000000000000000000000000000000000000000000000000000000008152fd5b90622000008210156125de5760405191600181607f1660801760208501538160071c806127cd575b508084528301805163ffffff7f16815260200160405250565b9050607f166080176021840153600e1c80156127f657607f166022830153602060035b5f6127b4565b50602060026127f0565b7f3bf3f97f0be1e2c00023033eefeb4fc062ac552ff36778b17060d90b6764902f60406055938151908152600b81019360ff8553602082015201522060145261d6945f5260016034536017601e2090560000000000000000000000000000000000000000000000000000000000000003