[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "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": true, "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "string", "name": "arTxId", "type": "string" }, { "indexed": false, "internalType": "bool", "name": "isContract", "type": "bool" } ], "name": "Create", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "Remove", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "enum Bodhi.TradeType", "name": "tradeType", "type": "uint8" }, { "indexed": true, "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "creatorFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "platformFee", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isContract", "type": "bool" } ], "name": "Trade", "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": "amounts", "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": "amount", "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": [], "name": "CREATOR_FEE_PERCENT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "CREATOR_PREMINT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLATFORM_FEE_PERCENT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "assetIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "assets", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "arTxId", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "owners", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "arTxId", "type": "string" } ], "name": "create", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "getAssetIdsByAddress", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getBuyPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getBuyPriceAfterFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSellPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSellPriceAfterFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "pool", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetId", "type": "uint256" } ], "name": "remove", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "assetIds", "type": "uint256[]" } ], "name": "removeByOwner", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "assetId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sell", "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "txToAssetId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "userAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawPlatformFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061458a806100616000396000f3fe6080604052600436106101d75760003560e01c8063b5dfd73511610102578063d79875eb11610095578063e0e1b2c011610064578063e0e1b2c014610722578063e985e9c51461075f578063f242432a1461079c578063fe313112146107c5576101d7565b8063d79875eb1461067a578063da23eb63146106a3578063de54b177146106ce578063e07b098a146106f7576101d7565b8063cd9c7121116100d1578063cd9c7121146105cb578063cf35bdd014610608578063d0b7830b14610647578063d6febde81461065e576101d7565b8063b5dfd735146104eb578063b6a46b3b14610528578063bd85b03914610551578063c157253d1461058e576101d7565b80634e1273f41161017a5780637ffb25ac116101495780637ffb25ac1461042f5780638da5cb5b1461045a5780639477d85d14610485578063a22cb465146104c2576101d7565b80634e1273f41461034d578063560d52d41461038a5780635cf4ee91146103b55780636a8a69aa146103f2576101d7565b80630e89341c116101b65780630e89341c14610293578063194a4e7e146102d05780632eb2c2d6146102fb5780634cc8221514610324576101d7565b8062fdd58e146101dc57806301ffc9a714610219578063063a741f14610256575b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d63565b610802565b6040516102109190612db2565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612e25565b610827565b60405161024d9190612e6d565b60405180910390f35b34801561026257600080fd5b5061027d60048036038101906102789190612e88565b6108b9565b60405161028a9190612db2565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190612ec8565b61093e565b6040516102c79190612f85565b60405180910390f35b3480156102dc57600080fd5b506102e56109e6565b6040516102f29190612db2565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190613062565b6109ec565b005b34801561033057600080fd5b5061034b60048036038101906103469190612ec8565b610e48565b005b34801561035957600080fd5b50610374600480360381019061036f9190613194565b6110a3565b60405161038191906132d3565b60405180910390f35b34801561039657600080fd5b5061039f61120c565b6040516103ac9190612db2565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d79190612e88565b611217565b6040516103e99190612db2565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190612d63565b611273565b6040516104269190612db2565b60405180910390f35b34801561043b57600080fd5b506104446112a4565b6040516104519190612db2565b60405180910390f35b34801561046657600080fd5b5061046f6112b0565b60405161047c9190613304565b60405180910390f35b34801561049157600080fd5b506104ac60048036038101906104a79190612e88565b6112d6565b6040516104b99190612db2565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e4919061334b565b611308565b005b3480156104f757600080fd5b50610512600480360381019061050d919061338b565b611405565b60405161051f91906132d3565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061340e565b61149c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612ec8565b6117da565b6040516105859190612db2565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612e88565b6117f2565b6040516105c29190612db2565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190612e88565b611819565b6040516105ff9190612db2565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190612ec8565b61189e565b60405161063e9392919061345b565b60405180910390f35b34801561065357600080fd5b5061065c611970565b005b61067860048036038101906106739190612e88565b611abf565b005b34801561068657600080fd5b506106a1600480360381019061069c9190612e88565b611da9565b005b3480156106af57600080fd5b506106b86121af565b6040516106c59190612db2565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f091906135d7565b6121ba565b005b34801561070357600080fd5b5061070c61247c565b6040516107199190612db2565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190613656565b612482565b6040516107569190612db2565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190613683565b61249a565b6040516107939190612e6d565b60405180910390f35b3480156107a857600080fd5b506107c360048036038101906107be91906136c3565b6124c9565b005b3480156107d157600080fd5b506107ec60048036038101906107e79190612ec8565b61287c565b6040516107f99190612db2565b60405180910390f35b6000602052816000526040600020602052806000526040600020600091509150505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610882575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108b25750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000806108c684846117f2565b90506000670de0b6b3a7640000666a94d74f430000836108e6919061378c565b6108f091906137fd565b90506000670de0b6b3a764000066470de4df82000084610910919061378c565b61091a91906137fd565b9050808284610929919061382e565b610933919061382e565b935050505092915050565b606060036000838152602001908152602001600020600101805461096190613891565b80601f016020809104026020016040519081016040528092919081815260200182805461098d90613891565b80156109da5780601f106109af576101008083540402835291602001916109da565b820191906000526020600020905b8154815290600101906020018083116109bd57829003601f168201915b50505050509050919050565b60085481565b838390508686905014610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061390e565b60405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610af45750600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a9061397a565b60405180910390fd5b60008060005b88889050811015610c5357888882818110610b5757610b5661399a565b5b905060200201359250868682818110610b7357610b7261399a565b5b905060200201359150816000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000828254610bdb91906139c9565b92505081905550816000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000828254610c41919061382e565b92505081905550806001019050610b39565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610cce9493929190613a67565b60405180910390a460008973ffffffffffffffffffffffffffffffffffffffff163b14610dcb5763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168973ffffffffffffffffffffffffffffffffffffffff1663bc197c81338d8c8c8c8c8c8c6040518963ffffffff1660e01b8152600401610d63989796959493929190613aef565b6020604051808303816000875af1158015610d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da69190613b72565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610dfd565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390613beb565b60405180910390fd5b50505050505050505050565b60006003600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054610e8290613891565b80601f0160208091040260200160405190810160405280929190818152602001828054610eae90613891565b8015610efb5780601f10610ed057610100808354040283529160200191610efb565b820191906000526020600020905b815481529060010190602001808311610ede57829003601f168201915b505050505081526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090503373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614610fc5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008260200151604051602001610fde9190613c47565b60405160208183030381529060405280519060200120815260200190815260200160002060009055600360008381526020019081526020016000206000808201600090556001820160006110329190612c5e565b6002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550503373ffffffffffffffffffffffffffffffffffffffff16827fe52b7042a48e37bfb277e8a210794950be40bfaedea374e2dfbe0c6edff8791d60405160405180910390a35050565b60608282905085859050146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e49061390e565b60405180910390fd5b8484905067ffffffffffffffff81111561110a57611109613499565b5b6040519080825280602002602001820160405280156111385781602001602082028036833780820191505090505b50905060005b858590508110156112035760008087878481811061115f5761115e61399a565b5b9050602002016020810190611174919061338b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106111c3576111c261399a565b5b905060200201358152602001908152602001600020548282815181106111ec576111eb61399a565b5b60200260200101818152505080600101905061113e565b50949350505050565b66470de4df82000081565b600061c350670de0b6b3a76400008061122f86612894565b611243868861123e919061382e565b612894565b61124d91906139c9565b61125791906137fd565b61126191906137fd565b61126b91906137fd565b905092915050565b6004602052816000526040600020818154811061128f57600080fd5b90600052602060002001600091509150505481565b670de0b6b3a764000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113008260066000868152602001908152602001600020546112fa91906139c9565b83611217565b905092915050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113f99190612e6d565b60405180910390a35050565b6060600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561149057602002820191906000526020600020905b81548152602001906001019080831161147c575b50505050509050919050565b600082826040516020016114b1929190613c83565b604051602081830303815290604052805190602001209050600060056000838152602001908152602001600020541461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151690613ce8565b60405180910390fd5b60006002549050604051806060016040528082815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020013373ffffffffffffffffffffffffffffffffffffffff16815250600360008381526020019081526020016000206000820151816000015560208201518160010190816115cd9190613eb4565b5060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055806005600084815260200190815260200160002081905550670de0b6b3a76400006006600083815260200190815260200160002060008282546116c1919061382e565b925050819055506001816116d5919061382e565b6002819055506116fe3382670de0b6b3a764000060405180602001604052806000815250612905565b600061170933612b51565b90503373ffffffffffffffffffffffffffffffffffffffff16827f29b1b4048f9e8b9097378e34fa652a974ec245eac3492e9822b22642196fb6b987878560405161175693929190613fb3565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff16826000600281111561178a57611789613fe5565b5b7fdd06c74452518fdc2ae4d1aa406e5ff2b1bc9e7ce0fe636ca9fb2055dd973a14670de0b6b3a76400006000806000886040516117cb95949392919061404f565b60405180910390a45050505050565b60066020528060005260406000206000915090505481565b6000611811600660008581526020019081526020016000205483611217565b905092915050565b60008061182684846112d6565b90506000670de0b6b3a7640000666a94d74f43000083611846919061378c565b61185091906137fd565b90506000670de0b6b3a764000066470de4df82000084611870919061378c565b61187a91906137fd565b905080828461188991906139c9565b61189391906139c9565b935050505092915050565b60036020528060005260406000206000915090508060000154908060010180546118c790613891565b80601f01602080910402602001604051908101604052809291908181526020018280546118f390613891565b80156119405780601f1061191557610100808354040283529160200191611940565b820191906000526020600020905b81548152906001019060200180831161192357829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f7906140ee565b60405180910390fd5b60006008549050600060088190555060003373ffffffffffffffffffffffffffffffffffffffff1682604051611a359061413f565b60006040518083038185875af1925050503d8060008114611a72576040519150601f19603f3d011682016040523d82523d6000602084013e611a77565b606091505b5050905080611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906141a0565b60405180910390fd5b5050565b6002548210611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afa9061420c565b60405180910390fd5b6000611b0f83836117f2565b90506000670de0b6b3a7640000666a94d74f43000083611b2f919061378c565b611b3991906137fd565b90506000670de0b6b3a764000066470de4df82000084611b59919061378c565b611b6391906137fd565b9050808284611b72919061382e565b611b7c919061382e565b341015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590614278565b60405180910390fd5b83600660008781526020019081526020016000206000828254611be1919061382e565b9250508190555082600760008781526020019081526020016000206000828254611c0b919061382e565b925050819055508060086000828254611c24919061382e565b92505081905550611c4633868660405180602001604052806000815250612905565b6000611c5133612b51565b90503373ffffffffffffffffffffffffffffffffffffffff168660016002811115611c7f57611c7e613fe5565b5b7fdd06c74452518fdc2ae4d1aa406e5ff2b1bc9e7ce0fe636ca9fb2055dd973a148888888888604051611cb6959493929190614298565b60405180910390a460006003600088815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611d1a9061413f565b60006040518083038185875af1925050503d8060008114611d57576040519150601f19603f3d011682016040523d82523d6000602084013e611d5c565b606091505b5050905080611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d97906141a0565b60405180910390fd5b50505050505050565b6002548210611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de49061420c565b60405180910390fd5b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020541015611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690614337565b60405180910390fd5b600060066000848152602001908152602001600020549050670de0b6b3a76400008282611eac91906139c9565b1015611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906143c9565b60405180910390fd5b6000611ef984846112d6565b90506000670de0b6b3a7640000666a94d74f43000083611f19919061378c565b611f2391906137fd565b90506000670de0b6b3a764000066470de4df82000084611f43919061378c565b611f4d91906137fd565b9050611f5a338787612b74565b8484611f6691906139c9565b600660008881526020019081526020016000208190555082600760008881526020019081526020016000206000828254611fa091906139c9565b925050819055508060086000828254611fb9919061382e565b925050819055506000611fcb33612b51565b90503373ffffffffffffffffffffffffffffffffffffffff1687600280811115611ff857611ff7613fe5565b5b7fdd06c74452518fdc2ae4d1aa406e5ff2b1bc9e7ce0fe636ca9fb2055dd973a14898888888860405161202f959493929190614298565b60405180910390a460003373ffffffffffffffffffffffffffffffffffffffff1683858761205d91906139c9565b61206791906139c9565b6040516120739061413f565b60006040518083038185875af1925050503d80600081146120b0576040519150601f19603f3d011682016040523d82523d6000602084013e6120b5565b606091505b505090506000600360008a815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16856040516121159061413f565b60006040518083038185875af1925050503d8060008114612152576040519150601f19603f3d011682016040523d82523d6000602084013e612157565b606091505b505090508180156121655750805b6121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219b906141a0565b60405180910390fd5b505050505050505050565b666a94d74f43000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461224a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612241906140ee565b60405180910390fd5b60005b815181101561247857600082828151811061226b5761226a61399a565b5b60200260200101519050600060036000838152602001908152602001600020604051806060016040529081600082015481526020016001820180546122af90613891565b80601f01602080910402602001604051908101604052809291908181526020018280546122db90613891565b80156123285780601f106122fd57610100808354040283529160200191612328565b820191906000526020600020905b81548152906001019060200180831161230b57829003601f168201915b505050505081526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090506005600082602001516040516020016123a29190613c47565b60405160208183030381529060405280519060200120815260200190815260200160002060009055600360008381526020019081526020016000206000808201600090556001820160006123f69190612c5e565b6002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550503373ffffffffffffffffffffffffffffffffffffffff16827fe52b7042a48e37bfb277e8a210794950be40bfaedea374e2dfbe0c6edff8791d60405160405180910390a350508080612470906143e9565b91505061224d565b5050565b60025481565b60056020528060005260406000206000915090505481565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806125895750600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bf9061397a565b60405180910390fd5b826000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600082825461262791906139c9565b92505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600082825461268d919061382e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161270a929190614431565b60405180910390a460008573ffffffffffffffffffffffffffffffffffffffff163b146128035763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168573ffffffffffffffffffffffffffffffffffffffff1663f23a6e613389888888886040518763ffffffff1660e01b815260040161279b9695949392919061445a565b6020604051808303816000875af11580156127ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127de9190613b72565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612835565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b90613beb565b60405180910390fd5b505050505050565b60076020528060005260406000206000915090505481565b6000670de0b6b3a76400008211156128fb57670de0b6b3a7640000826128ba91906139c9565b670de0b6b3a7640000836128ce91906139c9565b670de0b6b3a7640000846128e291906139c9565b6128ec919061378c565b6128f6919061378c565b6128fe565b60005b9050919050565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000828254612964919061382e565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516129e2929190614431565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b14612ada5763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e613360008787876040518663ffffffff1660e01b8152600401612a729594939291906144fa565b6020604051808303816000875af1158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190613b72565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612b0c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b612b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4290613beb565b60405180910390fd5b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000828254612bd391906139c9565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612c51929190614431565b60405180910390a4505050565b508054612c6a90613891565b6000825580601f10612c7c5750612c9b565b601f016020900490600052602060002090810190612c9a9190612c9e565b5b50565b5b80821115612cb7576000816000905550600101612c9f565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cfa82612ccf565b9050919050565b612d0a81612cef565b8114612d1557600080fd5b50565b600081359050612d2781612d01565b92915050565b6000819050919050565b612d4081612d2d565b8114612d4b57600080fd5b50565b600081359050612d5d81612d37565b92915050565b60008060408385031215612d7a57612d79612cc5565b5b6000612d8885828601612d18565b9250506020612d9985828601612d4e565b9150509250929050565b612dac81612d2d565b82525050565b6000602082019050612dc76000830184612da3565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612e0281612dcd565b8114612e0d57600080fd5b50565b600081359050612e1f81612df9565b92915050565b600060208284031215612e3b57612e3a612cc5565b5b6000612e4984828501612e10565b91505092915050565b60008115159050919050565b612e6781612e52565b82525050565b6000602082019050612e826000830184612e5e565b92915050565b60008060408385031215612e9f57612e9e612cc5565b5b6000612ead85828601612d4e565b9250506020612ebe85828601612d4e565b9150509250929050565b600060208284031215612ede57612edd612cc5565b5b6000612eec84828501612d4e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2f578082015181840152602081019050612f14565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5782612ef5565b612f618185612f00565b9350612f71818560208601612f11565b612f7a81612f3b565b840191505092915050565b60006020820190508181036000830152612f9f8184612f4c565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612fcc57612fcb612fa7565b5b8235905067ffffffffffffffff811115612fe957612fe8612fac565b5b60208301915083602082028301111561300557613004612fb1565b5b9250929050565b60008083601f84011261302257613021612fa7565b5b8235905067ffffffffffffffff81111561303f5761303e612fac565b5b60208301915083600182028301111561305b5761305a612fb1565b5b9250929050565b60008060008060008060008060a0898b03121561308257613081612cc5565b5b60006130908b828c01612d18565b98505060206130a18b828c01612d18565b975050604089013567ffffffffffffffff8111156130c2576130c1612cca565b5b6130ce8b828c01612fb6565b9650965050606089013567ffffffffffffffff8111156130f1576130f0612cca565b5b6130fd8b828c01612fb6565b9450945050608089013567ffffffffffffffff8111156131205761311f612cca565b5b61312c8b828c0161300c565b92509250509295985092959890939650565b60008083601f84011261315457613153612fa7565b5b8235905067ffffffffffffffff81111561317157613170612fac565b5b60208301915083602082028301111561318d5761318c612fb1565b5b9250929050565b600080600080604085870312156131ae576131ad612cc5565b5b600085013567ffffffffffffffff8111156131cc576131cb612cca565b5b6131d88782880161313e565b9450945050602085013567ffffffffffffffff8111156131fb576131fa612cca565b5b61320787828801612fb6565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61324a81612d2d565b82525050565b600061325c8383613241565b60208301905092915050565b6000602082019050919050565b600061328082613215565b61328a8185613220565b935061329583613231565b8060005b838110156132c65781516132ad8882613250565b97506132b883613268565b925050600181019050613299565b5085935050505092915050565b600060208201905081810360008301526132ed8184613275565b905092915050565b6132fe81612cef565b82525050565b600060208201905061331960008301846132f5565b92915050565b61332881612e52565b811461333357600080fd5b50565b6000813590506133458161331f565b92915050565b6000806040838503121561336257613361612cc5565b5b600061337085828601612d18565b925050602061338185828601613336565b9150509250929050565b6000602082840312156133a1576133a0612cc5565b5b60006133af84828501612d18565b91505092915050565b60008083601f8401126133ce576133cd612fa7565b5b8235905067ffffffffffffffff8111156133eb576133ea612fac565b5b60208301915083600182028301111561340757613406612fb1565b5b9250929050565b6000806020838503121561342557613424612cc5565b5b600083013567ffffffffffffffff81111561344357613442612cca565b5b61344f858286016133b8565b92509250509250929050565b60006060820190506134706000830186612da3565b81810360208301526134828185612f4c565b905061349160408301846132f5565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6134d182612f3b565b810181811067ffffffffffffffff821117156134f0576134ef613499565b5b80604052505050565b6000613503612cbb565b905061350f82826134c8565b919050565b600067ffffffffffffffff82111561352f5761352e613499565b5b602082029050602081019050919050565b600061355361354e84613514565b6134f9565b9050808382526020820190506020840283018581111561357657613575612fb1565b5b835b8181101561359f578061358b8882612d4e565b845260208401935050602081019050613578565b5050509392505050565b600082601f8301126135be576135bd612fa7565b5b81356135ce848260208601613540565b91505092915050565b6000602082840312156135ed576135ec612cc5565b5b600082013567ffffffffffffffff81111561360b5761360a612cca565b5b613617848285016135a9565b91505092915050565b6000819050919050565b61363381613620565b811461363e57600080fd5b50565b6000813590506136508161362a565b92915050565b60006020828403121561366c5761366b612cc5565b5b600061367a84828501613641565b91505092915050565b6000806040838503121561369a57613699612cc5565b5b60006136a885828601612d18565b92505060206136b985828601612d18565b9150509250929050565b60008060008060008060a087890312156136e0576136df612cc5565b5b60006136ee89828a01612d18565b96505060206136ff89828a01612d18565b955050604061371089828a01612d4e565b945050606061372189828a01612d4e565b935050608087013567ffffffffffffffff81111561374257613741612cca565b5b61374e89828a0161300c565b92509250509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061379782612d2d565b91506137a283612d2d565b92508282026137b081612d2d565b915082820484148315176137c7576137c661375d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061380882612d2d565b915061381383612d2d565b925082613823576138226137ce565b5b828204905092915050565b600061383982612d2d565b915061384483612d2d565b925082820190508082111561385c5761385b61375d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138a957607f821691505b6020821081036138bc576138bb613862565b5b50919050565b7f4c454e4754485f4d49534d415443480000000000000000000000000000000000600082015250565b60006138f8600f83612f00565b9150613903826138c2565b602082019050919050565b60006020820190508181036000830152613927816138eb565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000613964600e83612f00565b915061396f8261392e565b602082019050919050565b6000602082019050818103600083015261399381613957565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006139d482612d2d565b91506139df83612d2d565b92508282039050818111156139f7576139f661375d565b5b92915050565b600080fd5b82818337505050565b6000613a178385613220565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613a4a57613a496139fd565b5b602083029250613a5b838584613a02565b82840190509392505050565b60006040820190508181036000830152613a82818688613a0b565b90508181036020830152613a97818486613a0b565b905095945050505050565b600082825260208201905092915050565b82818337600083830152505050565b6000613ace8385613aa2565b9350613adb838584613ab3565b613ae483612f3b565b840190509392505050565b600060a082019050613b04600083018b6132f5565b613b11602083018a6132f5565b8181036040830152613b2481888a613a0b565b90508181036060830152613b39818688613a0b565b90508181036080830152613b4e818486613ac2565b90509998505050505050505050565b600081519050613b6c81612df9565b92915050565b600060208284031215613b8857613b87612cc5565b5b6000613b9684828501613b5d565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b6000613bd5601083612f00565b9150613be082613b9f565b602082019050919050565b60006020820190508181036000830152613c0481613bc8565b9050919050565b600081905092915050565b6000613c2182612ef5565b613c2b8185613c0b565b9350613c3b818560208601612f11565b80840191505092915050565b6000613c538284613c16565b915081905092915050565b6000613c6a8385613c0b565b9350613c77838584613ab3565b82840190509392505050565b6000613c90828486613c5e565b91508190509392505050565b7f417373657420616c726561647920657869737473000000000000000000000000600082015250565b6000613cd2601483612f00565b9150613cdd82613c9c565b602082019050919050565b60006020820190508181036000830152613d0181613cc5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613d6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d2d565b613d748683613d2d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613db1613dac613da784612d2d565b613d8c565b612d2d565b9050919050565b6000819050919050565b613dcb83613d96565b613ddf613dd782613db8565b848454613d3a565b825550505050565b600090565b613df4613de7565b613dff818484613dc2565b505050565b5b81811015613e2357613e18600082613dec565b600181019050613e05565b5050565b601f821115613e6857613e3981613d08565b613e4284613d1d565b81016020851015613e51578190505b613e65613e5d85613d1d565b830182613e04565b50505b505050565b600082821c905092915050565b6000613e8b60001984600802613e6d565b1980831691505092915050565b6000613ea48383613e7a565b9150826002028217905092915050565b613ebd82612ef5565b67ffffffffffffffff811115613ed657613ed5613499565b5b613ee08254613891565b613eeb828285613e27565b600060209050601f831160018114613f1e5760008415613f0c578287015190505b613f168582613e98565b865550613f7e565b601f198416613f2c86613d08565b60005b82811015613f5457848901518255600182019150602085019450602081019050613f2f565b86831015613f715784890151613f6d601f891682613e7a565b8355505b6001600288020188555050505b505050505050565b6000613f928385612f00565b9350613f9f838584613ab3565b613fa883612f3b565b840190509392505050565b60006040820190508181036000830152613fce818587613f86565b9050613fdd6020830184612e5e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000819050919050565b600061403961403461402f84614014565b613d8c565b612d2d565b9050919050565b6140498161401e565b82525050565b600060a0820190506140646000830188612da3565b6140716020830187614040565b61407e6040830186614040565b61408b6060830185614040565b6140986080830184612e5e565b9695505050505050565b7f4e6f742074686520636f6e7472616374206f776e657200000000000000000000600082015250565b60006140d8601683612f00565b91506140e3826140a2565b602082019050919050565b60006020820190508181036000830152614107816140cb565b9050919050565b600081905092915050565b50565b600061412960008361410e565b915061413482614119565b600082019050919050565b600061414a8261411c565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b600061418a601483612f00565b915061419582614154565b602082019050919050565b600060208201905081810360008301526141b98161417d565b9050919050565b7f417373657420646f6573206e6f74206578697374000000000000000000000000600082015250565b60006141f6601483612f00565b9150614201826141c0565b602082019050919050565b60006020820190508181036000830152614225816141e9565b9050919050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b6000614262601483612f00565b915061426d8261422c565b602082019050919050565b6000602082019050818103600083015261429181614255565b9050919050565b600060a0820190506142ad6000830188612da3565b6142ba6020830187612da3565b6142c76040830186612da3565b6142d46060830185612da3565b6142e16080830184612e5e565b9695505050505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614321601483612f00565b915061432c826142eb565b602082019050919050565b6000602082019050818103600083015261435081614314565b9050919050565b7f537570706c79206e6f7420616c6c6f7765642062656c6f77207072656d696e7460008201527f20616d6f756e7400000000000000000000000000000000000000000000000000602082015250565b60006143b3602783612f00565b91506143be82614357565b604082019050919050565b600060208201905081810360008301526143e2816143a6565b9050919050565b60006143f482612d2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144265761442561375d565b5b600182019050919050565b60006040820190506144466000830185612da3565b6144536020830184612da3565b9392505050565b600060a08201905061446f60008301896132f5565b61447c60208301886132f5565b6144896040830187612da3565b6144966060830186612da3565b81810360808301526144a9818486613ac2565b9050979650505050505050565b600081519050919050565b60006144cc826144b6565b6144d68185613aa2565b93506144e6818560208601612f11565b6144ef81612f3b565b840191505092915050565b600060a08201905061450f60008301886132f5565b61451c60208301876132f5565b6145296040830186612da3565b6145366060830185612da3565b818103608083015261454881846144c1565b9050969550505050505056fea2646970667358221220aa752076b339b35c447e2c6e791b1a1a185a7e5225bebf5d2cbc0b7eb311bbc764736f6c63430008120033