[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "boxContractAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "boxId", "type": "uint256" } ], "name": "openBox", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "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": "string", "name": "uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "setBoxContractAddress", "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" } ]
60806040523480156200001157600080fd5b506040518060400160405280601381526020017f53656564776f726c642056616e677561726473000000000000000000000000008152506040518060400160405280601381526020017f53656564776f726c642056616e6775617264730000000000000000000000000081525081600090816200008f9190620005f9565b508060019081620000a19190620005f9565b5050506000600660006101000a81548160ff0219169083151502179055506001600981905550620000eb6000801b620000df620000f160201b60201c565b620000f960201b60201c565b620006e0565b600033905090565b6200010b82826200010f60201b60201c565b5050565b6200012182826200014d60201b60201c565b6200014881600860008581526020019081526020016000206200023f60201b90919060201c565b505050565b6200015f82826200027760201b60201c565b6200023b5760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001e0620000f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200026f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620002e260201b60201c565b905092915050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000620002f683836200035c60201b60201c565b6200035157826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000356565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040157607f821691505b602082108103620004175762000416620003b9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000442565b6200048d868362000442565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004da620004d4620004ce84620004a5565b620004af565b620004a5565b9050919050565b6000819050919050565b620004f683620004b9565b6200050e6200050582620004e1565b8484546200044f565b825550505050565b600090565b6200052562000516565b62000532818484620004eb565b505050565b5b818110156200055a576200054e6000826200051b565b60018101905062000538565b5050565b601f821115620005a95762000573816200041d565b6200057e8462000432565b810160208510156200058e578190505b620005a66200059d8562000432565b83018262000537565b50505b505050565b600082821c905092915050565b6000620005ce60001984600802620005ae565b1980831691505092915050565b6000620005e98383620005bb565b9150826002028217905092915050565b62000604826200037f565b67ffffffffffffffff81111562000620576200061f6200038a565b5b6200062c8254620003e8565b620006398282856200055e565b600060209050601f8311600181146200067157600084156200065c578287015190505b620006688582620005db565b865550620006d8565b601f19841662000681866200041d565b60005b82811015620006ab5784890151825560018201915060208501945060208101905062000684565b86831015620006cb5784890151620006c7601f891682620005bb565b8355505b6001600288020188555050505b505050505050565b613d0e80620006f06000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806380dc4be0116100de578063a22cb46511610097578063ca15c87311610071578063ca15c873146104b7578063cce3d94a146104e7578063d547741f14610505578063e985e9c5146105215761018e565b8063a22cb4651461044f578063b88d4fde1461046b578063c87b56dd146104875761018e565b806380dc4be0146103675780639010d07c1461038357806391d14854146103b357806395d89b41146103e35780639fa2c21b14610401578063a217fddf146104315761018e565b80632f2ff15d1161014b57806355f804b31161012557806355f804b3146102cd5780635c975abb146102e95780636352211e1461030757806370a08231146103375761018e565b80632f2ff15d1461027957806336568abe1461029557806342842e0e146102b15761018e565b806301ffc9a71461019357806306fdde03146101c3578063081812fc146101e1578063095ea7b31461021157806323b872dd1461022d578063248a9ca314610249575b600080fd5b6101ad60048036038101906101a89190612660565b610551565b6040516101ba91906126a8565b60405180910390f35b6101cb610573565b6040516101d89190612753565b60405180910390f35b6101fb60048036038101906101f691906127ab565b610605565b6040516102089190612819565b60405180910390f35b61022b60048036038101906102269190612860565b61064b565b005b610247600480360381019061024291906128a0565b610762565b005b610263600480360381019061025e9190612929565b6107c2565b6040516102709190612965565b60405180910390f35b610293600480360381019061028e9190612980565b6107e2565b005b6102af60048036038101906102aa9190612980565b610803565b005b6102cb60048036038101906102c691906128a0565b610886565b005b6102e760048036038101906102e29190612a25565b6108a6565b005b6102f16108ca565b6040516102fe91906126a8565b60405180910390f35b610321600480360381019061031c91906127ab565b6108e1565b60405161032e9190612819565b60405180910390f35b610351600480360381019061034c9190612a72565b610967565b60405161035e9190612aae565b60405180910390f35b610381600480360381019061037c9190612a72565b610a1e565b005b61039d60048036038101906103989190612ac9565b610a70565b6040516103aa9190612819565b60405180910390f35b6103cd60048036038101906103c89190612980565b610a9f565b6040516103da91906126a8565b60405180910390f35b6103eb610b0a565b6040516103f89190612753565b60405180910390f35b61041b60048036038101906104169190612860565b610b9c565b6040516104289190612aae565b60405180910390f35b610439610c48565b6040516104469190612965565b60405180910390f35b61046960048036038101906104649190612b35565b610c4f565b005b61048560048036038101906104809190612ca5565b610c65565b005b6104a1600480360381019061049c91906127ab565b610cc7565b6040516104ae9190612753565b60405180910390f35b6104d160048036038101906104cc9190612929565b610d6f565b6040516104de9190612aae565b60405180910390f35b6104ef610d93565b6040516104fc9190612819565b60405180910390f35b61051f600480360381019061051a9190612980565b610db9565b005b61053b60048036038101906105369190612d28565b610dda565b60405161054891906126a8565b60405180910390f35b600061055c82610e6e565b8061056c575061056b82610f50565b5b9050919050565b60606000805461058290612d97565b80601f01602080910402602001604051908101604052809291908181526020018280546105ae90612d97565b80156105fb5780601f106105d0576101008083540402835291602001916105fb565b820191906000526020600020905b8154815290600101906020018083116105de57829003601f168201915b5050505050905090565b600061061082610fca565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610656826108e1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bd90612e3a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106e5611015565b73ffffffffffffffffffffffffffffffffffffffff16148061071457506107138161070e611015565b610dda565b5b610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90612ecc565b60405180910390fd5b61075d838361101d565b505050565b61077361076d611015565b826110d6565b6107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a990612f5e565b60405180910390fd5b6107bd83838361116b565b505050565b600060076000838152602001908152602001600020600101549050919050565b6107eb826107c2565b6107f481611464565b6107fe8383611478565b505050565b61080b611015565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90612ff0565b60405180910390fd5b61088282826114ac565b5050565b6108a183838360405180602001604052806000815250610c65565b505050565b6000801b6108b381611464565b8282600a91826108c49291906131c7565b50505050565b6000600660009054906101000a900460ff16905090565b6000806108ed836114e0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361095e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610955906132e3565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90613375565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610a2b81611464565b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000610a97826008600086815260200190815260200160002061151d90919063ffffffff16565b905092915050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054610b1990612d97565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4590612d97565b8015610b925780601f10610b6757610100808354040283529160200191610b92565b820191906000526020600020905b815481529060010190602001808311610b7557829003601f168201915b5050505050905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bdf611015565b73ffffffffffffffffffffffffffffffffffffffff1614610c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2c90613407565b60405180910390fd5b610c3f8383611537565b81905092915050565b6000801b81565b610c61610c5a611015565b8383611555565b5050565b610c76610c70611015565b836110d6565b610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac90612f5e565b60405180910390fd5b610cc1848484846116c1565b50505050565b6060610cd28261171d565b610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890613499565b60405180910390fd5b6000600a8054610d2090612d97565b905011610d3c5760405180602001604052806000815250610d68565b600a610d478361175e565b604051602001610d58929190613578565b6040516020818303038152906040525b9050919050565b6000610d8c6008600084815260200190815260200160002061182c565b9050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dc2826107c2565b610dcb81611464565b610dd583836114ac565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f3957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610f495750610f4882611841565b5b9050919050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fc35750610fc2826118ab565b5b9050919050565b610fd38161171d565b611012576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611009906132e3565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611090836108e1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806110e2836108e1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061112457506111238185610dda565b5b8061116257508373ffffffffffffffffffffffffffffffffffffffff1661114a84610605565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661118b826108e1565b73ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d89061360e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611250576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611247906136a0565b60405180910390fd5b61125d8383836001611925565b8273ffffffffffffffffffffffffffffffffffffffff1661127d826108e1565b73ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061360e565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461145f838383600161197f565b505050565b61147581611470611015565b611985565b50565b6114828282611a0a565b6114a78160086000858152602001908152602001600020611aeb90919063ffffffff16565b505050565b6114b68282611b1b565b6114db8160086000858152602001908152602001600020611bfd90919063ffffffff16565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061152c8360000183611c2d565b60001c905092915050565b611551828260405180602001604052806000815250611c58565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061370c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116b491906126a8565b60405180910390a3505050565b6116cc84848461116b565b6116d884848484611cb3565b611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e9061379e565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff1661173f836114e0565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60606000600161176d84611e3a565b01905060008167ffffffffffffffff81111561178c5761178b612b7a565b5b6040519080825280601f01601f1916602001820160405280156117be5781602001600182028036833780820191505090505b509050600082602001820190505b600115611821578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611815576118146137be565b5b049450600085036117cc575b819350505050919050565b600061183a82600001611f8d565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061191e575061191d82610e6e565b5b9050919050565b61193184848484611f9e565b6119396108ca565b15611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119709061385f565b60405180910390fd5b50505050565b50505050565b61198f8282610a9f565b611a065761199c81611fa4565b6119aa8360001c6020611fd1565b6040516020016119bb929190613917565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd9190612753565b60405180910390fd5b5050565b611a148282610a9f565b611ae75760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a8c611015565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611b13836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61220d565b905092915050565b611b258282610a9f565b15611bf95760006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611b9e611015565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611c25836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61227d565b905092915050565b6000826000018281548110611c4557611c44613951565b5b9060005260206000200154905092915050565b611c628383612391565b611c6f6000848484611cb3565b611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59061379e565b60405180910390fd5b505050565b6000611cd48473ffffffffffffffffffffffffffffffffffffffff166125ae565b15611e2d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611cfd611015565b8786866040518563ffffffff1660e01b8152600401611d1f94939291906139d5565b6020604051808303816000875af1925050508015611d5b57506040513d601f19601f82011682018060405250810190611d589190613a36565b60015b611ddd573d8060008114611d8b576040519150601f19603f3d011682016040523d82523d6000602084013e611d90565b606091505b506000815103611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc9061379e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611e32565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611e98577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611e8e57611e8d6137be565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611ed5576d04ee2d6d415b85acef81000000008381611ecb57611eca6137be565b5b0492506020810190505b662386f26fc100008310611f0457662386f26fc100008381611efa57611ef96137be565b5b0492506010810190505b6305f5e1008310611f2d576305f5e1008381611f2357611f226137be565b5b0492506008810190505b6127108310611f52576127108381611f4857611f476137be565b5b0492506004810190505b60648310611f755760648381611f6b57611f6a6137be565b5b0492506002810190505b600a8310611f84576001810190505b80915050919050565b600081600001805490509050919050565b50505050565b6060611fca8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611fd1565b9050919050565b606060006002836002611fe49190613a92565b611fee9190613ad4565b67ffffffffffffffff81111561200757612006612b7a565b5b6040519080825280601f01601f1916602001820160405280156120395781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061207157612070613951565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106120d5576120d4613951565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121159190613a92565b61211f9190613ad4565b90505b60018111156121bf577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061216157612160613951565b5b1a60f81b82828151811061217857612177613951565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806121b890613b08565b9050612122565b5060008414612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa90613b7d565b60405180910390fd5b8091505092915050565b600061221983836125d1565b612272578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612277565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146123855760006001826122af9190613b9d565b90506000600186600001805490506122c79190613b9d565b90508181146123365760008660000182815481106122e8576122e7613951565b5b906000526020600020015490508087600001848154811061230c5761230b613951565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061234a57612349613bd1565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061238b565b60009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613c4c565b60405180910390fd5b6124098161171d565b15612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090613cb8565b60405180910390fd5b612457600083836001611925565b6124608161171d565b156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613cb8565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125aa60008383600161197f565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61263d81612608565b811461264857600080fd5b50565b60008135905061265a81612634565b92915050565b600060208284031215612676576126756125fe565b5b60006126848482850161264b565b91505092915050565b60008115159050919050565b6126a28161268d565b82525050565b60006020820190506126bd6000830184612699565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126fd5780820151818401526020810190506126e2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612725826126c3565b61272f81856126ce565b935061273f8185602086016126df565b61274881612709565b840191505092915050565b6000602082019050818103600083015261276d818461271a565b905092915050565b6000819050919050565b61278881612775565b811461279357600080fd5b50565b6000813590506127a58161277f565b92915050565b6000602082840312156127c1576127c06125fe565b5b60006127cf84828501612796565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612803826127d8565b9050919050565b612813816127f8565b82525050565b600060208201905061282e600083018461280a565b92915050565b61283d816127f8565b811461284857600080fd5b50565b60008135905061285a81612834565b92915050565b60008060408385031215612877576128766125fe565b5b60006128858582860161284b565b925050602061289685828601612796565b9150509250929050565b6000806000606084860312156128b9576128b86125fe565b5b60006128c78682870161284b565b93505060206128d88682870161284b565b92505060406128e986828701612796565b9150509250925092565b6000819050919050565b612906816128f3565b811461291157600080fd5b50565b600081359050612923816128fd565b92915050565b60006020828403121561293f5761293e6125fe565b5b600061294d84828501612914565b91505092915050565b61295f816128f3565b82525050565b600060208201905061297a6000830184612956565b92915050565b60008060408385031215612997576129966125fe565b5b60006129a585828601612914565b92505060206129b68582860161284b565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126129e5576129e46129c0565b5b8235905067ffffffffffffffff811115612a0257612a016129c5565b5b602083019150836001820283011115612a1e57612a1d6129ca565b5b9250929050565b60008060208385031215612a3c57612a3b6125fe565b5b600083013567ffffffffffffffff811115612a5a57612a59612603565b5b612a66858286016129cf565b92509250509250929050565b600060208284031215612a8857612a876125fe565b5b6000612a968482850161284b565b91505092915050565b612aa881612775565b82525050565b6000602082019050612ac36000830184612a9f565b92915050565b60008060408385031215612ae057612adf6125fe565b5b6000612aee85828601612914565b9250506020612aff85828601612796565b9150509250929050565b612b128161268d565b8114612b1d57600080fd5b50565b600081359050612b2f81612b09565b92915050565b60008060408385031215612b4c57612b4b6125fe565b5b6000612b5a8582860161284b565b9250506020612b6b85828601612b20565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bb282612709565b810181811067ffffffffffffffff82111715612bd157612bd0612b7a565b5b80604052505050565b6000612be46125f4565b9050612bf08282612ba9565b919050565b600067ffffffffffffffff821115612c1057612c0f612b7a565b5b612c1982612709565b9050602081019050919050565b82818337600083830152505050565b6000612c48612c4384612bf5565b612bda565b905082815260208101848484011115612c6457612c63612b75565b5b612c6f848285612c26565b509392505050565b600082601f830112612c8c57612c8b6129c0565b5b8135612c9c848260208601612c35565b91505092915050565b60008060008060808587031215612cbf57612cbe6125fe565b5b6000612ccd8782880161284b565b9450506020612cde8782880161284b565b9350506040612cef87828801612796565b925050606085013567ffffffffffffffff811115612d1057612d0f612603565b5b612d1c87828801612c77565b91505092959194509250565b60008060408385031215612d3f57612d3e6125fe565b5b6000612d4d8582860161284b565b9250506020612d5e8582860161284b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612daf57607f821691505b602082108103612dc257612dc1612d68565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e246021836126ce565b9150612e2f82612dc8565b604082019050919050565b60006020820190508181036000830152612e5381612e17565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612eb6603d836126ce565b9150612ec182612e5a565b604082019050919050565b60006020820190508181036000830152612ee581612ea9565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612f48602d836126ce565b9150612f5382612eec565b604082019050919050565b60006020820190508181036000830152612f7781612f3b565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612fda602f836126ce565b9150612fe582612f7e565b604082019050919050565b6000602082019050818103600083015261300981612fcd565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261307d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613040565b6130878683613040565b95508019841693508086168417925050509392505050565b6000819050919050565b60006130c46130bf6130ba84612775565b61309f565b612775565b9050919050565b6000819050919050565b6130de836130a9565b6130f26130ea826130cb565b84845461304d565b825550505050565b600090565b6131076130fa565b6131128184846130d5565b505050565b5b818110156131365761312b6000826130ff565b600181019050613118565b5050565b601f82111561317b5761314c8161301b565b61315584613030565b81016020851015613164578190505b61317861317085613030565b830182613117565b50505b505050565b600082821c905092915050565b600061319e60001984600802613180565b1980831691505092915050565b60006131b7838361318d565b9150826002028217905092915050565b6131d18383613010565b67ffffffffffffffff8111156131ea576131e9612b7a565b5b6131f48254612d97565b6131ff82828561313a565b6000601f83116001811461322e576000841561321c578287013590505b61322685826131ab565b86555061328e565b601f19841661323c8661301b565b60005b828110156132645784890135825560018201915060208501945060208101905061323f565b86831015613281578489013561327d601f89168261318d565b8355505b6001600288020188555050505b50505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006132cd6018836126ce565b91506132d882613297565b602082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061335f6029836126ce565b915061336a82613303565b604082019050919050565b6000602082019050818103600083015261338e81613352565b9050919050565b7f4f6e6c7920626f7820636f6e747261637420616c6c6f77656420746f2063616c60008201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b60006133f16021836126ce565b91506133fc82613395565b604082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613483602f836126ce565b915061348e82613427565b604082019050919050565b600060208201905081810360008301526134b281613476565b9050919050565b600081905092915050565b600081546134d181612d97565b6134db81866134b9565b945060018216600081146134f6576001811461350b5761353e565b60ff198316865281151582028601935061353e565b6135148561301b565b60005b8381101561353657815481890152600182019150602081019050613517565b838801955050505b50505092915050565b6000613552826126c3565b61355c81856134b9565b935061356c8185602086016126df565b80840191505092915050565b600061358482856134c4565b91506135908284613547565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006135f86025836126ce565b91506136038261359c565b604082019050919050565b60006020820190508181036000830152613627816135eb565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061368a6024836126ce565b91506136958261362e565b604082019050919050565b600060208201905081810360008301526136b98161367d565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006136f66019836126ce565b9150613701826136c0565b602082019050919050565b60006020820190508181036000830152613725816136e9565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006137886032836126ce565b91506137938261372c565b604082019050919050565b600060208201905081810360008301526137b78161377b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4552433732315061757361626c653a20746f6b656e207472616e73666572207760008201527f68696c6520706175736564000000000000000000000000000000000000000000602082015250565b6000613849602b836126ce565b9150613854826137ed565b604082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006138b56017836134b9565b91506138c08261387f565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006139016011836134b9565b915061390c826138cb565b601182019050919050565b6000613922826138a8565b915061392e8285613547565b9150613939826138f4565b91506139458284613547565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60006139a782613980565b6139b1818561398b565b93506139c18185602086016126df565b6139ca81612709565b840191505092915050565b60006080820190506139ea600083018761280a565b6139f7602083018661280a565b613a046040830185612a9f565b8181036060830152613a16818461399c565b905095945050505050565b600081519050613a3081612634565b92915050565b600060208284031215613a4c57613a4b6125fe565b5b6000613a5a84828501613a21565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a9d82612775565b9150613aa883612775565b9250828202613ab681612775565b91508282048414831517613acd57613acc613a63565b5b5092915050565b6000613adf82612775565b9150613aea83612775565b9250828201905080821115613b0257613b01613a63565b5b92915050565b6000613b1382612775565b915060008203613b2657613b25613a63565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613b676020836126ce565b9150613b7282613b31565b602082019050919050565b60006020820190508181036000830152613b9681613b5a565b9050919050565b6000613ba882612775565b9150613bb383612775565b9250828203905081811115613bcb57613bca613a63565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c366020836126ce565b9150613c4182613c00565b602082019050919050565b60006020820190508181036000830152613c6581613c29565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613ca2601c836126ce565b9150613cad82613c6c565b602082019050919050565b60006020820190508181036000830152613cd181613c95565b905091905056fea2646970667358221220ae6021e44569bb0e175ddd094a016b9b9813fe61f7609072bbd8f6229f9d794964736f6c63430008130033