@zoralabs/openzeppelin-contracts-upgradeable
Version:
Secure Smart Contract library for Solidity
377 lines (376 loc) • 39.6 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC1155Upgradeable",
"sourceName": "contracts/token/ERC1155/ERC1155Upgradeable.sol",
"abi": [
{
"inputs": [],
"name": "ERC1155_ACCOUNTS_AND_IDS_LENGTH_MISMATCH",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_ADDRESS_ZERO_IS_NOT_A_VALID_OWNER",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_CALLER_IS_NOT_TOKEN_OWNER_OR_APPROVED",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_ERC1155RECEIVER_REJECTED_TOKENS",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_INSUFFICIENT_BALANCE_FOR_TRANSFER",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_SETTING_APPROVAL_FOR_SELF",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_TRANSFER_TO_NON_ERC1155RECEIVER_IMPLEMENTER",
"type": "error"
},
{
"inputs": [],
"name": "ERC1155_TRANSFER_TO_ZERO_ADDRESS",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"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": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "value",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "URI",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "batchBalances",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"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": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50611eb8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610138578063a22cb46514610168578063e985e9c514610184578063f242432a146101b457610087565b8062fdd58e1461008c57806301ffc9a7146100bc5780630e89341c146100ec5780632eb2c2d61461011c575b600080fd5b6100a660048036038101906100a191906112b0565b6101d0565b6040516100b391906112ff565b60405180910390f35b6100d660048036038101906100d19190611372565b610290565b6040516100e391906113ba565b60405180910390f35b610106600480360381019061010191906113d5565b610372565b604051610113919061149b565b60405180910390f35b610136600480360381019061013191906116ba565b610406565b005b610152600480360381019061014d919061184c565b6104a2565b60405161015f9190611982565b60405180910390f35b610182600480360381019061017d91906119d0565b6105aa565b005b61019e60048036038101906101999190611a10565b6105c0565b6040516101ab91906113ba565b60405180910390f35b6101ce60048036038101906101c99190611a50565b610654565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610237576040517f8620cc3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6065600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061035b57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061036b575061036a826106f0565b5b9050919050565b60606067805461038190611b16565b80601f01602080910402602001604051908101604052809291908181526020018280546103ad90611b16565b80156103fa5780601f106103cf576101008083540402835291602001916103fa565b820191906000526020600020905b8154815290600101906020018083116103dd57829003601f168201915b50505050509050919050565b61040e61075a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561045757506104558561045061075a565b6105c0565b155b1561048e576040517ff8ba805400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049b8585858585610762565b5050505050565b6060600083519050825181146104e4576040517f4ce4cfdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff8111156104fe576104fd6114c2565b5b60405190808252806020026020018201604052801561052c5781602001602082028036833780820191505090505b50915060005b818110156105a2576105788582815181106105505761054f611b47565b5b602002602001015185838151811061056b5761056a611b47565b5b60200260200101516101d0565b83828151811061058b5761058a611b47565b5b602002602001018181525050806001019050610532565b505092915050565b6105bc6105b561075a565b8383610a68565b5050565b6000606660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61065c61075a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156106a557506106a38561069e61075a565b6105c0565b155b156106dc576040517ff8ba805400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106e98585858585610bcb565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600083519050825181146107a2576040517f4ce4cfdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610808576040517f714fd84400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061081261075a565b9050610822818888888888610e3b565b6000806000805b858110156109c15788818151811061084457610843611b47565b5b6020026020010151935087818151811061086157610860611b47565b5b602002602001015192506065600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150828210156108f8576040517fdd543d5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826065600086815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109589190611ba5565b925050819055508282036065600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001019050610829565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b604051610a38929190611bfb565b60405180910390a4610a4e848b8b8b8b8b610e43565b610a5c848b8b8b8b8b610e4b565b50505050505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610acd576040517fd67f41b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bbe91906113ba565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c31576040517f714fd84400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c3b61075a565b9050610c4b818787878787611010565b60006065600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610cda576040517fdd543d5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8381036065600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836065600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d919190611ba5565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051610e0e929190611c32565b60405180910390a4610e24828888888888611018565b610e32828888888888611020565b50505050505050565b505050505050565b505050505050565b610e6a8473ffffffffffffffffffffffffffffffffffffffff166111e5565b15611008578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401610eb0959493929190611cbf565b6020604051808303816000875af1925050508015610eec57506040513d601f19601f82011682018060405250810190610ee99190611d3c565b60015b610f8857610ef8611d76565b806308c379a003610f545750610f0c611d98565b80610f175750610f56565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b919061149b565b60405180910390fd5b505b6040517fefab692200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611006576040517ffeff9fd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b505050505050565b505050505050565b61103f8473ffffffffffffffffffffffffffffffffffffffff166111e5565b156111dd578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611085959493929190611e28565b6020604051808303816000875af19250505080156110c157506040513d601f19601f820116820180604052508101906110be9190611d3c565b60015b61115d576110cd611d76565b806308c379a00361112957506110e1611d98565b806110ec575061112b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120919061149b565b60405180910390fd5b505b6040517fefab692200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146111db576040517ffeff9fd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112478261121c565b9050919050565b6112578161123c565b811461126257600080fd5b50565b6000813590506112748161124e565b92915050565b6000819050919050565b61128d8161127a565b811461129857600080fd5b50565b6000813590506112aa81611284565b92915050565b600080604083850312156112c7576112c6611212565b5b60006112d585828601611265565b92505060206112e68582860161129b565b9150509250929050565b6112f98161127a565b82525050565b600060208201905061131460008301846112f0565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61134f8161131a565b811461135a57600080fd5b50565b60008135905061136c81611346565b92915050565b60006020828403121561138857611387611212565b5b60006113968482850161135d565b91505092915050565b60008115159050919050565b6113b48161139f565b82525050565b60006020820190506113cf60008301846113ab565b92915050565b6000602082840312156113eb576113ea611212565b5b60006113f98482850161129b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561143c578082015181840152602081019050611421565b8381111561144b576000848401525b50505050565b6000601f19601f8301169050919050565b600061146d82611402565b611477818561140d565b935061148781856020860161141e565b61149081611451565b840191505092915050565b600060208201905081810360008301526114b58184611462565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6114fa82611451565b810181811067ffffffffffffffff82111715611519576115186114c2565b5b80604052505050565b600061152c611208565b905061153882826114f1565b919050565b600067ffffffffffffffff821115611558576115576114c2565b5b602082029050602081019050919050565b600080fd5b600061158161157c8461153d565b611522565b905080838252602082019050602084028301858111156115a4576115a3611569565b5b835b818110156115cd57806115b9888261129b565b8452602084019350506020810190506115a6565b5050509392505050565b600082601f8301126115ec576115eb6114bd565b5b81356115fc84826020860161156e565b91505092915050565b600080fd5b600067ffffffffffffffff821115611625576116246114c2565b5b61162e82611451565b9050602081019050919050565b82818337600083830152505050565b600061165d6116588461160a565b611522565b90508281526020810184848401111561167957611678611605565b5b61168484828561163b565b509392505050565b600082601f8301126116a1576116a06114bd565b5b81356116b184826020860161164a565b91505092915050565b600080600080600060a086880312156116d6576116d5611212565b5b60006116e488828901611265565b95505060206116f588828901611265565b945050604086013567ffffffffffffffff81111561171657611715611217565b5b611722888289016115d7565b935050606086013567ffffffffffffffff81111561174357611742611217565b5b61174f888289016115d7565b925050608086013567ffffffffffffffff8111156117705761176f611217565b5b61177c8882890161168c565b9150509295509295909350565b600067ffffffffffffffff8211156117a4576117a36114c2565b5b602082029050602081019050919050565b60006117c86117c384611789565b611522565b905080838252602082019050602084028301858111156117eb576117ea611569565b5b835b8181101561181457806118008882611265565b8452602084019350506020810190506117ed565b5050509392505050565b600082601f830112611833576118326114bd565b5b81356118438482602086016117b5565b91505092915050565b6000806040838503121561186357611862611212565b5b600083013567ffffffffffffffff81111561188157611880611217565b5b61188d8582860161181e565b925050602083013567ffffffffffffffff8111156118ae576118ad611217565b5b6118ba858286016115d7565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6118f98161127a565b82525050565b600061190b83836118f0565b60208301905092915050565b6000602082019050919050565b600061192f826118c4565b61193981856118cf565b9350611944836118e0565b8060005b8381101561197557815161195c88826118ff565b975061196783611917565b925050600181019050611948565b5085935050505092915050565b6000602082019050818103600083015261199c8184611924565b905092915050565b6119ad8161139f565b81146119b857600080fd5b50565b6000813590506119ca816119a4565b92915050565b600080604083850312156119e7576119e6611212565b5b60006119f585828601611265565b9250506020611a06858286016119bb565b9150509250929050565b60008060408385031215611a2757611a26611212565b5b6000611a3585828601611265565b9250506020611a4685828601611265565b9150509250929050565b600080600080600060a08688031215611a6c57611a6b611212565b5b6000611a7a88828901611265565b9550506020611a8b88828901611265565b9450506040611a9c8882890161129b565b9350506060611aad8882890161129b565b925050608086013567ffffffffffffffff811115611ace57611acd611217565b5b611ada8882890161168c565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2e57607f821691505b602082108103611b4157611b40611ae7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bb08261127a565b9150611bbb8361127a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bf057611bef611b76565b5b828201905092915050565b60006040820190508181036000830152611c158185611924565b90508181036020830152611c298184611924565b90509392505050565b6000604082019050611c4760008301856112f0565b611c5460208301846112f0565b9392505050565b611c648161123c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611c9182611c6a565b611c9b8185611c75565b9350611cab81856020860161141e565b611cb481611451565b840191505092915050565b600060a082019050611cd46000830188611c5b565b611ce16020830187611c5b565b8181036040830152611cf38186611924565b90508181036060830152611d078185611924565b90508181036080830152611d1b8184611c86565b90509695505050505050565b600081519050611d3681611346565b92915050565b600060208284031215611d5257611d51611212565b5b6000611d6084828501611d27565b91505092915050565b60008160e01c9050919050565b600060033d1115611d955760046000803e611d92600051611d69565b90505b90565b600060443d10611e2557611daa611208565b60043d036004823e80513d602482011167ffffffffffffffff82111715611dd2575050611e25565b808201805167ffffffffffffffff811115611df05750505050611e25565b80602083010160043d038501811115611e0d575050505050611e25565b611e1c826020018501866114f1565b82955050505050505b90565b600060a082019050611e3d6000830188611c5b565b611e4a6020830187611c5b565b611e5760408301866112f0565b611e6460608301856112f0565b8181036080830152611e768184611c86565b9050969550505050505056fea2646970667358221220f9fc0381ca018e2416ca1d8f448e30e5e2f8140aa53ede6435517856dcf49b6e64736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610138578063a22cb46514610168578063e985e9c514610184578063f242432a146101b457610087565b8062fdd58e1461008c57806301ffc9a7146100bc5780630e89341c146100ec5780632eb2c2d61461011c575b600080fd5b6100a660048036038101906100a191906112b0565b6101d0565b6040516100b391906112ff565b60405180910390f35b6100d660048036038101906100d19190611372565b610290565b6040516100e391906113ba565b60405180910390f35b610106600480360381019061010191906113d5565b610372565b604051610113919061149b565b60405180910390f35b610136600480360381019061013191906116ba565b610406565b005b610152600480360381019061014d919061184c565b6104a2565b60405161015f9190611982565b60405180910390f35b610182600480360381019061017d91906119d0565b6105aa565b005b61019e60048036038101906101999190611a10565b6105c0565b6040516101ab91906113ba565b60405180910390f35b6101ce60048036038101906101c99190611a50565b610654565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610237576040517f8620cc3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6065600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061035b57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061036b575061036a826106f0565b5b9050919050565b60606067805461038190611b16565b80601f01602080910402602001604051908101604052809291908181526020018280546103ad90611b16565b80156103fa5780601f106103cf576101008083540402835291602001916103fa565b820191906000526020600020905b8154815290600101906020018083116103dd57829003601f168201915b50505050509050919050565b61040e61075a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561045757506104558561045061075a565b6105c0565b155b1561048e576040517ff8ba805400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049b8585858585610762565b5050505050565b6060600083519050825181146104e4576040517f4ce4cfdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff8111156104fe576104fd6114c2565b5b60405190808252806020026020018201604052801561052c5781602001602082028036833780820191505090505b50915060005b818110156105a2576105788582815181106105505761054f611b47565b5b602002602001015185838151811061056b5761056a611b47565b5b60200260200101516101d0565b83828151811061058b5761058a611b47565b5b602002602001018181525050806001019050610532565b505092915050565b6105bc6105b561075a565b8383610a68565b5050565b6000606660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61065c61075a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156106a557506106a38561069e61075a565b6105c0565b155b156106dc576040517ff8ba805400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106e98585858585610bcb565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600083519050825181146107a2576040517f4ce4cfdc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610808576040517f714fd84400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061081261075a565b9050610822818888888888610e3b565b6000806000805b858110156109c15788818151811061084457610843611b47565b5b6020026020010151935087818151811061086157610860611b47565b5b602002602001015192506065600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150828210156108f8576040517fdd543d5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826065600086815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109589190611ba5565b925050819055508282036065600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001019050610829565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b604051610a38929190611bfb565b60405180910390a4610a4e848b8b8b8b8b610e43565b610a5c848b8b8b8b8b610e4b565b50505050505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610acd576040517fd67f41b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bbe91906113ba565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c31576040517f714fd84400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c3b61075a565b9050610c4b818787878787611010565b60006065600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610cda576040517fdd543d5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8381036065600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836065600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d919190611ba5565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051610e0e929190611c32565b60405180910390a4610e24828888888888611018565b610e32828888888888611020565b50505050505050565b505050505050565b505050505050565b610e6a8473ffffffffffffffffffffffffffffffffffffffff166111e5565b15611008578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401610eb0959493929190611cbf565b6020604051808303816000875af1925050508015610eec57506040513d601f19601f82011682018060405250810190610ee99190611d3c565b60015b610f8857610ef8611d76565b806308c379a003610f545750610f0c611d98565b80610f175750610f56565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b919061149b565b60405180910390fd5b505b6040517fefab692200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611006576040517ffeff9fd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b505050505050565b505050505050565b61103f8473ffffffffffffffffffffffffffffffffffffffff166111e5565b156111dd578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611085959493929190611e28565b6020604051808303816000875af19250505080156110c157506040513d601f19601f820116820180604052508101906110be9190611d3c565b60015b61115d576110cd611d76565b806308c379a00361112957506110e1611d98565b806110ec575061112b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120919061149b565b60405180910390fd5b505b6040517fefab692200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146111db576040517ffeff9fd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112478261121c565b9050919050565b6112578161123c565b811461126257600080fd5b50565b6000813590506112748161124e565b92915050565b6000819050919050565b61128d8161127a565b811461129857600080fd5b50565b6000813590506112aa81611284565b92915050565b600080604083850312156112c7576112c6611212565b5b60006112d585828601611265565b92505060206112e68582860161129b565b9150509250929050565b6112f98161127a565b82525050565b600060208201905061131460008301846112f0565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61134f8161131a565b811461135a57600080fd5b50565b60008135905061136c81611346565b92915050565b60006020828403121561138857611387611212565b5b60006113968482850161135d565b91505092915050565b60008115159050919050565b6113b48161139f565b82525050565b60006020820190506113cf60008301846113ab565b92915050565b6000602082840312156113eb576113ea611212565b5b60006113f98482850161129b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561143c578082015181840152602081019050611421565b8381111561144b576000848401525b50505050565b6000601f19601f8301169050919050565b600061146d82611402565b611477818561140d565b935061148781856020860161141e565b61149081611451565b840191505092915050565b600060208201905081810360008301526114b58184611462565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6114fa82611451565b810181811067ffffffffffffffff82111715611519576115186114c2565b5b80604052505050565b600061152c611208565b905061153882826114f1565b919050565b600067ffffffffffffffff821115611558576115576114c2565b5b602082029050602081019050919050565b600080fd5b600061158161157c8461153d565b611522565b905080838252602082019050602084028301858111156115a4576115a3611569565b5b835b818110156115cd57806115b9888261129b565b8452602084019350506020810190506115a6565b5050509392505050565b600082601f8301126115ec576115eb6114bd565b5b81356115fc84826020860161156e565b91505092915050565b600080fd5b600067ffffffffffffffff821115611625576116246114c2565b5b61162e82611451565b9050602081019050919050565b82818337600083830152505050565b600061165d6116588461160a565b611522565b90508281526020810184848401111561167957611678611605565b5b61168484828561163b565b509392505050565b600082601f8301126116a1576116a06114bd565b5b81356116b184826020860161164a565b91505092915050565b600080600080600060a086880312156116d6576116d5611212565b5b60006116e488828901611265565b95505060206116f588828901611265565b945050604086013567ffffffffffffffff81111561171657611715611217565b5b611722888289016115d7565b935050606086013567ffffffffffffffff81111561174357611742611217565b5b61174f888289016115d7565b925050608086013567ffffffffffffffff8111156117705761176f611217565b5b61177c8882890161168c565b9150509295509295909350565b600067ffffffffffffffff8211156117a4576117a36114c2565b5b602082029050602081019050919050565b60006117c86117c384611789565b611522565b905080838252602082019050602084028301858111156117eb576117ea611569565b5b835b8181101561181457806118008882611265565b8452602084019350506020810190506117ed565b5050509392505050565b600082601f830112611833576118326114bd565b5b81356118438482602086016117b5565b91505092915050565b6000806040838503121561186357611862611212565b5b600083013567ffffffffffffffff81111561188157611880611217565b5b61188d8582860161181e565b925050602083013567ffffffffffffffff8111156118ae576118ad611217565b5b6118ba858286016115d7565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6118f98161127a565b82525050565b600061190b83836118f0565b60208301905092915050565b6000602082019050919050565b600061192f826118c4565b61193981856118cf565b9350611944836118e0565b8060005b8381101561197557815161195c88826118ff565b975061196783611917565b925050600181019050611948565b5085935050505092915050565b6000602082019050818103600083015261199c8184611924565b905092915050565b6119ad8161139f565b81146119b857600080fd5b50565b6000813590506119ca816119a4565b92915050565b600080604083850312156119e7576119e6611212565b5b60006119f585828601611265565b9250506020611a06858286016119bb565b9150509250929050565b60008060408385031215611a2757611a26611212565b5b6000611a3585828601611265565b9250506020611a4685828601611265565b9150509250929050565b600080600080600060a08688031215611a6c57611a6b611212565b5b6000611a7a88828901611265565b9550506020611a8b88828901611265565b9450506040611a9c8882890161129b565b9350506060611aad8882890161129b565b925050608086013567ffffffffffffffff811115611ace57611acd611217565b5b611ada8882890161168c565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2e57607f821691505b602082108103611b4157611b40611ae7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bb08261127a565b9150611bbb8361127a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bf057611bef611b76565b5b828201905092915050565b60006040820190508181036000830152611c158185611924565b90508181036020830152611c298184611924565b90509392505050565b6000604082019050611c4760008301856112f0565b611c5460208301846112f0565b9392505050565b611c648161123c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611c9182611c6a565b611c9b8185611c75565b9350611cab81856020860161141e565b611cb481611451565b840191505092915050565b600060a082019050611cd46000830188611c5b565b611ce16020830187611c5b565b8181036040830152611cf38186611924565b90508181036060830152611d078185611924565b90508181036080830152611d1b8184611c86565b90509695505050505050565b600081519050611d3681611346565b92915050565b600060208284031215611d5257611d51611212565b5b6000611d6084828501611d27565b91505092915050565b60008160e01c9050919050565b600060033d1115611d955760046000803e611d92600051611d69565b90505b90565b600060443d10611e2557611daa611208565b60043d036004823e80513d602482011167ffffffffffffffff82111715611dd2575050611e25565b808201805167ffffffffffffffff811115611df05750505050611e25565b80602083010160043d038501811115611e0d575050505050611e25565b611e1c826020018501866114f1565b82955050505050505b90565b600060a082019050611e3d6000830188611c5b565b611e4a6020830187611c5b565b611e5760408301866112f0565b611e6460608301856112f0565b8181036080830152611e768184611c86565b9050969550505050505056fea2646970667358221220f9fc0381ca018e2416ca1d8f448e30e5e2f8140aa53ede6435517856dcf49b6e64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}