[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "ERC1167FailedCreateClone", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidCaller", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "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": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "collectionAddress", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "collectionId", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "collectionType", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" } ], "name": "MintRichCollectionCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": 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": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": [], "name": "burnToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "collectionId", "type": "bytes32" }, { "internalType": "uint256", "name": "collectionType", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "bytes32", "name": "packedData", "type": "bytes32" }, { "internalType": "bytes", "name": "information", "type": "bytes" } ], "name": "createRichCollection", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "implementationTypes", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_implementationERC721A", "type": "address" }, { "internalType": "address", "name": "_implementationERC404", "type": "address" }, { "internalType": "address", "name": "_implementationERC20", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadataRenderer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "collectionId", "type": "bytes32" }, { "internalType": "uint256", "name": "collectionType", "type": "uint256" } ], "name": "predictDeterministicAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "collectionType", "type": "uint256" }, { "internalType": "address", "name": "_implementationAddress", "type": "address" } ], "name": "setImplementationAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_metadataRenderer", "type": "address" } ], "name": "setMetadataRenderer", "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516130636100f95f395f81816117760152818161179f01526119bb01526130635ff3fe6080604052600436106101a4575f3560e01c806395d89b41116100e7578063c87b56dd11610087578063e985e9c511610062578063e985e9c514610512578063f2fde38b14610585578063faa0a264146105a4578063fd4fe8a8146105b8575f80fd5b8063c87b56dd146104b5578063d93d8f50146104d4578063deef1c9e146104f3575f80fd5b8063a3e766d6116100c2578063a3e766d614610410578063ad3cb1cc1461042f578063b88d4fde14610477578063c0c53b8b14610496575f80fd5b806395d89b411461039c578063a22cb465146103b0578063a32ec648146103cf575f80fd5b80634f1ef28611610152578063703199701161012d57806370319970146102f457806370a0823114610320578063715018a61461033f5780638da5cb5b14610353575f80fd5b80634f1ef286146102a057806352d1902d146102b35780636352211e146102d5575f80fd5b8063095ea7b311610182578063095ea7b31461024157806323b872dd1461026257806342842e0e14610281575f80fd5b806301ffc9a7146101a857806306fdde03146101dc578063081812fc146101fd575b5f80fd5b3480156101b3575f80fd5b506101c76101c23660046127ce565b6105d7565b60405190151581526020015b60405180910390f35b3480156101e7575f80fd5b506101f06106bb565b6040516101d39190612835565b348015610208575f80fd5b5061021c610217366004612847565b61076f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b34801561024c575f80fd5b5061026061025b366004612886565b6107c2565b005b34801561026d575f80fd5b5061026061027c3660046128ae565b6107d1565b34801561028c575f80fd5b5061026061029b3660046128ae565b6108c5565b6102606102ae3660046129fa565b6108e4565b3480156102be575f80fd5b506102c76108ff565b6040519081526020016101d3565b3480156102e0575f80fd5b5061021c6102ef366004612847565b61092d565b3480156102ff575f80fd5b5060015461021c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561032b575f80fd5b506102c761033a366004612a45565b610937565b34801561034a575f80fd5b506102606109d5565b34801561035e575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1661021c565b3480156103a7575f80fd5b506101f06109e8565b3480156103bb575f80fd5b506102606103ca366004612a5e565b610a39565b3480156103da575f80fd5b5061021c6103e9366004612847565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041b575f80fd5b5061021c61042a366004612a97565b610a44565b34801561043a575f80fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610482575f80fd5b50610260610491366004612ab7565b610ac8565b3480156104a1575f80fd5b506102606104b0366004612b1b565b610adf565b3480156104c0575f80fd5b506101f06104cf366004612847565b610f8b565b3480156104df575f80fd5b506102606104ee366004612ba0565b611048565b3480156104fe575f80fd5b5061026061050d366004612c50565b6112af565b34801561051d575f80fd5b506101c761052c366004612c7a565b73ffffffffffffffffffffffffffffffffffffffff9182165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b348015610590575f80fd5b5061026061059f366004612a45565b6113ac565b3480156105af575f80fd5b5061026061140f565b3480156105c3575f80fd5b506102606105d2366004612a45565b611423565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061066957507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106b557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930080546060919081906106ed90612ca2565b80601f016020809104026020016040519081016040528092919081815260200182805461071990612ca2565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b505050505091505090565b5f61077982611515565b505f8281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff166106b5565b6107cd828233611592565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216610825576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b5f61083183833361159f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108bf576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8086166004830152602482018490528216604482015260640161081c565b50505050565b6108df83838360405180602001604052805f815250610ac8565b505050565b6108ec61175e565b6108f582611862565b6107cd828261186a565b5f6109086119a3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b5f6106b582611515565b5f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166109a8576040517f89c62b640000000000000000000000000000000000000000000000000000000081525f600482015260240161081c565b73ffffffffffffffffffffffffffffffffffffffff9092165f908152600390920160205250604090205490565b6109dd611a12565b6109e65f611aa0565b565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300916106ed90612ca2565b6107cd338383611b35565b5f818152602081905260408082205490513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015273ffffffffffffffffffffffffffffffffffffffff9091166014820152733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018490526037600c820120607882015260556043909101205b9392505050565b610ad38484846107d1565b6108bf84848484611c55565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610b295750825b90505f8267ffffffffffffffff166001148015610b455750303b155b905081158015610b53575080155b15610b8a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610beb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610c5f6040518060400160405280600e81526020017f4d696e7452696368204f776e65720000000000000000000000000000000000008152506040518060400160405280600781526020017f4d524f776e657200000000000000000000000000000000000000000000000000815250611e49565b610c6833611e5b565b610c70611e6c565b73ffffffffffffffffffffffffffffffffffffffff8816610d13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5f696d706c656d656e746174696f6e455243373231412063616e27742062652060448201527f7a65726f20616464726573730000000000000000000000000000000000000000606482015260840161081c565b73ffffffffffffffffffffffffffffffffffffffff8716610db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5f696d706c656d656e746174696f6e4552433430342063616e2774206265207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015260840161081c565b73ffffffffffffffffffffffffffffffffffffffff8616610e59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5f696d706c656d656e746174696f6e45524332302063616e2774206265207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161081c565b5f60208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5805473ffffffffffffffffffffffffffffffffffffffff808c167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092557fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d80548b841690831617905560029092527fabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a5698054918916919092161790558315610f815784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6060610f9682611515565b506001546040517fc87b56dd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063c87b56dd906024015f60405180830381865afa158015611003573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106b59190810190612cf3565b61105189611e74565b5f8881526020819052604090205473ffffffffffffffffffffffffffffffffffffffff166110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420636f6c6c656374696f6e5479706500000000000000000000604482015260640161081c565b5f888152602081905260408120546111099073ffffffffffffffffffffffffffffffffffffffff168b611eb1565b90505f808273ffffffffffffffffffffffffffffffffffffffff168a8a8a8a8a8a8a6040516024016111419796959493929190612daf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0f0170d300000000000000000000000000000000000000000000000000000000179052516111c29190612dfe565b5f604051808303815f865af19150503d805f81146111fb576040519150601f19603f3d011682016040523d82523d5f602084013e611200565b606091505b50915091508161121257805160208201fd5b611232338473ffffffffffffffffffffffffffffffffffffffff16611f42565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f12770bb2618211fde9f36c2d2da61cdea4c83cb77c9b18d055c3c93dde98d7f78e8e8e8e8e8e60405161129996959493929190612e14565b60405180910390a3505050505050505050505050565b6112b7611a12565b73ffffffffffffffffffffffffffffffffffffffff811661135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5f696d706c656d656e746174696f6e416464726573732063616e27742062652060448201527f7a65726f20616464726573730000000000000000000000000000000000000000606482015260840161081c565b5f9182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6113b4611a12565b73ffffffffffffffffffffffffffffffffffffffff8116611403576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161081c565b61140c81611aa0565b50565b3361141981611515565b5061140c81611f5b565b61142b611a12565b73ffffffffffffffffffffffffffffffffffffffff81166114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5f6d6574616461746152656e64657265722063616e2774206265207a65726f2060448201527f6164647265737300000000000000000000000000000000000000000000000000606482015260840161081c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f8181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff16806106b5576040517f7e2732890000000000000000000000000000000000000000000000000000000081526004810184905260240161081c565b6108df8383836001611fb9565b5f8281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff90811690841615611619576116198185876121c2565b73ffffffffffffffffffffffffffffffffffffffff81161561168e576116415f865f80611fb9565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156116d85773ffffffffffffffffffffffffffffffffffffffff86165f9081526003830160205260409020805460010190555b5f85815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148061182b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118127f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b156109e6576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61140c611a12565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ef575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526118ec91810190612e53565b60015b61193d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260240161081c565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611999576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161081c565b6108df8383612272565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109e6576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a517f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161081c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316611bbb576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161081c565b73ffffffffffffffffffffffffffffffffffffffff8481165f81815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83163b156108bf576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290611cca903390889087908790600401612e6a565b6020604051808303815f875af1925050508015611d22575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d1f91810190612eb2565b60015b611daf573d808015611d4f576040519150601f19603f3d011682016040523d82523d5f602084013e611d54565b606091505b5080515f03611da7576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161081c565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611e42576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161081c565b5050505050565b611e516122d4565b6107cd828261233b565b611e636122d4565b61140c8161237e565b6109e66122d4565b606081901c331461140c576040517f48f5c3ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760095ff5905073ffffffffffffffffffffffffffffffffffffffff81166106b5576040517fc2f868f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107cd828260405180602001604052805f815250612386565b5f611f675f835f61159f565b905073ffffffffffffffffffffffffffffffffffffffff81166107cd576040517f7e2732890000000000000000000000000000000000000000000000000000000081526004810183905260240161081c565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611ffb575073ffffffffffffffffffffffffffffffffffffffff831615155b1561216d575f61200a85611515565b905073ffffffffffffffffffffffffffffffffffffffff84161580159061205d57508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156120ba575073ffffffffffffffffffffffffffffffffffffffff8082165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15612109576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161081c565b821561216b57848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5f93845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6121cd83838361239c565b6108df5773ffffffffffffffffffffffffffffffffffffffff8316612221576040517f7e2732890000000000000000000000000000000000000000000000000000000081526004810182905260240161081c565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810182905260440161081c565b61227b8261249e565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122cc576108df828261256c565b6107cd6125eb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166109e6576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123436122d4565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008061236f8482612f11565b50600181016108bf8382612f11565b6113b46122d4565b6123908383612623565b6108df5f848484611c55565b5f73ffffffffffffffffffffffffffffffffffffffff83161580159061249657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612447575073ffffffffffffffffffffffffffffffffffffffff8085165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b8061249657505f8281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b8073ffffffffffffffffffffffffffffffffffffffff163b5f03612506576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161081c565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516125959190612dfe565b5f60405180830381855af49150503d805f81146125cd576040519150601f19603f3d011682016040523d82523d5f602084013e6125d2565b606091505b50915091506125e28583836126d0565b95945050505050565b34156109e6576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612672576040517f64a0ae920000000000000000000000000000000000000000000000000000000081525f600482015260240161081c565b5f61267e83835f61159f565b905073ffffffffffffffffffffffffffffffffffffffff8116156108df576040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081525f600482015260240161081c565b6060826126e5576126e08261275f565b610ac1565b8151158015612709575073ffffffffffffffffffffffffffffffffffffffff84163b155b15612758576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161081c565b5080610ac1565b80511561276f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461140c575f80fd5b5f602082840312156127de575f80fd5b8135610ac1816127a1565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610ac160208301846127e9565b5f60208284031215612857575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612881575f80fd5b919050565b5f8060408385031215612897575f80fd5b6128a08361285e565b946020939093013593505050565b5f805f606084860312156128c0575f80fd5b6128c98461285e565b92506128d76020850161285e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561295b5761295b6128e7565b604052919050565b5f67ffffffffffffffff82111561297c5761297c6128e7565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126129b7575f80fd5b81356129ca6129c582612963565b612914565b8181528460208386010111156129de575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215612a0b575f80fd5b612a148361285e565b9150602083013567ffffffffffffffff811115612a2f575f80fd5b612a3b858286016129a8565b9150509250929050565b5f60208284031215612a55575f80fd5b610ac18261285e565b5f8060408385031215612a6f575f80fd5b612a788361285e565b915060208301358015158114612a8c575f80fd5b809150509250929050565b5f8060408385031215612aa8575f80fd5b50508035926020909101359150565b5f805f8060808587031215612aca575f80fd5b612ad38561285e565b9350612ae16020860161285e565b925060408501359150606085013567ffffffffffffffff811115612b03575f80fd5b612b0f878288016129a8565b91505092959194509250565b5f805f60608486031215612b2d575f80fd5b612b368461285e565b9250612b446020850161285e565b9150612b526040850161285e565b90509250925092565b5f8083601f840112612b6b575f80fd5b50813567ffffffffffffffff811115612b82575f80fd5b602083019150836020828501011115612b99575f80fd5b9250929050565b5f805f805f805f805f60c08a8c031215612bb8575f80fd5b8935985060208a0135975060408a013567ffffffffffffffff80821115612bdd575f80fd5b612be98d838e01612b5b565b909950975060608c0135915080821115612c01575f80fd5b612c0d8d838e01612b5b565b909750955060808c0135945060a08c0135915080821115612c2c575f80fd5b50612c398c828d01612b5b565b915080935050809150509295985092959850929598565b5f8060408385031215612c61575f80fd5b82359150612c716020840161285e565b90509250929050565b5f8060408385031215612c8b575f80fd5b612c948361285e565b9150612c716020840161285e565b600181811c90821680612cb657607f821691505b602082108103612ced577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215612d03575f80fd5b815167ffffffffffffffff811115612d19575f80fd5b8201601f81018413612d29575f80fd5b8051612d376129c582612963565b818152856020838501011115612d4b575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b608081525f612dc260808301898b612d68565b8281036020840152612dd581888a612d68565b90508560408401528281036060840152612df0818587612d68565b9a9950505050505050505050565b5f82518060208501845e5f920191825250919050565b868152856020820152608060408201525f612e33608083018688612d68565b8281036060840152612e46818587612d68565b9998505050505050505050565b5f60208284031215612e63575f80fd5b5051919050565b5f73ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612ea860808301846127e9565b9695505050505050565b5f60208284031215612ec2575f80fd5b8151610ac1816127a1565b601f8211156108df57805f5260205f20601f840160051c81016020851015612ef25750805b601f840160051c820191505b81811015611e42575f8155600101612efe565b815167ffffffffffffffff811115612f2b57612f2b6128e7565b612f3f81612f398454612ca2565b84612ecd565b602080601f831160018114612f91575f8415612f5b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613025565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612fdd57888601518255948401946001909101908401612fbe565b508582101561301957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea26469706673582212200e6fcbabd6c4f0b1d307fee8e6d098632df69ff3c78b8944148ebd81f98d619c64736f6c63430008190033