diff --git a/build/contracts/NFTSbt.json b/build/contracts/NFTSbt.json index 7eb2be7..4689c84 100644 --- a/build/contracts/NFTSbt.json +++ b/build/contracts/NFTSbt.json @@ -730,9 +730,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_supplyLimt\",\"type\":\"uint256\"}],\"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\":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\"},{\"inputs\":[],\"name\":\"BURN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"removeBurnRole(address)\":{\"details\":\"Remove burn role to address\"},\"removeMintRole(address)\":{\"details\":\"Remove mint role to address\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBurnRole(address)\":{\"details\":\"Grant burn role to address\"},\"setMintRole(address)\":{\"details\":\"Grant mint role to address\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"one type nft has same tokenURI\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/NFTSbt.sol\":\"NFTSbt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/tokens/erc721/NFTSbt.sol\":{\"keccak256\":\"0xe0ee62a3d85e580d549c88b38f46c47f3d9a21fc579eea9bfd19cc781cee6fe5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9c057afdf7038ca980b19e5029f49599a49976bd40b2cc1d998cb69eb635b54\",\"dweb:/ipfs/QmP4EsohMBRDR8b7A2Em4BYwU1gkDEGULDhpPMjfDsf9fJ\"]}},\"version\":1}", - "bytecode": "0x60a0604052604051806060016040528060278152602001620047fd60279139600b9080519060200190620000359291906200038e565b503480156200004357600080fd5b506040516200482438038062004824833981810160405281019062000069919062000616565b82828160019080519060200190620000839291906200038e565b5080600290805190602001906200009c9291906200038e565b5050508060808181525050620000dc7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa226000801b6200019360201b60201c565b620001117f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66000801b6200019360201b60201c565b620001266000801b33620001f660201b60201c565b620001587f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001f660201b60201c565b6200018a7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2233620001f660201b60201c565b50505062000715565b6000620001a6836200020c60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b6200020882826200022b60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200023d82826200031c60201b60201c565b6200031857600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002bd6200038660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200039c90620006df565b90600052602060002090601f016020900481019282620003c057600085556200040c565b82601f10620003db57805160ff19168380011785556200040c565b828001600101855582156200040c579182015b828111156200040b578251825591602001919060010190620003ee565b5b5090506200041b91906200041f565b5090565b5b808211156200043a57600081600090555060010162000420565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004a7826200045c565b810181811067ffffffffffffffff82111715620004c957620004c86200046d565b5b80604052505050565b6000620004de6200043e565b9050620004ec82826200049c565b919050565b600067ffffffffffffffff8211156200050f576200050e6200046d565b5b6200051a826200045c565b9050602081019050919050565b60005b83811015620005475780820151818401526020810190506200052a565b8381111562000557576000848401525b50505050565b6000620005746200056e84620004f1565b620004d2565b90508281526020810184848401111562000593576200059262000457565b5b620005a084828562000527565b509392505050565b600082601f830112620005c057620005bf62000452565b5b8151620005d28482602086016200055d565b91505092915050565b6000819050919050565b620005f081620005db565b8114620005fc57600080fd5b50565b6000815190506200061081620005e5565b92915050565b60008060006060848603121562000632576200063162000448565b5b600084015167ffffffffffffffff8111156200065357620006526200044d565b5b6200066186828701620005a8565b935050602084015167ffffffffffffffff8111156200068557620006846200044d565b5b6200069386828701620005a8565b9250506040620006a686828701620005ff565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006f857607f821691505b602082108114156200070f576200070e620006b0565b5b50919050565b6080516140be6200073f600039600081816108af01528181610da20152610dc901526140be6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612b00565b61065f565b60405161021c9190612b48565b60405180910390f35b61022d610671565b60405161023a9190612bfc565b60405180910390f35b61025d60048036038101906102589190612c54565b610703565b60405161026a9190612cc2565b60405180910390f35b61028d60048036038101906102889190612d09565b610788565b005b6102976108a0565b6040516102a49190612d58565b60405180910390f35b6102b56108ad565b6040516102c29190612d58565b60405180910390f35b6102e560048036038101906102e09190612d73565b6108d1565b005b61030160048036038101906102fc9190612da0565b6108fe565b005b61031d60048036038101906103189190612e29565b61095e565b60405161032a9190612e65565b60405180910390f35b61034d60048036038101906103489190612e80565b61097d565b005b61036960048036038101906103649190612d09565b6109a6565b6040516103769190612d58565b60405180910390f35b61039960048036038101906103949190612d73565b610a4b565b005b6103b560048036038101906103b09190612e80565b610a78565b005b6103d160048036038101906103cc9190612da0565b610afb565b005b6103ed60048036038101906103e89190612c54565b610b1b565b005b61040960048036038101906104049190612c54565b610baa565b6040516104169190612d58565b60405180910390f35b61043960048036038101906104349190612d73565b610c1b565b005b61045560048036038101906104509190612c54565b610c48565b6040516104629190612cc2565b60405180910390f35b61048560048036038101906104809190612d73565b610cfa565b6040516104929190612d58565b60405180910390f35b6104b560048036038101906104b09190612d73565b610e6a565b6040516104c29190612d58565b60405180910390f35b6104e560048036038101906104e09190612e80565b610f22565b6040516104f29190612b48565b60405180910390f35b61051560048036038101906105109190612f25565b610f8c565b005b61051f610fb8565b60405161052c9190612bfc565b60405180910390f35b61054f600480360381019061054a9190612d73565b61104a565b005b610559611077565b6040516105669190612e65565b60405180910390f35b61058960048036038101906105849190612f9e565b61107e565b005b6105a560048036038101906105a0919061310e565b611094565b005b6105af6110f6565b6040516105bc9190612e65565b60405180910390f35b6105df60048036038101906105da9190612c54565b61111a565b6040516105ec9190612bfc565b60405180910390f35b6105fd611150565b60405161060a9190612e65565b60405180910390f35b61062d60048036038101906106289190612e80565b611174565b005b61064960048036038101906106449190613191565b61119d565b6040516106569190612b48565b60405180910390f35b600061066a82611231565b9050919050565b60606001805461068090613200565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90613200565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e826112ab565b61074d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610744906132a4565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611317565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611317565b61119d565b5b610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906133c8565b60405180910390fd5b61089b838361131f565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611174565b50565b61090f610909611317565b826113d8565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061345a565b60405180910390fd5b6109598383836114b6565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611317565b61171d565b6109a183836117ba565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906134ec565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae49061357e565b60405180910390fd5b610af7828261189a565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611317565b61171d565b610b5e610b58611317565b836113d8565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906135ea565b60405180910390fd5b610ba68261197b565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061367c565b60405180910390fd5b60098281548110610c0957610c0861369c565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061373d565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611317565b61171d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906137a9565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906137f8565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e349061389a565b60405180910390fd5b5b6000610e4a600c611a98565b9050610e56600c611aa6565b610e608482611abc565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed29061392c565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611317565b61171d565b8282600b9190610fb29291906129f1565b50505050565b606060028054610fc790613200565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff390613200565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2282611174565b50565b6000801b81565b611090611089611317565b8383611ada565b5050565b6110a561109f611317565b836113d8565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061345a565b60405180910390fd5b6110f084848484611c47565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606000611126611ca3565b905060008151116111465760405180602001604052806000815250611148565b805b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61117d8261095e565b61118e81611189611317565b61171d565b611198838361189a565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112a457506112a382611d35565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661139283610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113e3826112ab565b611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906139be565b60405180910390fd5b600061142d83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061149c57508373ffffffffffffffffffffffffffffffffffffffff1661148484610703565b73ffffffffffffffffffffffffffffffffffffffff16145b806114ad57506114ac818561119d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166114d682610c48565b73ffffffffffffffffffffffffffffffffffffffff161461152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152390613a50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613ae2565b60405180910390fd5b6115a7838383611e17565b6115b260008261131f565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116029190613b02565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165991906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611718838383611ecd565b505050565b6117278282610f22565b6117b65761174c8173ffffffffffffffffffffffffffffffffffffffff166014611ed2565b61175a8360001c6020611ed2565b60405160200161176b929190613c0a565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ad9190612bfc565b60405180910390fd5b5050565b6117c48282610f22565b61189657600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061183b611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118a48282610f22565b1561197757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061191c611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061198682610c48565b905061199481600084611e17565b61199f60008361131f565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ef9190613b02565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9481600084611ecd565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611ad682826040518060200160405280600081525061210e565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613c90565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c3a9190612b48565b60405180910390a3505050565b611c528484846114b6565b611c5e84848484612169565b611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613d22565b60405180910390fd5b50505050565b6060600b8054611cb290613200565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90613200565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e0057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e105750611e0f826122f1565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e7e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613d8e565b60405180910390fd5b611ec883838361236b565b505050565b505050565b606060006002836002611ee59190613dae565b611eef91906137f8565b67ffffffffffffffff811115611f0857611f07612fe3565b5b6040519080825280601f01601f191660200182016040528015611f3a5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611f7257611f7161369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611fd657611fd561369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026120169190613dae565b61202091906137f8565b90505b60018111156120c0577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106120625761206161369c565b5b1a60f81b8282815181106120795761207861369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806120b990613e08565b9050612023565b5060008414612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb90613e7e565b60405180910390fd5b8091505092915050565b612118838361247f565b6121256000848484612169565b612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613d22565b60405180910390fd5b505050565b600061218a8473ffffffffffffffffffffffffffffffffffffffff16612659565b156122e4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121b3611317565b8786866040518563ffffffff1660e01b81526004016121d59493929190613ef3565b6020604051808303816000875af192505050801561221157506040513d601f19601f8201168201806040525081019061220e9190613f54565b60015b612294573d8060008114612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5060008151141561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613d22565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122e9565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061236457506123638261267c565b5b9050919050565b6123768383836126e6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123b9576123b4816126eb565b6123f8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123f7576123f68382612734565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b57612436816128a1565b61247a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612479576124788282612972565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e690613fcd565b60405180910390fd5b6124f8816112ab565b15612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90614039565b60405180910390fd5b61254460008383611e17565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259491906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265560008383611ecd565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161274184610e6a565b61274b9190613b02565b9050600060086000848152602001908152602001600020549050818114612830576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506128b59190613b02565b90506000600a60008481526020019081526020016000205490506000600983815481106128e5576128e461369c565b5b9060005260206000200154905080600983815481106129075761290661369c565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061295657612955614059565b5b6001900381819060005260206000200160009055905550505050565b600061297d83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b8280546129fd90613200565b90600052602060002090601f016020900481019282612a1f5760008555612a66565b82601f10612a3857803560ff1916838001178555612a66565b82800160010185558215612a66579182015b82811115612a65578235825591602001919060010190612a4a565b5b509050612a739190612a77565b5090565b5b80821115612a90576000816000905550600101612a78565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612add81612aa8565b8114612ae857600080fd5b50565b600081359050612afa81612ad4565b92915050565b600060208284031215612b1657612b15612a9e565b5b6000612b2484828501612aeb565b91505092915050565b60008115159050919050565b612b4281612b2d565b82525050565b6000602082019050612b5d6000830184612b39565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b9d578082015181840152602081019050612b82565b83811115612bac576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bce82612b63565b612bd88185612b6e565b9350612be8818560208601612b7f565b612bf181612bb2565b840191505092915050565b60006020820190508181036000830152612c168184612bc3565b905092915050565b6000819050919050565b612c3181612c1e565b8114612c3c57600080fd5b50565b600081359050612c4e81612c28565b92915050565b600060208284031215612c6a57612c69612a9e565b5b6000612c7884828501612c3f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cac82612c81565b9050919050565b612cbc81612ca1565b82525050565b6000602082019050612cd76000830184612cb3565b92915050565b612ce681612ca1565b8114612cf157600080fd5b50565b600081359050612d0381612cdd565b92915050565b60008060408385031215612d2057612d1f612a9e565b5b6000612d2e85828601612cf4565b9250506020612d3f85828601612c3f565b9150509250929050565b612d5281612c1e565b82525050565b6000602082019050612d6d6000830184612d49565b92915050565b600060208284031215612d8957612d88612a9e565b5b6000612d9784828501612cf4565b91505092915050565b600080600060608486031215612db957612db8612a9e565b5b6000612dc786828701612cf4565b9350506020612dd886828701612cf4565b9250506040612de986828701612c3f565b9150509250925092565b6000819050919050565b612e0681612df3565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b600060208284031215612e3f57612e3e612a9e565b5b6000612e4d84828501612e14565b91505092915050565b612e5f81612df3565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b60008060408385031215612e9757612e96612a9e565b5b6000612ea585828601612e14565b9250506020612eb685828601612cf4565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ee557612ee4612ec0565b5b8235905067ffffffffffffffff811115612f0257612f01612ec5565b5b602083019150836001820283011115612f1e57612f1d612eca565b5b9250929050565b60008060208385031215612f3c57612f3b612a9e565b5b600083013567ffffffffffffffff811115612f5a57612f59612aa3565b5b612f6685828601612ecf565b92509250509250929050565b612f7b81612b2d565b8114612f8657600080fd5b50565b600081359050612f9881612f72565b92915050565b60008060408385031215612fb557612fb4612a9e565b5b6000612fc385828601612cf4565b9250506020612fd485828601612f89565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61301b82612bb2565b810181811067ffffffffffffffff8211171561303a57613039612fe3565b5b80604052505050565b600061304d612a94565b90506130598282613012565b919050565b600067ffffffffffffffff82111561307957613078612fe3565b5b61308282612bb2565b9050602081019050919050565b82818337600083830152505050565b60006130b16130ac8461305e565b613043565b9050828152602081018484840111156130cd576130cc612fde565b5b6130d884828561308f565b509392505050565b600082601f8301126130f5576130f4612ec0565b5b813561310584826020860161309e565b91505092915050565b6000806000806080858703121561312857613127612a9e565b5b600061313687828801612cf4565b945050602061314787828801612cf4565b935050604061315887828801612c3f565b925050606085013567ffffffffffffffff81111561317957613178612aa3565b5b613185878288016130e0565b91505092959194509250565b600080604083850312156131a8576131a7612a9e565b5b60006131b685828601612cf4565b92505060206131c785828601612cf4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061321857607f821691505b6020821081141561322c5761322b6131d1565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061328e602c83612b6e565b915061329982613232565b604082019050919050565b600060208201905081810360008301526132bd81613281565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613320602183612b6e565b915061332b826132c4565b604082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006133b2603883612b6e565b91506133bd82613356565b604082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613444603183612b6e565b915061344f826133e8565b604082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006134d6602b83612b6e565b91506134e18261347a565b604082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613568602f83612b6e565b91506135738261350c565b604082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006135d4602083612b6e565b91506135df8261359e565b602082019050919050565b60006020820190508181036000830152613603816135c7565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613666602c83612b6e565b91506136718261360a565b604082019050919050565b6000602082019050818103600083015261369581613659565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613727602983612b6e565b9150613732826136cb565b604082019050919050565b600060208201905081810360008301526137568161371a565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613793601b83612b6e565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061380382612c1e565b915061380e83612c1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613843576138426137c9565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613884601783612b6e565b915061388f8261384e565b602082019050919050565b600060208201905081810360008301526138b381613877565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613916602a83612b6e565b9150613921826138ba565b604082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006139a8602c83612b6e565b91506139b38261394c565b604082019050919050565b600060208201905081810360008301526139d78161399b565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613a3a602583612b6e565b9150613a45826139de565b604082019050919050565b60006020820190508181036000830152613a6981613a2d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613acc602483612b6e565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b6000613b0d82612c1e565b9150613b1883612c1e565b925082821015613b2b57613b2a6137c9565b5b828203905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613b77601783613b36565b9150613b8282613b41565b601782019050919050565b6000613b9882612b63565b613ba28185613b36565b9350613bb2818560208601612b7f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613bf4601183613b36565b9150613bff82613bbe565b601182019050919050565b6000613c1582613b6a565b9150613c218285613b8d565b9150613c2c82613be7565b9150613c388284613b8d565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c7a601983612b6e565b9150613c8582613c44565b602082019050919050565b60006020820190508181036000830152613ca981613c6d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d0c603283612b6e565b9150613d1782613cb0565b604082019050919050565b60006020820190508181036000830152613d3b81613cff565b9050919050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b6000613d78601683612b6e565b9150613d8382613d42565b602082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b6000613db982612c1e565b9150613dc483612c1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dfd57613dfc6137c9565b5b828202905092915050565b6000613e1382612c1e565b91506000821415613e2757613e266137c9565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613e68602083612b6e565b9150613e7382613e32565b602082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ec582613e9e565b613ecf8185613ea9565b9350613edf818560208601612b7f565b613ee881612bb2565b840191505092915050565b6000608082019050613f086000830187612cb3565b613f156020830186612cb3565b613f226040830185612d49565b8181036060830152613f348184613eba565b905095945050505050565b600081519050613f4e81612ad4565b92915050565b600060208284031215613f6a57613f69612a9e565b5b6000613f7884828501613f3f565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613fb7602083612b6e565b9150613fc282613f81565b602082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614023601c83612b6e565b915061402e82613fed565b602082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207d38aed6b65919091cfaa18ee416ec163a1e2f5fc99f5a4a95ec552cfe62592764736f6c634300080a003368747470733a2f2f6d61726b65742e636562672e67616d65732f6170692f6e66742f696e666f2f", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612b00565b61065f565b60405161021c9190612b48565b60405180910390f35b61022d610671565b60405161023a9190612bfc565b60405180910390f35b61025d60048036038101906102589190612c54565b610703565b60405161026a9190612cc2565b60405180910390f35b61028d60048036038101906102889190612d09565b610788565b005b6102976108a0565b6040516102a49190612d58565b60405180910390f35b6102b56108ad565b6040516102c29190612d58565b60405180910390f35b6102e560048036038101906102e09190612d73565b6108d1565b005b61030160048036038101906102fc9190612da0565b6108fe565b005b61031d60048036038101906103189190612e29565b61095e565b60405161032a9190612e65565b60405180910390f35b61034d60048036038101906103489190612e80565b61097d565b005b61036960048036038101906103649190612d09565b6109a6565b6040516103769190612d58565b60405180910390f35b61039960048036038101906103949190612d73565b610a4b565b005b6103b560048036038101906103b09190612e80565b610a78565b005b6103d160048036038101906103cc9190612da0565b610afb565b005b6103ed60048036038101906103e89190612c54565b610b1b565b005b61040960048036038101906104049190612c54565b610baa565b6040516104169190612d58565b60405180910390f35b61043960048036038101906104349190612d73565b610c1b565b005b61045560048036038101906104509190612c54565b610c48565b6040516104629190612cc2565b60405180910390f35b61048560048036038101906104809190612d73565b610cfa565b6040516104929190612d58565b60405180910390f35b6104b560048036038101906104b09190612d73565b610e6a565b6040516104c29190612d58565b60405180910390f35b6104e560048036038101906104e09190612e80565b610f22565b6040516104f29190612b48565b60405180910390f35b61051560048036038101906105109190612f25565b610f8c565b005b61051f610fb8565b60405161052c9190612bfc565b60405180910390f35b61054f600480360381019061054a9190612d73565b61104a565b005b610559611077565b6040516105669190612e65565b60405180910390f35b61058960048036038101906105849190612f9e565b61107e565b005b6105a560048036038101906105a0919061310e565b611094565b005b6105af6110f6565b6040516105bc9190612e65565b60405180910390f35b6105df60048036038101906105da9190612c54565b61111a565b6040516105ec9190612bfc565b60405180910390f35b6105fd611150565b60405161060a9190612e65565b60405180910390f35b61062d60048036038101906106289190612e80565b611174565b005b61064960048036038101906106449190613191565b61119d565b6040516106569190612b48565b60405180910390f35b600061066a82611231565b9050919050565b60606001805461068090613200565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90613200565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e826112ab565b61074d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610744906132a4565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611317565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611317565b61119d565b5b610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906133c8565b60405180910390fd5b61089b838361131f565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611174565b50565b61090f610909611317565b826113d8565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061345a565b60405180910390fd5b6109598383836114b6565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611317565b61171d565b6109a183836117ba565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906134ec565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae49061357e565b60405180910390fd5b610af7828261189a565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611317565b61171d565b610b5e610b58611317565b836113d8565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906135ea565b60405180910390fd5b610ba68261197b565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061367c565b60405180910390fd5b60098281548110610c0957610c0861369c565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061373d565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611317565b61171d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906137a9565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906137f8565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e349061389a565b60405180910390fd5b5b6000610e4a600c611a98565b9050610e56600c611aa6565b610e608482611abc565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed29061392c565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611317565b61171d565b8282600b9190610fb29291906129f1565b50505050565b606060028054610fc790613200565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff390613200565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2282611174565b50565b6000801b81565b611090611089611317565b8383611ada565b5050565b6110a561109f611317565b836113d8565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061345a565b60405180910390fd5b6110f084848484611c47565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606000611126611ca3565b905060008151116111465760405180602001604052806000815250611148565b805b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61117d8261095e565b61118e81611189611317565b61171d565b611198838361189a565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112a457506112a382611d35565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661139283610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113e3826112ab565b611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906139be565b60405180910390fd5b600061142d83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061149c57508373ffffffffffffffffffffffffffffffffffffffff1661148484610703565b73ffffffffffffffffffffffffffffffffffffffff16145b806114ad57506114ac818561119d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166114d682610c48565b73ffffffffffffffffffffffffffffffffffffffff161461152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152390613a50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613ae2565b60405180910390fd5b6115a7838383611e17565b6115b260008261131f565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116029190613b02565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165991906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611718838383611ecd565b505050565b6117278282610f22565b6117b65761174c8173ffffffffffffffffffffffffffffffffffffffff166014611ed2565b61175a8360001c6020611ed2565b60405160200161176b929190613c0a565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ad9190612bfc565b60405180910390fd5b5050565b6117c48282610f22565b61189657600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061183b611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118a48282610f22565b1561197757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061191c611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061198682610c48565b905061199481600084611e17565b61199f60008361131f565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ef9190613b02565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9481600084611ecd565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611ad682826040518060200160405280600081525061210e565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613c90565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c3a9190612b48565b60405180910390a3505050565b611c528484846114b6565b611c5e84848484612169565b611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613d22565b60405180910390fd5b50505050565b6060600b8054611cb290613200565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90613200565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e0057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e105750611e0f826122f1565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e7e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613d8e565b60405180910390fd5b611ec883838361236b565b505050565b505050565b606060006002836002611ee59190613dae565b611eef91906137f8565b67ffffffffffffffff811115611f0857611f07612fe3565b5b6040519080825280601f01601f191660200182016040528015611f3a5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611f7257611f7161369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611fd657611fd561369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026120169190613dae565b61202091906137f8565b90505b60018111156120c0577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106120625761206161369c565b5b1a60f81b8282815181106120795761207861369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806120b990613e08565b9050612023565b5060008414612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb90613e7e565b60405180910390fd5b8091505092915050565b612118838361247f565b6121256000848484612169565b612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613d22565b60405180910390fd5b505050565b600061218a8473ffffffffffffffffffffffffffffffffffffffff16612659565b156122e4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121b3611317565b8786866040518563ffffffff1660e01b81526004016121d59493929190613ef3565b6020604051808303816000875af192505050801561221157506040513d601f19601f8201168201806040525081019061220e9190613f54565b60015b612294573d8060008114612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5060008151141561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613d22565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122e9565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061236457506123638261267c565b5b9050919050565b6123768383836126e6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123b9576123b4816126eb565b6123f8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123f7576123f68382612734565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b57612436816128a1565b61247a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612479576124788282612972565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e690613fcd565b60405180910390fd5b6124f8816112ab565b15612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90614039565b60405180910390fd5b61254460008383611e17565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259491906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265560008383611ecd565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161274184610e6a565b61274b9190613b02565b9050600060086000848152602001908152602001600020549050818114612830576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506128b59190613b02565b90506000600a60008481526020019081526020016000205490506000600983815481106128e5576128e461369c565b5b9060005260206000200154905080600983815481106129075761290661369c565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061295657612955614059565b5b6001900381819060005260206000200160009055905550505050565b600061297d83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b8280546129fd90613200565b90600052602060002090601f016020900481019282612a1f5760008555612a66565b82601f10612a3857803560ff1916838001178555612a66565b82800160010185558215612a66579182015b82811115612a65578235825591602001919060010190612a4a565b5b509050612a739190612a77565b5090565b5b80821115612a90576000816000905550600101612a78565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612add81612aa8565b8114612ae857600080fd5b50565b600081359050612afa81612ad4565b92915050565b600060208284031215612b1657612b15612a9e565b5b6000612b2484828501612aeb565b91505092915050565b60008115159050919050565b612b4281612b2d565b82525050565b6000602082019050612b5d6000830184612b39565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b9d578082015181840152602081019050612b82565b83811115612bac576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bce82612b63565b612bd88185612b6e565b9350612be8818560208601612b7f565b612bf181612bb2565b840191505092915050565b60006020820190508181036000830152612c168184612bc3565b905092915050565b6000819050919050565b612c3181612c1e565b8114612c3c57600080fd5b50565b600081359050612c4e81612c28565b92915050565b600060208284031215612c6a57612c69612a9e565b5b6000612c7884828501612c3f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cac82612c81565b9050919050565b612cbc81612ca1565b82525050565b6000602082019050612cd76000830184612cb3565b92915050565b612ce681612ca1565b8114612cf157600080fd5b50565b600081359050612d0381612cdd565b92915050565b60008060408385031215612d2057612d1f612a9e565b5b6000612d2e85828601612cf4565b9250506020612d3f85828601612c3f565b9150509250929050565b612d5281612c1e565b82525050565b6000602082019050612d6d6000830184612d49565b92915050565b600060208284031215612d8957612d88612a9e565b5b6000612d9784828501612cf4565b91505092915050565b600080600060608486031215612db957612db8612a9e565b5b6000612dc786828701612cf4565b9350506020612dd886828701612cf4565b9250506040612de986828701612c3f565b9150509250925092565b6000819050919050565b612e0681612df3565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b600060208284031215612e3f57612e3e612a9e565b5b6000612e4d84828501612e14565b91505092915050565b612e5f81612df3565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b60008060408385031215612e9757612e96612a9e565b5b6000612ea585828601612e14565b9250506020612eb685828601612cf4565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ee557612ee4612ec0565b5b8235905067ffffffffffffffff811115612f0257612f01612ec5565b5b602083019150836001820283011115612f1e57612f1d612eca565b5b9250929050565b60008060208385031215612f3c57612f3b612a9e565b5b600083013567ffffffffffffffff811115612f5a57612f59612aa3565b5b612f6685828601612ecf565b92509250509250929050565b612f7b81612b2d565b8114612f8657600080fd5b50565b600081359050612f9881612f72565b92915050565b60008060408385031215612fb557612fb4612a9e565b5b6000612fc385828601612cf4565b9250506020612fd485828601612f89565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61301b82612bb2565b810181811067ffffffffffffffff8211171561303a57613039612fe3565b5b80604052505050565b600061304d612a94565b90506130598282613012565b919050565b600067ffffffffffffffff82111561307957613078612fe3565b5b61308282612bb2565b9050602081019050919050565b82818337600083830152505050565b60006130b16130ac8461305e565b613043565b9050828152602081018484840111156130cd576130cc612fde565b5b6130d884828561308f565b509392505050565b600082601f8301126130f5576130f4612ec0565b5b813561310584826020860161309e565b91505092915050565b6000806000806080858703121561312857613127612a9e565b5b600061313687828801612cf4565b945050602061314787828801612cf4565b935050604061315887828801612c3f565b925050606085013567ffffffffffffffff81111561317957613178612aa3565b5b613185878288016130e0565b91505092959194509250565b600080604083850312156131a8576131a7612a9e565b5b60006131b685828601612cf4565b92505060206131c785828601612cf4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061321857607f821691505b6020821081141561322c5761322b6131d1565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061328e602c83612b6e565b915061329982613232565b604082019050919050565b600060208201905081810360008301526132bd81613281565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613320602183612b6e565b915061332b826132c4565b604082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006133b2603883612b6e565b91506133bd82613356565b604082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613444603183612b6e565b915061344f826133e8565b604082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006134d6602b83612b6e565b91506134e18261347a565b604082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613568602f83612b6e565b91506135738261350c565b604082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006135d4602083612b6e565b91506135df8261359e565b602082019050919050565b60006020820190508181036000830152613603816135c7565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613666602c83612b6e565b91506136718261360a565b604082019050919050565b6000602082019050818103600083015261369581613659565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613727602983612b6e565b9150613732826136cb565b604082019050919050565b600060208201905081810360008301526137568161371a565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613793601b83612b6e565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061380382612c1e565b915061380e83612c1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613843576138426137c9565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613884601783612b6e565b915061388f8261384e565b602082019050919050565b600060208201905081810360008301526138b381613877565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613916602a83612b6e565b9150613921826138ba565b604082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006139a8602c83612b6e565b91506139b38261394c565b604082019050919050565b600060208201905081810360008301526139d78161399b565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613a3a602583612b6e565b9150613a45826139de565b604082019050919050565b60006020820190508181036000830152613a6981613a2d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613acc602483612b6e565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b6000613b0d82612c1e565b9150613b1883612c1e565b925082821015613b2b57613b2a6137c9565b5b828203905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613b77601783613b36565b9150613b8282613b41565b601782019050919050565b6000613b9882612b63565b613ba28185613b36565b9350613bb2818560208601612b7f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613bf4601183613b36565b9150613bff82613bbe565b601182019050919050565b6000613c1582613b6a565b9150613c218285613b8d565b9150613c2c82613be7565b9150613c388284613b8d565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c7a601983612b6e565b9150613c8582613c44565b602082019050919050565b60006020820190508181036000830152613ca981613c6d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d0c603283612b6e565b9150613d1782613cb0565b604082019050919050565b60006020820190508181036000830152613d3b81613cff565b9050919050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b6000613d78601683612b6e565b9150613d8382613d42565b602082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b6000613db982612c1e565b9150613dc483612c1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dfd57613dfc6137c9565b5b828202905092915050565b6000613e1382612c1e565b91506000821415613e2757613e266137c9565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613e68602083612b6e565b9150613e7382613e32565b602082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ec582613e9e565b613ecf8185613ea9565b9350613edf818560208601612b7f565b613ee881612bb2565b840191505092915050565b6000608082019050613f086000830187612cb3565b613f156020830186612cb3565b613f226040830185612d49565b8181036060830152613f348184613eba565b905095945050505050565b600081519050613f4e81612ad4565b92915050565b600060208284031215613f6a57613f69612a9e565b5b6000613f7884828501613f3f565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613fb7602083612b6e565b9150613fc282613f81565b602082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614023601c83612b6e565b915061402e82613fed565b602082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207d38aed6b65919091cfaa18ee416ec163a1e2f5fc99f5a4a95ec552cfe62592764736f6c634300080a0033", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_supplyLimt\",\"type\":\"uint256\"}],\"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\":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\"},{\"inputs\":[],\"name\":\"BURN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"removeBurnRole(address)\":{\"details\":\"Remove burn role to address\"},\"removeMintRole(address)\":{\"details\":\"Remove mint role to address\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBurnRole(address)\":{\"details\":\"Grant burn role to address\"},\"setMintRole(address)\":{\"details\":\"Grant mint role to address\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"one type nft has same tokenURI\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/NFTSbt.sol\":\"NFTSbt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/tokens/erc721/NFTSbt.sol\":{\"keccak256\":\"0x0d497bf3a2889ecd93c952ce20f11f7da56e2191619316874b1ad17ceeef5f69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33712cf17460d25c05c2c6a545d14ec3add4af6de6f3ad65c8bdc0b90eb8e228\",\"dweb:/ipfs/QmWUpYzzeQX8P28FJ4UESCsrDdZ3pr3rVnyFW5LQkS8gMH\"]}},\"version\":1}", + "bytecode": "0x60a0604052604051806060016040528060278152602001620047fd60279139600b9080519060200190620000359291906200038e565b503480156200004357600080fd5b506040516200482438038062004824833981810160405281019062000069919062000616565b82828160019080519060200190620000839291906200038e565b5080600290805190602001906200009c9291906200038e565b5050508060808181525050620000dc7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa226000801b6200019360201b60201c565b620001117f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66000801b6200019360201b60201c565b620001266000801b33620001f660201b60201c565b620001587f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001f660201b60201c565b6200018a7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2233620001f660201b60201c565b50505062000715565b6000620001a6836200020c60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b6200020882826200022b60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200023d82826200031c60201b60201c565b6200031857600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002bd6200038660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200039c90620006df565b90600052602060002090601f016020900481019282620003c057600085556200040c565b82601f10620003db57805160ff19168380011785556200040c565b828001600101855582156200040c579182015b828111156200040b578251825591602001919060010190620003ee565b5b5090506200041b91906200041f565b5090565b5b808211156200043a57600081600090555060010162000420565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004a7826200045c565b810181811067ffffffffffffffff82111715620004c957620004c86200046d565b5b80604052505050565b6000620004de6200043e565b9050620004ec82826200049c565b919050565b600067ffffffffffffffff8211156200050f576200050e6200046d565b5b6200051a826200045c565b9050602081019050919050565b60005b83811015620005475780820151818401526020810190506200052a565b8381111562000557576000848401525b50505050565b6000620005746200056e84620004f1565b620004d2565b90508281526020810184848401111562000593576200059262000457565b5b620005a084828562000527565b509392505050565b600082601f830112620005c057620005bf62000452565b5b8151620005d28482602086016200055d565b91505092915050565b6000819050919050565b620005f081620005db565b8114620005fc57600080fd5b50565b6000815190506200061081620005e5565b92915050565b60008060006060848603121562000632576200063162000448565b5b600084015167ffffffffffffffff8111156200065357620006526200044d565b5b6200066186828701620005a8565b935050602084015167ffffffffffffffff8111156200068557620006846200044d565b5b6200069386828701620005a8565b9250506040620006a686828701620005ff565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006f857607f821691505b602082108114156200070f576200070e620006b0565b5b50919050565b6080516140be6200073f600039600081816108af01528181610da20152610dc901526140be6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612b00565b61065f565b60405161021c9190612b48565b60405180910390f35b61022d610671565b60405161023a9190612bfc565b60405180910390f35b61025d60048036038101906102589190612c54565b610703565b60405161026a9190612cc2565b60405180910390f35b61028d60048036038101906102889190612d09565b610788565b005b6102976108a0565b6040516102a49190612d58565b60405180910390f35b6102b56108ad565b6040516102c29190612d58565b60405180910390f35b6102e560048036038101906102e09190612d73565b6108d1565b005b61030160048036038101906102fc9190612da0565b6108fe565b005b61031d60048036038101906103189190612e29565b61095e565b60405161032a9190612e65565b60405180910390f35b61034d60048036038101906103489190612e80565b61097d565b005b61036960048036038101906103649190612d09565b6109a6565b6040516103769190612d58565b60405180910390f35b61039960048036038101906103949190612d73565b610a4b565b005b6103b560048036038101906103b09190612e80565b610a78565b005b6103d160048036038101906103cc9190612da0565b610afb565b005b6103ed60048036038101906103e89190612c54565b610b1b565b005b61040960048036038101906104049190612c54565b610baa565b6040516104169190612d58565b60405180910390f35b61043960048036038101906104349190612d73565b610c1b565b005b61045560048036038101906104509190612c54565b610c48565b6040516104629190612cc2565b60405180910390f35b61048560048036038101906104809190612d73565b610cfa565b6040516104929190612d58565b60405180910390f35b6104b560048036038101906104b09190612d73565b610e6a565b6040516104c29190612d58565b60405180910390f35b6104e560048036038101906104e09190612e80565b610f22565b6040516104f29190612b48565b60405180910390f35b61051560048036038101906105109190612f25565b610f8c565b005b61051f610fb8565b60405161052c9190612bfc565b60405180910390f35b61054f600480360381019061054a9190612d73565b61104a565b005b610559611077565b6040516105669190612e65565b60405180910390f35b61058960048036038101906105849190612f9e565b61107e565b005b6105a560048036038101906105a0919061310e565b611094565b005b6105af6110f6565b6040516105bc9190612e65565b60405180910390f35b6105df60048036038101906105da9190612c54565b61111a565b6040516105ec9190612bfc565b60405180910390f35b6105fd611150565b60405161060a9190612e65565b60405180910390f35b61062d60048036038101906106289190612e80565b611174565b005b61064960048036038101906106449190613191565b61119d565b6040516106569190612b48565b60405180910390f35b600061066a82611231565b9050919050565b60606001805461068090613200565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90613200565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e826112ab565b61074d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610744906132a4565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611317565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611317565b61119d565b5b610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906133c8565b60405180910390fd5b61089b838361131f565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611174565b50565b61090f610909611317565b826113d8565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061345a565b60405180910390fd5b6109598383836114b6565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611317565b61171d565b6109a183836117ba565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906134ec565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae49061357e565b60405180910390fd5b610af7828261189a565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611317565b61171d565b610b5e610b58611317565b836113d8565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906135ea565b60405180910390fd5b610ba68261197b565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061367c565b60405180910390fd5b60098281548110610c0957610c0861369c565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061373d565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611317565b61171d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906137a9565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906137f8565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e349061389a565b60405180910390fd5b5b610e48600c611a98565b6000610e54600c611aae565b9050610e608482611abc565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed29061392c565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611317565b61171d565b8282600b9190610fb29291906129f1565b50505050565b606060028054610fc790613200565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff390613200565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2282611174565b50565b6000801b81565b611090611089611317565b8383611ada565b5050565b6110a561109f611317565b836113d8565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061345a565b60405180910390fd5b6110f084848484611c47565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606000611126611ca3565b905060008151116111465760405180602001604052806000815250611148565b805b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61117d8261095e565b61118e81611189611317565b61171d565b611198838361189a565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112a457506112a382611d35565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661139283610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113e3826112ab565b611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906139be565b60405180910390fd5b600061142d83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061149c57508373ffffffffffffffffffffffffffffffffffffffff1661148484610703565b73ffffffffffffffffffffffffffffffffffffffff16145b806114ad57506114ac818561119d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166114d682610c48565b73ffffffffffffffffffffffffffffffffffffffff161461152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152390613a50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613ae2565b60405180910390fd5b6115a7838383611e17565b6115b260008261131f565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116029190613b02565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165991906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611718838383611ecd565b505050565b6117278282610f22565b6117b65761174c8173ffffffffffffffffffffffffffffffffffffffff166014611ed2565b61175a8360001c6020611ed2565b60405160200161176b929190613c0a565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ad9190612bfc565b60405180910390fd5b5050565b6117c48282610f22565b61189657600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061183b611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118a48282610f22565b1561197757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061191c611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061198682610c48565b905061199481600084611e17565b61199f60008361131f565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ef9190613b02565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9481600084611ecd565b5050565b6001816000016000828254019250508190555050565b600081600001549050919050565b611ad682826040518060200160405280600081525061210e565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613c90565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c3a9190612b48565b60405180910390a3505050565b611c528484846114b6565b611c5e84848484612169565b611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613d22565b60405180910390fd5b50505050565b6060600b8054611cb290613200565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90613200565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e0057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e105750611e0f826122f1565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e7e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613d8e565b60405180910390fd5b611ec883838361236b565b505050565b505050565b606060006002836002611ee59190613dae565b611eef91906137f8565b67ffffffffffffffff811115611f0857611f07612fe3565b5b6040519080825280601f01601f191660200182016040528015611f3a5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611f7257611f7161369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611fd657611fd561369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026120169190613dae565b61202091906137f8565b90505b60018111156120c0577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106120625761206161369c565b5b1a60f81b8282815181106120795761207861369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806120b990613e08565b9050612023565b5060008414612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb90613e7e565b60405180910390fd5b8091505092915050565b612118838361247f565b6121256000848484612169565b612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613d22565b60405180910390fd5b505050565b600061218a8473ffffffffffffffffffffffffffffffffffffffff16612659565b156122e4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121b3611317565b8786866040518563ffffffff1660e01b81526004016121d59493929190613ef3565b6020604051808303816000875af192505050801561221157506040513d601f19601f8201168201806040525081019061220e9190613f54565b60015b612294573d8060008114612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5060008151141561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613d22565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122e9565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061236457506123638261267c565b5b9050919050565b6123768383836126e6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123b9576123b4816126eb565b6123f8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123f7576123f68382612734565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b57612436816128a1565b61247a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612479576124788282612972565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e690613fcd565b60405180910390fd5b6124f8816112ab565b15612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90614039565b60405180910390fd5b61254460008383611e17565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259491906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265560008383611ecd565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161274184610e6a565b61274b9190613b02565b9050600060086000848152602001908152602001600020549050818114612830576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506128b59190613b02565b90506000600a60008481526020019081526020016000205490506000600983815481106128e5576128e461369c565b5b9060005260206000200154905080600983815481106129075761290661369c565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061295657612955614059565b5b6001900381819060005260206000200160009055905550505050565b600061297d83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b8280546129fd90613200565b90600052602060002090601f016020900481019282612a1f5760008555612a66565b82601f10612a3857803560ff1916838001178555612a66565b82800160010185558215612a66579182015b82811115612a65578235825591602001919060010190612a4a565b5b509050612a739190612a77565b5090565b5b80821115612a90576000816000905550600101612a78565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612add81612aa8565b8114612ae857600080fd5b50565b600081359050612afa81612ad4565b92915050565b600060208284031215612b1657612b15612a9e565b5b6000612b2484828501612aeb565b91505092915050565b60008115159050919050565b612b4281612b2d565b82525050565b6000602082019050612b5d6000830184612b39565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b9d578082015181840152602081019050612b82565b83811115612bac576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bce82612b63565b612bd88185612b6e565b9350612be8818560208601612b7f565b612bf181612bb2565b840191505092915050565b60006020820190508181036000830152612c168184612bc3565b905092915050565b6000819050919050565b612c3181612c1e565b8114612c3c57600080fd5b50565b600081359050612c4e81612c28565b92915050565b600060208284031215612c6a57612c69612a9e565b5b6000612c7884828501612c3f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cac82612c81565b9050919050565b612cbc81612ca1565b82525050565b6000602082019050612cd76000830184612cb3565b92915050565b612ce681612ca1565b8114612cf157600080fd5b50565b600081359050612d0381612cdd565b92915050565b60008060408385031215612d2057612d1f612a9e565b5b6000612d2e85828601612cf4565b9250506020612d3f85828601612c3f565b9150509250929050565b612d5281612c1e565b82525050565b6000602082019050612d6d6000830184612d49565b92915050565b600060208284031215612d8957612d88612a9e565b5b6000612d9784828501612cf4565b91505092915050565b600080600060608486031215612db957612db8612a9e565b5b6000612dc786828701612cf4565b9350506020612dd886828701612cf4565b9250506040612de986828701612c3f565b9150509250925092565b6000819050919050565b612e0681612df3565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b600060208284031215612e3f57612e3e612a9e565b5b6000612e4d84828501612e14565b91505092915050565b612e5f81612df3565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b60008060408385031215612e9757612e96612a9e565b5b6000612ea585828601612e14565b9250506020612eb685828601612cf4565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ee557612ee4612ec0565b5b8235905067ffffffffffffffff811115612f0257612f01612ec5565b5b602083019150836001820283011115612f1e57612f1d612eca565b5b9250929050565b60008060208385031215612f3c57612f3b612a9e565b5b600083013567ffffffffffffffff811115612f5a57612f59612aa3565b5b612f6685828601612ecf565b92509250509250929050565b612f7b81612b2d565b8114612f8657600080fd5b50565b600081359050612f9881612f72565b92915050565b60008060408385031215612fb557612fb4612a9e565b5b6000612fc385828601612cf4565b9250506020612fd485828601612f89565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61301b82612bb2565b810181811067ffffffffffffffff8211171561303a57613039612fe3565b5b80604052505050565b600061304d612a94565b90506130598282613012565b919050565b600067ffffffffffffffff82111561307957613078612fe3565b5b61308282612bb2565b9050602081019050919050565b82818337600083830152505050565b60006130b16130ac8461305e565b613043565b9050828152602081018484840111156130cd576130cc612fde565b5b6130d884828561308f565b509392505050565b600082601f8301126130f5576130f4612ec0565b5b813561310584826020860161309e565b91505092915050565b6000806000806080858703121561312857613127612a9e565b5b600061313687828801612cf4565b945050602061314787828801612cf4565b935050604061315887828801612c3f565b925050606085013567ffffffffffffffff81111561317957613178612aa3565b5b613185878288016130e0565b91505092959194509250565b600080604083850312156131a8576131a7612a9e565b5b60006131b685828601612cf4565b92505060206131c785828601612cf4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061321857607f821691505b6020821081141561322c5761322b6131d1565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061328e602c83612b6e565b915061329982613232565b604082019050919050565b600060208201905081810360008301526132bd81613281565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613320602183612b6e565b915061332b826132c4565b604082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006133b2603883612b6e565b91506133bd82613356565b604082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613444603183612b6e565b915061344f826133e8565b604082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006134d6602b83612b6e565b91506134e18261347a565b604082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613568602f83612b6e565b91506135738261350c565b604082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006135d4602083612b6e565b91506135df8261359e565b602082019050919050565b60006020820190508181036000830152613603816135c7565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613666602c83612b6e565b91506136718261360a565b604082019050919050565b6000602082019050818103600083015261369581613659565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613727602983612b6e565b9150613732826136cb565b604082019050919050565b600060208201905081810360008301526137568161371a565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613793601b83612b6e565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061380382612c1e565b915061380e83612c1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613843576138426137c9565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613884601783612b6e565b915061388f8261384e565b602082019050919050565b600060208201905081810360008301526138b381613877565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613916602a83612b6e565b9150613921826138ba565b604082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006139a8602c83612b6e565b91506139b38261394c565b604082019050919050565b600060208201905081810360008301526139d78161399b565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613a3a602583612b6e565b9150613a45826139de565b604082019050919050565b60006020820190508181036000830152613a6981613a2d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613acc602483612b6e565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b6000613b0d82612c1e565b9150613b1883612c1e565b925082821015613b2b57613b2a6137c9565b5b828203905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613b77601783613b36565b9150613b8282613b41565b601782019050919050565b6000613b9882612b63565b613ba28185613b36565b9350613bb2818560208601612b7f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613bf4601183613b36565b9150613bff82613bbe565b601182019050919050565b6000613c1582613b6a565b9150613c218285613b8d565b9150613c2c82613be7565b9150613c388284613b8d565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c7a601983612b6e565b9150613c8582613c44565b602082019050919050565b60006020820190508181036000830152613ca981613c6d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d0c603283612b6e565b9150613d1782613cb0565b604082019050919050565b60006020820190508181036000830152613d3b81613cff565b9050919050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b6000613d78601683612b6e565b9150613d8382613d42565b602082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b6000613db982612c1e565b9150613dc483612c1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dfd57613dfc6137c9565b5b828202905092915050565b6000613e1382612c1e565b91506000821415613e2757613e266137c9565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613e68602083612b6e565b9150613e7382613e32565b602082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ec582613e9e565b613ecf8185613ea9565b9350613edf818560208601612b7f565b613ee881612bb2565b840191505092915050565b6000608082019050613f086000830187612cb3565b613f156020830186612cb3565b613f226040830185612d49565b8181036060830152613f348184613eba565b905095945050505050565b600081519050613f4e81612ad4565b92915050565b600060208284031215613f6a57613f69612a9e565b5b6000613f7884828501613f3f565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613fb7602083612b6e565b9150613fc282613f81565b602082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614023601c83612b6e565b915061402e82613fed565b602082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207a1cea97af47bee34c1d8c50f38122a5c27d3cbcfb2223d90cb73d63d4b9999664736f6c634300080a003368747470733a2f2f6d61726b65742e636562672e67616d65732f6170692f6e66742f696e666f2f", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612b00565b61065f565b60405161021c9190612b48565b60405180910390f35b61022d610671565b60405161023a9190612bfc565b60405180910390f35b61025d60048036038101906102589190612c54565b610703565b60405161026a9190612cc2565b60405180910390f35b61028d60048036038101906102889190612d09565b610788565b005b6102976108a0565b6040516102a49190612d58565b60405180910390f35b6102b56108ad565b6040516102c29190612d58565b60405180910390f35b6102e560048036038101906102e09190612d73565b6108d1565b005b61030160048036038101906102fc9190612da0565b6108fe565b005b61031d60048036038101906103189190612e29565b61095e565b60405161032a9190612e65565b60405180910390f35b61034d60048036038101906103489190612e80565b61097d565b005b61036960048036038101906103649190612d09565b6109a6565b6040516103769190612d58565b60405180910390f35b61039960048036038101906103949190612d73565b610a4b565b005b6103b560048036038101906103b09190612e80565b610a78565b005b6103d160048036038101906103cc9190612da0565b610afb565b005b6103ed60048036038101906103e89190612c54565b610b1b565b005b61040960048036038101906104049190612c54565b610baa565b6040516104169190612d58565b60405180910390f35b61043960048036038101906104349190612d73565b610c1b565b005b61045560048036038101906104509190612c54565b610c48565b6040516104629190612cc2565b60405180910390f35b61048560048036038101906104809190612d73565b610cfa565b6040516104929190612d58565b60405180910390f35b6104b560048036038101906104b09190612d73565b610e6a565b6040516104c29190612d58565b60405180910390f35b6104e560048036038101906104e09190612e80565b610f22565b6040516104f29190612b48565b60405180910390f35b61051560048036038101906105109190612f25565b610f8c565b005b61051f610fb8565b60405161052c9190612bfc565b60405180910390f35b61054f600480360381019061054a9190612d73565b61104a565b005b610559611077565b6040516105669190612e65565b60405180910390f35b61058960048036038101906105849190612f9e565b61107e565b005b6105a560048036038101906105a0919061310e565b611094565b005b6105af6110f6565b6040516105bc9190612e65565b60405180910390f35b6105df60048036038101906105da9190612c54565b61111a565b6040516105ec9190612bfc565b60405180910390f35b6105fd611150565b60405161060a9190612e65565b60405180910390f35b61062d60048036038101906106289190612e80565b611174565b005b61064960048036038101906106449190613191565b61119d565b6040516106569190612b48565b60405180910390f35b600061066a82611231565b9050919050565b60606001805461068090613200565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90613200565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e826112ab565b61074d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610744906132a4565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611317565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611317565b61119d565b5b610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906133c8565b60405180910390fd5b61089b838361131f565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611174565b50565b61090f610909611317565b826113d8565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061345a565b60405180910390fd5b6109598383836114b6565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611317565b61171d565b6109a183836117ba565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906134ec565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae49061357e565b60405180910390fd5b610af7828261189a565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611317565b61171d565b610b5e610b58611317565b836113d8565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906135ea565b60405180910390fd5b610ba68261197b565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061367c565b60405180910390fd5b60098281548110610c0957610c0861369c565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061373d565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611317565b61171d565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906137a9565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906137f8565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e349061389a565b60405180910390fd5b5b610e48600c611a98565b6000610e54600c611aae565b9050610e608482611abc565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed29061392c565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611317565b61171d565b8282600b9190610fb29291906129f1565b50505050565b606060028054610fc790613200565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff390613200565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2282611174565b50565b6000801b81565b611090611089611317565b8383611ada565b5050565b6110a561109f611317565b836113d8565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061345a565b60405180910390fd5b6110f084848484611c47565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606000611126611ca3565b905060008151116111465760405180602001604052806000815250611148565b805b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61117d8261095e565b61118e81611189611317565b61171d565b611198838361189a565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112a457506112a382611d35565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661139283610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113e3826112ab565b611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906139be565b60405180910390fd5b600061142d83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061149c57508373ffffffffffffffffffffffffffffffffffffffff1661148484610703565b73ffffffffffffffffffffffffffffffffffffffff16145b806114ad57506114ac818561119d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166114d682610c48565b73ffffffffffffffffffffffffffffffffffffffff161461152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152390613a50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613ae2565b60405180910390fd5b6115a7838383611e17565b6115b260008261131f565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116029190613b02565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165991906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611718838383611ecd565b505050565b6117278282610f22565b6117b65761174c8173ffffffffffffffffffffffffffffffffffffffff166014611ed2565b61175a8360001c6020611ed2565b60405160200161176b929190613c0a565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ad9190612bfc565b60405180910390fd5b5050565b6117c48282610f22565b61189657600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061183b611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6118a48282610f22565b1561197757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061191c611317565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061198682610c48565b905061199481600084611e17565b61199f60008361131f565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ef9190613b02565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9481600084611ecd565b5050565b6001816000016000828254019250508190555050565b600081600001549050919050565b611ad682826040518060200160405280600081525061210e565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613c90565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c3a9190612b48565b60405180910390a3505050565b611c528484846114b6565b611c5e84848484612169565b611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613d22565b60405180910390fd5b50505050565b6060600b8054611cb290613200565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90613200565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e0057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e105750611e0f826122f1565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e7e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613d8e565b60405180910390fd5b611ec883838361236b565b505050565b505050565b606060006002836002611ee59190613dae565b611eef91906137f8565b67ffffffffffffffff811115611f0857611f07612fe3565b5b6040519080825280601f01601f191660200182016040528015611f3a5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611f7257611f7161369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611fd657611fd561369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026120169190613dae565b61202091906137f8565b90505b60018111156120c0577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106120625761206161369c565b5b1a60f81b8282815181106120795761207861369c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806120b990613e08565b9050612023565b5060008414612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb90613e7e565b60405180910390fd5b8091505092915050565b612118838361247f565b6121256000848484612169565b612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613d22565b60405180910390fd5b505050565b600061218a8473ffffffffffffffffffffffffffffffffffffffff16612659565b156122e4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121b3611317565b8786866040518563ffffffff1660e01b81526004016121d59493929190613ef3565b6020604051808303816000875af192505050801561221157506040513d601f19601f8201168201806040525081019061220e9190613f54565b60015b612294573d8060008114612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5060008151141561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613d22565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122e9565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061236457506123638261267c565b5b9050919050565b6123768383836126e6565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123b9576123b4816126eb565b6123f8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123f7576123f68382612734565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b57612436816128a1565b61247a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612479576124788282612972565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e690613fcd565b60405180910390fd5b6124f8816112ab565b15612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90614039565b60405180910390fd5b61254460008383611e17565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259491906137f8565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265560008383611ecd565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161274184610e6a565b61274b9190613b02565b9050600060086000848152602001908152602001600020549050818114612830576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506128b59190613b02565b90506000600a60008481526020019081526020016000205490506000600983815481106128e5576128e461369c565b5b9060005260206000200154905080600983815481106129075761290661369c565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061295657612955614059565b5b6001900381819060005260206000200160009055905550505050565b600061297d83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b8280546129fd90613200565b90600052602060002090601f016020900481019282612a1f5760008555612a66565b82601f10612a3857803560ff1916838001178555612a66565b82800160010185558215612a66579182015b82811115612a65578235825591602001919060010190612a4a565b5b509050612a739190612a77565b5090565b5b80821115612a90576000816000905550600101612a78565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612add81612aa8565b8114612ae857600080fd5b50565b600081359050612afa81612ad4565b92915050565b600060208284031215612b1657612b15612a9e565b5b6000612b2484828501612aeb565b91505092915050565b60008115159050919050565b612b4281612b2d565b82525050565b6000602082019050612b5d6000830184612b39565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b9d578082015181840152602081019050612b82565b83811115612bac576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bce82612b63565b612bd88185612b6e565b9350612be8818560208601612b7f565b612bf181612bb2565b840191505092915050565b60006020820190508181036000830152612c168184612bc3565b905092915050565b6000819050919050565b612c3181612c1e565b8114612c3c57600080fd5b50565b600081359050612c4e81612c28565b92915050565b600060208284031215612c6a57612c69612a9e565b5b6000612c7884828501612c3f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cac82612c81565b9050919050565b612cbc81612ca1565b82525050565b6000602082019050612cd76000830184612cb3565b92915050565b612ce681612ca1565b8114612cf157600080fd5b50565b600081359050612d0381612cdd565b92915050565b60008060408385031215612d2057612d1f612a9e565b5b6000612d2e85828601612cf4565b9250506020612d3f85828601612c3f565b9150509250929050565b612d5281612c1e565b82525050565b6000602082019050612d6d6000830184612d49565b92915050565b600060208284031215612d8957612d88612a9e565b5b6000612d9784828501612cf4565b91505092915050565b600080600060608486031215612db957612db8612a9e565b5b6000612dc786828701612cf4565b9350506020612dd886828701612cf4565b9250506040612de986828701612c3f565b9150509250925092565b6000819050919050565b612e0681612df3565b8114612e1157600080fd5b50565b600081359050612e2381612dfd565b92915050565b600060208284031215612e3f57612e3e612a9e565b5b6000612e4d84828501612e14565b91505092915050565b612e5f81612df3565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b60008060408385031215612e9757612e96612a9e565b5b6000612ea585828601612e14565b9250506020612eb685828601612cf4565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ee557612ee4612ec0565b5b8235905067ffffffffffffffff811115612f0257612f01612ec5565b5b602083019150836001820283011115612f1e57612f1d612eca565b5b9250929050565b60008060208385031215612f3c57612f3b612a9e565b5b600083013567ffffffffffffffff811115612f5a57612f59612aa3565b5b612f6685828601612ecf565b92509250509250929050565b612f7b81612b2d565b8114612f8657600080fd5b50565b600081359050612f9881612f72565b92915050565b60008060408385031215612fb557612fb4612a9e565b5b6000612fc385828601612cf4565b9250506020612fd485828601612f89565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61301b82612bb2565b810181811067ffffffffffffffff8211171561303a57613039612fe3565b5b80604052505050565b600061304d612a94565b90506130598282613012565b919050565b600067ffffffffffffffff82111561307957613078612fe3565b5b61308282612bb2565b9050602081019050919050565b82818337600083830152505050565b60006130b16130ac8461305e565b613043565b9050828152602081018484840111156130cd576130cc612fde565b5b6130d884828561308f565b509392505050565b600082601f8301126130f5576130f4612ec0565b5b813561310584826020860161309e565b91505092915050565b6000806000806080858703121561312857613127612a9e565b5b600061313687828801612cf4565b945050602061314787828801612cf4565b935050604061315887828801612c3f565b925050606085013567ffffffffffffffff81111561317957613178612aa3565b5b613185878288016130e0565b91505092959194509250565b600080604083850312156131a8576131a7612a9e565b5b60006131b685828601612cf4565b92505060206131c785828601612cf4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061321857607f821691505b6020821081141561322c5761322b6131d1565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061328e602c83612b6e565b915061329982613232565b604082019050919050565b600060208201905081810360008301526132bd81613281565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613320602183612b6e565b915061332b826132c4565b604082019050919050565b6000602082019050818103600083015261334f81613313565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006133b2603883612b6e565b91506133bd82613356565b604082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613444603183612b6e565b915061344f826133e8565b604082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006134d6602b83612b6e565b91506134e18261347a565b604082019050919050565b60006020820190508181036000830152613505816134c9565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613568602f83612b6e565b91506135738261350c565b604082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006135d4602083612b6e565b91506135df8261359e565b602082019050919050565b60006020820190508181036000830152613603816135c7565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613666602c83612b6e565b91506136718261360a565b604082019050919050565b6000602082019050818103600083015261369581613659565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613727602983612b6e565b9150613732826136cb565b604082019050919050565b600060208201905081810360008301526137568161371a565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613793601b83612b6e565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061380382612c1e565b915061380e83612c1e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613843576138426137c9565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613884601783612b6e565b915061388f8261384e565b602082019050919050565b600060208201905081810360008301526138b381613877565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613916602a83612b6e565b9150613921826138ba565b604082019050919050565b6000602082019050818103600083015261394581613909565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006139a8602c83612b6e565b91506139b38261394c565b604082019050919050565b600060208201905081810360008301526139d78161399b565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613a3a602583612b6e565b9150613a45826139de565b604082019050919050565b60006020820190508181036000830152613a6981613a2d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613acc602483612b6e565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b6000613b0d82612c1e565b9150613b1883612c1e565b925082821015613b2b57613b2a6137c9565b5b828203905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613b77601783613b36565b9150613b8282613b41565b601782019050919050565b6000613b9882612b63565b613ba28185613b36565b9350613bb2818560208601612b7f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613bf4601183613b36565b9150613bff82613bbe565b601182019050919050565b6000613c1582613b6a565b9150613c218285613b8d565b9150613c2c82613be7565b9150613c388284613b8d565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c7a601983612b6e565b9150613c8582613c44565b602082019050919050565b60006020820190508181036000830152613ca981613c6d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d0c603283612b6e565b9150613d1782613cb0565b604082019050919050565b60006020820190508181036000830152613d3b81613cff565b9050919050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b6000613d78601683612b6e565b9150613d8382613d42565b602082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b6000613db982612c1e565b9150613dc483612c1e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dfd57613dfc6137c9565b5b828202905092915050565b6000613e1382612c1e565b91506000821415613e2757613e266137c9565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613e68602083612b6e565b9150613e7382613e32565b602082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ec582613e9e565b613ecf8185613ea9565b9350613edf818560208601612b7f565b613ee881612bb2565b840191505092915050565b6000608082019050613f086000830187612cb3565b613f156020830186612cb3565b613f226040830185612d49565b8181036060830152613f348184613eba565b905095945050505050565b600081519050613f4e81612ad4565b92915050565b600060208284031215613f6a57613f69612a9e565b5b6000613f7884828501613f3f565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613fb7602083612b6e565b9150613fc282613f81565b602082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614023601c83612b6e565b915061402e82613fed565b602082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207a1cea97af47bee34c1d8c50f38122a5c27d3cbcfb2223d90cb73d63d4b9999664736f6c634300080a0033", "immutableReferences": { "2435": [ { @@ -20757,8 +20757,8 @@ } ], "sourceMap": "249:2959:14:-:0;;;343:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;633:383;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;733:5;740:7;1464:5:2;1456;:13;;;;;;;;;;;;:::i;:::-;;1489:7;1479;:17;;;;;;;;;;;;:::i;:::-;;1390:113;;769:11:14::1;755:25;;;;::::0;::::1;786:44;455:22;2072:4:0;811:18:14::0;::::1;786:13;;;:44;;:::i;:::-;836:46;519:24;2072:4:0;863:18:14::0;::::1;836:13;;;:46;;:::i;:::-;889:42;2072:4:0;900:18:14::0;::::1;920:10;889;;;:42;;:::i;:::-;937:35;519:24;961:10;937;;;:35;;:::i;:::-;978:33;455:22;1000:10;978;;;:33;;:::i;:::-;633:383:::0;;;249:2959;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;6257:110::-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;2909:145::-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;249:2959:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:77::-;2762:7;2791:5;2780:16;;2725:77;;;:::o;2808:122::-;2881:24;2899:5;2881:24;:::i;:::-;2874:5;2871:35;2861:63;;2920:1;2917;2910:12;2861:63;2808:122;:::o;2936:143::-;2993:5;3024:6;3018:13;3009:22;;3040:33;3067:5;3040:33;:::i;:::-;2936:143;;;;:::o;3085:1009::-;3193:6;3201;3209;3258:2;3246:9;3237:7;3233:23;3229:32;3226:119;;;3264:79;;:::i;:::-;3226:119;3405:1;3394:9;3390:17;3384:24;3435:18;3427:6;3424:30;3421:117;;;3457:79;;:::i;:::-;3421:117;3562:74;3628:7;3619:6;3608:9;3604:22;3562:74;:::i;:::-;3552:84;;3355:291;3706:2;3695:9;3691:18;3685:25;3737:18;3729:6;3726:30;3723:117;;;3759:79;;:::i;:::-;3723:117;3864:74;3930:7;3921:6;3910:9;3906:22;3864:74;:::i;:::-;3854:84;;3656:292;3987:2;4013:64;4069:7;4060:6;4049:9;4045:22;4013:64;:::i;:::-;4003:74;;3958:129;3085:1009;;;;;:::o;4100:180::-;4148:77;4145:1;4138:88;4245:4;4242:1;4235:15;4269:4;4266:1;4259:15;4286:320;4330:6;4367:1;4361:4;4357:12;4347:22;;4414:1;4408:4;4404:12;4435:18;4425:81;;4491:4;4483:6;4479:17;4469:27;;4425:81;4553:2;4545:6;4542:14;4522:18;4519:38;4516:84;;;4572:18;;:::i;:::-;4516:84;4337:269;4286:320;;;:::o;249:2959:14:-;;;;;;;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "249:2959:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2488:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3999:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3537:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1615:111:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;547:36:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2858:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4726:330:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1291:253:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2994:77:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5122:179:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2477:195:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1798:230:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2725:79:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2191:235:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2090:383:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:205:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1697:138:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:102:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3125:81:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2027:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4283:153:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5367:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;419:58:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1892:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;481:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4502:162:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1075:208:14;1221:4;1242:36;1266:11;1242:23;:36::i;:::-;1235:43;;1075:208;;;:::o;2488:98:2:-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;4102:16;4110:7;4102;:16::i;:::-;4094:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4185:15;:24;4201:7;4185:24;;;;;;;;;;;;;;;;;;;;;4178:31;;3999:217;;;:::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;3674:11;;:2;:11;;;;3666:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3771:5;3755:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3780:37;3797:5;3804:12;:10;:12::i;:::-;3780:16;:37::i;:::-;3755:62;3734:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;1615:111:5:-;1676:7;1702:10;:17;;;;1695:24;;1615:111;:::o;547:36:14:-;;;:::o;2858:83::-;2909:27;519:24;2933:2;2909:10;:27::i;:::-;2858:83;:::o;4726:330:2:-;4915:41;4934:12;:10;:12::i;:::-;4948:7;4915:18;:41::i;:::-;4907:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;:::-;4726:330;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;1291:253:5:-;1388:7;1423:23;1440:5;1423:16;:23::i;:::-;1415:5;:31;1407:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1511:12;:19;1524:5;1511:19;;;;;;;;;;;;;;;:26;1531:5;1511:26;;;;;;;;;;;;1504:33;;1291:253;;;;:::o;2994:77:14:-;3042:24;455:22;3063:2;3042:9;:24::i;:::-;2994:77;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;5122:179:2:-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;:::-;5122:179;;;:::o;2477:195:14:-;455:22;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;2558:41:14::1;2577:12;:10;:12::i;:::-;2591:7;2558:18;:41::i;:::-;2543:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;2653:14;2659:7;2653:5;:14::i;:::-;2477:195:::0;;:::o;1798:230:5:-;1873:7;1908:30;:28;:30::i;:::-;1900:5;:38;1892:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:10;2015:5;2004:17;;;;;;;;:::i;:::-;;;;;;;;;;1997:24;;1798:230;;;:::o;2725:79:14:-;2773:26;519:24;2796:2;2773:9;:26::i;:::-;2725:79;:::o;2191:235:2:-;2263:7;2282:13;2298:7;:16;2306:7;2298:16;;;;;;;;;;;;;;;;;;;;;2282:32;;2349:1;2332:19;;:5;:19;;;;2324:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2414:5;2407:12;;;2191:235;;;:::o;2090:383:14:-;2156:7;519:24;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;2193:1:14::1;2179:16;;:2;:16;;;;2171:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:1;2237:11;:15;2233:106;;;2293:11;2287:1;2271:13;:11;:13::i;:::-;:17;;;;:::i;:::-;2270:34;;2262:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;2233:106;2344:15;2362:25;:15;:23;:25::i;:::-;2344:43;;2393:27;:15;:25;:27::i;:::-;2426:22;2436:2;2440:7;2426:9;:22::i;:::-;2461:7;2454:14;;;2090:383:::0;;;;:::o;1929:205:2:-;2001:7;2045:1;2028:19;;:5;:19;;;;2020:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2111:9;:16;2121:5;2111:16;;;;;;;;;;;;;;;;2104:23;;1929:205;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:138:14:-;2072:4:0;1776:18:14;;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;1818:12:14::1;;1802:13;:28;;;;;;;:::i;:::-;;1697:138:::0;;;:::o;2650:102:2:-;2706:13;2738:7;2731:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:102;:::o;3125:81:14:-;3176:25;455:22;3198:2;3176:10;:25::i;:::-;3125:81;:::o;2027:49:0:-;2072:4;2027:49;;;:::o;4283:153:2:-;4377:52;4396:12;:10;:12::i;:::-;4410:8;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;5555:12;:10;:12::i;:::-;5569:7;5536:18;:41::i;:::-;5528:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;419:58:14:-;455:22;419:58;:::o;1892:194::-;1973:13;1994:21;2018:10;:8;:10::i;:::-;1994:34;;2065:1;2047:7;2041:21;:25;:40;;;;;;;;;;;;;;;;;2069:7;2041:40;2034:47;;;1892:194;;;:::o;481:62::-;519:24;481:62;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;4502:162:2:-;4599:4;4622:18;:25;4641:5;4622:25;;;;;;;;;;;;;;;:35;4648:8;4622:35;;;;;;;;;;;;;;;;;;;;;;;;;4615:42;;4502:162;;;;:::o;990:222:5:-;1092:4;1130:35;1115:50;;;:11;:50;;;;:90;;;;1169:36;1193:11;1169:23;:36::i;:::-;1115:90;1108:97;;990:222;;;:::o;7159:125:2:-;7224:4;7275:1;7247:30;;:7;:16;7255:7;7247:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7240:37;;7159:125;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;11168:171:2:-;11269:2;11242:15;:24;11258:7;11242:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11324:7;11320:2;11286:46;;11295:23;11310:7;11295:14;:23::i;:::-;11286:46;;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7559:16;7567:7;7559;:16::i;:::-;7551:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;7691:16;;:7;:16;;;:51;;;;7735:7;7711:31;;:20;7723:7;7711:11;:20::i;:::-;:31;;;7691:51;:87;;;;7746:32;7763:5;7770:7;7746:16;:32::i;:::-;7691:87;7683:96;;;7442:344;;;;:::o;10452:605::-;10606:4;10579:31;;:23;10594:7;10579:14;:23::i;:::-;:31;;;10571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:1;10670:16;;:2;:16;;;;10662:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10738:39;10759:4;10765:2;10769:7;10738:20;:39::i;:::-;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;10898:1;10879:9;:15;10889:4;10879:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;10926:1;10909:9;:13;10919:2;10909:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;10956:2;10937:7;:16;10945:7;10937:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10993:7;10989:2;10974:27;;10983:4;10974:27;;;;;;;;;;;;11012:38;11032:4;11038:2;11042:7;11012:19;:38::i;:::-;10452:605;;;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7219:234::-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;9722:406:2:-;9781:13;9797:23;9812:7;9797:14;:23::i;:::-;9781:39;;9831:48;9852:5;9867:1;9871:7;9831:20;:48::i;:::-;9917:29;9934:1;9938:7;9917:8;:29::i;:::-;9977:1;9957:9;:16;9967:5;9957:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;9995:7;:16;10003:7;9995:16;;;;;;;;;;;;9988:23;;;;;;;;;;;10055:7;10051:1;10027:36;;10036:5;10027:36;;;;;;;;;;;;10074:47;10094:5;10109:1;10113:7;10074:19;:47::i;:::-;9771:357;9722:406;:::o;827:112:10:-;892:7;918;:14;;;911:21;;827:112;;;:::o;945:123::-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;8116:108:2:-;8191:26;8201:2;8205:7;8191:26;;;;;;;;;;;;:9;:26::i;:::-;8116:108;;:::o;11474:307::-;11624:8;11615:17;;:5;:17;;;;11607:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:8;11672:18;:25;11691:5;11672:25;;;;;;;;;;;;;;;:35;11698:8;11672:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11755:8;11733:41;;11748:5;11733:41;;;11765:8;11733:41;;;;;;:::i;:::-;;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6549:307;;;;:::o;1551:106:14:-;1611:13;1639;1632:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:106;:::o;1570:300:2:-;1672:4;1722:25;1707:40;;;:11;:40;;;;:104;;;;1778:33;1763:48;;;:11;:48;;;;1707:104;:156;;;;1827:36;1851:11;1827:23;:36::i;:::-;1707:156;1688:175;;1570:300;;;:::o;1287:260:14:-;1442:1;1426:18;;:4;:18;;;:38;;;;1462:1;1448:16;;:2;:16;;;1426:38;1418:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1497:45;1524:4;1530:2;1534:7;1497:26;:45::i;:::-;1287:260;;;:::o;14162:121:2:-;;;;:::o;1588:441:11:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;8445:311:2:-;8570:18;8576:2;8580:7;8570:5;:18::i;:::-;8619:54;8650:1;8654:2;8658:7;8667:5;8619:22;:54::i;:::-;8598:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;8445:311;;;:::o;12334:778::-;12484:4;12504:15;:2;:13;;;:15::i;:::-;12500:606;;;12555:2;12539:36;;;12576:12;:10;:12::i;:::-;12590:4;12596:7;12605:5;12539:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12795:1;12778:6;:13;:18;12774:266;;;12820:60;;;;;;;;;;:::i;:::-;;;;;;;;12774:266;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;12671:41;;;12661:51;;;:6;:51;;;;12654:58;;;;;12500:606;13091:4;13084:11;;12334:778;;;;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;2624:572:5:-;2763:45;2790:4;2796:2;2800:7;2763:26;:45::i;:::-;2839:1;2823:18;;:4;:18;;;2819:183;;;2857:40;2889:7;2857:31;:40::i;:::-;2819:183;;;2926:2;2918:10;;:4;:10;;;2914:88;;2944:47;2977:4;2983:7;2944:32;:47::i;:::-;2914:88;2819:183;3029:1;3015:16;;:2;:16;;;3011:179;;;3047:45;3084:7;3047:36;:45::i;:::-;3011:179;;;3119:4;3113:10;;:2;:10;;;3109:81;;3139:40;3167:2;3171:7;3139:27;:40::i;:::-;3109:81;3011:179;2624:572;;;:::o;9078:427:2:-;9171:1;9157:16;;:2;:16;;;;9149:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:16;9237:7;9229;:16::i;:::-;9228:17;9220:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9289:45;9318:1;9322:2;9326:7;9289:20;:45::i;:::-;9362:1;9345:9;:13;9355:2;9345:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9392:2;9373:7;:16;9381:7;9373:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9435:7;9431:2;9410:33;;9427:1;9410:33;;;;;;;;;;;;9454:44;9482:1;9486:2;9490:7;9454:19;:44::i;:::-;9078:427;;:::o;1175:320:8:-;1235:4;1487:1;1465:7;:19;;;:23;1458:30;;1175:320;;;:::o;829:155:12:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;13668:122:2:-;;;;:::o;3902:161:5:-;4005:10;:17;;;;3978:15;:24;3994:7;3978:24;;;;;;;;;;;:44;;;;4032:10;4048:7;4032:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3902:161;:::o;4680:970::-;4942:22;4992:1;4967:22;4984:4;4967:16;:22::i;:::-;:26;;;;:::i;:::-;4942:51;;5003:18;5024:17;:26;5042:7;5024:26;;;;;;;;;;;;5003:47;;5168:14;5154:10;:28;5150:323;;5198:19;5220:12;:18;5233:4;5220:18;;;;;;;;;;;;;;;:34;5239:14;5220:34;;;;;;;;;;;;5198:56;;5302:11;5269:12;:18;5282:4;5269:18;;;;;;;;;;;;;;;:30;5288:10;5269:30;;;;;;;;;;;:44;;;;5418:10;5385:17;:30;5403:11;5385:30;;;;;;;;;;;:43;;;;5184:289;5150:323;5566:17;:26;5584:7;5566:26;;;;;;;;;;;5559:33;;;5609:12;:18;5622:4;5609:18;;;;;;;;;;;;;;;:34;5628:14;5609:34;;;;;;;;;;;5602:41;;;4761:889;;4680:970;;:::o;5938:1061::-;6187:22;6232:1;6212:10;:17;;;;:21;;;;:::i;:::-;6187:46;;6243:18;6264:15;:24;6280:7;6264:24;;;;;;;;;;;;6243:45;;6610:19;6632:10;6643:14;6632:26;;;;;;;;:::i;:::-;;;;;;;;;;6610:48;;6694:11;6669:10;6680;6669:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;6804:10;6773:15;:28;6789:11;6773:28;;;;;;;;;;;:41;;;;6942:15;:24;6958:7;6942:24;;;;;;;;;;;6935:31;;;6976:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6009:990;;;5938:1061;:::o;3490:217::-;3574:14;3591:20;3608:2;3591:16;:20::i;:::-;3574:37;;3648:7;3621:12;:16;3634:2;3621:16;;;;;;;;;;;;;;;:24;3638:6;3621:24;;;;;;;;;;;:34;;;;3694:6;3665:17;:26;3683:7;3665:26;;;;;;;;;;;:35;;;;3564:143;3490:217;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:329::-;5349:6;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5290:329;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:77::-;6287:7;6316:5;6305:16;;6250:77;;;:::o;6333:122::-;6406:24;6424:5;6406:24;:::i;:::-;6399:5;6396:35;6386:63;;6445:1;6442;6435:12;6386:63;6333:122;:::o;6461:139::-;6507:5;6545:6;6532:20;6523:29;;6561:33;6588:5;6561:33;:::i;:::-;6461:139;;;;:::o;6606:329::-;6665:6;6714:2;6702:9;6693:7;6689:23;6685:32;6682:119;;;6720:79;;:::i;:::-;6682:119;6840:1;6865:53;6910:7;6901:6;6890:9;6886:22;6865:53;:::i;:::-;6855:63;;6811:117;6606:329;;;;:::o;6941:118::-;7028:24;7046:5;7028:24;:::i;:::-;7023:3;7016:37;6941:118;;:::o;7065:222::-;7158:4;7196:2;7185:9;7181:18;7173:26;;7209:71;7277:1;7266:9;7262:17;7253:6;7209:71;:::i;:::-;7065:222;;;;:::o;7293:474::-;7361:6;7369;7418:2;7406:9;7397:7;7393:23;7389:32;7386:119;;;7424:79;;:::i;:::-;7386:119;7544:1;7569:53;7614:7;7605:6;7594:9;7590:22;7569:53;:::i;:::-;7559:63;;7515:117;7671:2;7697:53;7742:7;7733:6;7722:9;7718:22;7697:53;:::i;:::-;7687:63;;7642:118;7293:474;;;;;:::o;7773:117::-;7882:1;7879;7872:12;7896:117;8005:1;8002;7995:12;8019:117;8128:1;8125;8118:12;8156:553;8214:8;8224:6;8274:3;8267:4;8259:6;8255:17;8251:27;8241:122;;8282:79;;:::i;:::-;8241:122;8395:6;8382:20;8372:30;;8425:18;8417:6;8414:30;8411:117;;;8447:79;;:::i;:::-;8411:117;8561:4;8553:6;8549:17;8537:29;;8615:3;8607:4;8599:6;8595:17;8585:8;8581:32;8578:41;8575:128;;;8622:79;;:::i;:::-;8575:128;8156:553;;;;;:::o;8715:529::-;8786:6;8794;8843:2;8831:9;8822:7;8818:23;8814:32;8811:119;;;8849:79;;:::i;:::-;8811:119;8997:1;8986:9;8982:17;8969:31;9027:18;9019:6;9016:30;9013:117;;;9049:79;;:::i;:::-;9013:117;9162:65;9219:7;9210:6;9199:9;9195:22;9162:65;:::i;:::-;9144:83;;;;8940:297;8715:529;;;;;:::o;9250:116::-;9320:21;9335:5;9320:21;:::i;:::-;9313:5;9310:32;9300:60;;9356:1;9353;9346:12;9300:60;9250:116;:::o;9372:133::-;9415:5;9453:6;9440:20;9431:29;;9469:30;9493:5;9469:30;:::i;:::-;9372:133;;;;:::o;9511:468::-;9576:6;9584;9633:2;9621:9;9612:7;9608:23;9604:32;9601:119;;;9639:79;;:::i;:::-;9601:119;9759:1;9784:53;9829:7;9820:6;9809:9;9805:22;9784:53;:::i;:::-;9774:63;;9730:117;9886:2;9912:50;9954:7;9945:6;9934:9;9930:22;9912:50;:::i;:::-;9902:60;;9857:115;9511:468;;;;;:::o;9985:117::-;10094:1;10091;10084:12;10108:180;10156:77;10153:1;10146:88;10253:4;10250:1;10243:15;10277:4;10274:1;10267:15;10294:281;10377:27;10399:4;10377:27;:::i;:::-;10369:6;10365:40;10507:6;10495:10;10492:22;10471:18;10459:10;10456:34;10453:62;10450:88;;;10518:18;;:::i;:::-;10450:88;10558:10;10554:2;10547:22;10337:238;10294:281;;:::o;10581:129::-;10615:6;10642:20;;:::i;:::-;10632:30;;10671:33;10699:4;10691:6;10671:33;:::i;:::-;10581:129;;;:::o;10716:307::-;10777:4;10867:18;10859:6;10856:30;10853:56;;;10889:18;;:::i;:::-;10853:56;10927:29;10949:6;10927:29;:::i;:::-;10919:37;;11011:4;11005;11001:15;10993:23;;10716:307;;;:::o;11029:154::-;11113:6;11108:3;11103;11090:30;11175:1;11166:6;11161:3;11157:16;11150:27;11029:154;;;:::o;11189:410::-;11266:5;11291:65;11307:48;11348:6;11307:48;:::i;:::-;11291:65;:::i;:::-;11282:74;;11379:6;11372:5;11365:21;11417:4;11410:5;11406:16;11455:3;11446:6;11441:3;11437:16;11434:25;11431:112;;;11462:79;;:::i;:::-;11431:112;11552:41;11586:6;11581:3;11576;11552:41;:::i;:::-;11272:327;11189:410;;;;;:::o;11618:338::-;11673:5;11722:3;11715:4;11707:6;11703:17;11699:27;11689:122;;11730:79;;:::i;:::-;11689:122;11847:6;11834:20;11872:78;11946:3;11938:6;11931:4;11923:6;11919:17;11872:78;:::i;:::-;11863:87;;11679:277;11618:338;;;;:::o;11962:943::-;12057:6;12065;12073;12081;12130:3;12118:9;12109:7;12105:23;12101:33;12098:120;;;12137:79;;:::i;:::-;12098:120;12257:1;12282:53;12327:7;12318:6;12307:9;12303:22;12282:53;:::i;:::-;12272:63;;12228:117;12384:2;12410:53;12455:7;12446:6;12435:9;12431:22;12410:53;:::i;:::-;12400:63;;12355:118;12512:2;12538:53;12583:7;12574:6;12563:9;12559:22;12538:53;:::i;:::-;12528:63;;12483:118;12668:2;12657:9;12653:18;12640:32;12699:18;12691:6;12688:30;12685:117;;;12721:79;;:::i;:::-;12685:117;12826:62;12880:7;12871:6;12860:9;12856:22;12826:62;:::i;:::-;12816:72;;12611:287;11962:943;;;;;;;:::o;12911:474::-;12979:6;12987;13036:2;13024:9;13015:7;13011:23;13007:32;13004:119;;;13042:79;;:::i;:::-;13004:119;13162:1;13187:53;13232:7;13223:6;13212:9;13208:22;13187:53;:::i;:::-;13177:63;;13133:117;13289:2;13315:53;13360:7;13351:6;13340:9;13336:22;13315:53;:::i;:::-;13305:63;;13260:118;12911:474;;;;;:::o;13391:180::-;13439:77;13436:1;13429:88;13536:4;13533:1;13526:15;13560:4;13557:1;13550:15;13577:320;13621:6;13658:1;13652:4;13648:12;13638:22;;13705:1;13699:4;13695:12;13726:18;13716:81;;13782:4;13774:6;13770:17;13760:27;;13716:81;13844:2;13836:6;13833:14;13813:18;13810:38;13807:84;;;13863:18;;:::i;:::-;13807:84;13628:269;13577:320;;;:::o;13903:231::-;14043:34;14039:1;14031:6;14027:14;14020:58;14112:14;14107:2;14099:6;14095:15;14088:39;13903:231;:::o;14140:366::-;14282:3;14303:67;14367:2;14362:3;14303:67;:::i;:::-;14296:74;;14379:93;14468:3;14379:93;:::i;:::-;14497:2;14492:3;14488:12;14481:19;;14140:366;;;:::o;14512:419::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14765:9;14759:4;14755:20;14751:1;14740:9;14736:17;14729:47;14793:131;14919:4;14793:131;:::i;:::-;14785:139;;14512:419;;;:::o;14937:220::-;15077:34;15073:1;15065:6;15061:14;15054:58;15146:3;15141:2;15133:6;15129:15;15122:28;14937:220;:::o;15163:366::-;15305:3;15326:67;15390:2;15385:3;15326:67;:::i;:::-;15319:74;;15402:93;15491:3;15402:93;:::i;:::-;15520:2;15515:3;15511:12;15504:19;;15163:366;;;:::o;15535:419::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15788:9;15782:4;15778:20;15774:1;15763:9;15759:17;15752:47;15816:131;15942:4;15816:131;:::i;:::-;15808:139;;15535:419;;;:::o;15960:243::-;16100:34;16096:1;16088:6;16084:14;16077:58;16169:26;16164:2;16156:6;16152:15;16145:51;15960:243;:::o;16209:366::-;16351:3;16372:67;16436:2;16431:3;16372:67;:::i;:::-;16365:74;;16448:93;16537:3;16448:93;:::i;:::-;16566:2;16561:3;16557:12;16550:19;;16209:366;;;:::o;16581:419::-;16747:4;16785:2;16774:9;16770:18;16762:26;;16834:9;16828:4;16824:20;16820:1;16809:9;16805:17;16798:47;16862:131;16988:4;16862:131;:::i;:::-;16854:139;;16581:419;;;:::o;17006:236::-;17146:34;17142:1;17134:6;17130:14;17123:58;17215:19;17210:2;17202:6;17198:15;17191:44;17006:236;:::o;17248:366::-;17390:3;17411:67;17475:2;17470:3;17411:67;:::i;:::-;17404:74;;17487:93;17576:3;17487:93;:::i;:::-;17605:2;17600:3;17596:12;17589:19;;17248:366;;;:::o;17620:419::-;17786:4;17824:2;17813:9;17809:18;17801:26;;17873:9;17867:4;17863:20;17859:1;17848:9;17844:17;17837:47;17901:131;18027:4;17901:131;:::i;:::-;17893:139;;17620:419;;;:::o;18045:230::-;18185:34;18181:1;18173:6;18169:14;18162:58;18254:13;18249:2;18241:6;18237:15;18230:38;18045:230;:::o;18281:366::-;18423:3;18444:67;18508:2;18503:3;18444:67;:::i;:::-;18437:74;;18520:93;18609:3;18520:93;:::i;:::-;18638:2;18633:3;18629:12;18622:19;;18281:366;;;:::o;18653:419::-;18819:4;18857:2;18846:9;18842:18;18834:26;;18906:9;18900:4;18896:20;18892:1;18881:9;18877:17;18870:47;18934:131;19060:4;18934:131;:::i;:::-;18926:139;;18653:419;;;:::o;19078:234::-;19218:34;19214:1;19206:6;19202:14;19195:58;19287:17;19282:2;19274:6;19270:15;19263:42;19078:234;:::o;19318:366::-;19460:3;19481:67;19545:2;19540:3;19481:67;:::i;:::-;19474:74;;19557:93;19646:3;19557:93;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19318:366;;;:::o;19690:419::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19943:9;19937:4;19933:20;19929:1;19918:9;19914:17;19907:47;19971:131;20097:4;19971:131;:::i;:::-;19963:139;;19690:419;;;:::o;20115:182::-;20255:34;20251:1;20243:6;20239:14;20232:58;20115:182;:::o;20303:366::-;20445:3;20466:67;20530:2;20525:3;20466:67;:::i;:::-;20459:74;;20542:93;20631:3;20542:93;:::i;:::-;20660:2;20655:3;20651:12;20644:19;;20303:366;;;:::o;20675:419::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:231::-;21240:34;21236:1;21228:6;21224:14;21217:58;21309:14;21304:2;21296:6;21292:15;21285:39;21100:231;:::o;21337:366::-;21479:3;21500:67;21564:2;21559:3;21500:67;:::i;:::-;21493:74;;21576:93;21665:3;21576:93;:::i;:::-;21694:2;21689:3;21685:12;21678:19;;21337:366;;;:::o;21709:419::-;21875:4;21913:2;21902:9;21898:18;21890:26;;21962:9;21956:4;21952:20;21948:1;21937:9;21933:17;21926:47;21990:131;22116:4;21990:131;:::i;:::-;21982:139;;21709:419;;;:::o;22134:180::-;22182:77;22179:1;22172:88;22279:4;22276:1;22269:15;22303:4;22300:1;22293:15;22320:228;22460:34;22456:1;22448:6;22444:14;22437:58;22529:11;22524:2;22516:6;22512:15;22505:36;22320:228;:::o;22554:366::-;22696:3;22717:67;22781:2;22776:3;22717:67;:::i;:::-;22710:74;;22793:93;22882:3;22793:93;:::i;:::-;22911:2;22906:3;22902:12;22895:19;;22554:366;;;:::o;22926:419::-;23092:4;23130:2;23119:9;23115:18;23107:26;;23179:9;23173:4;23169:20;23165:1;23154:9;23150:17;23143:47;23207:131;23333:4;23207:131;:::i;:::-;23199:139;;22926:419;;;:::o;23351:177::-;23491:29;23487:1;23479:6;23475:14;23468:53;23351:177;:::o;23534:366::-;23676:3;23697:67;23761:2;23756:3;23697:67;:::i;:::-;23690:74;;23773:93;23862:3;23773:93;:::i;:::-;23891:2;23886:3;23882:12;23875:19;;23534:366;;;:::o;23906:419::-;24072:4;24110:2;24099:9;24095:18;24087:26;;24159:9;24153:4;24149:20;24145:1;24134:9;24130:17;24123:47;24187:131;24313:4;24187:131;:::i;:::-;24179:139;;23906:419;;;:::o;24331:180::-;24379:77;24376:1;24369:88;24476:4;24473:1;24466:15;24500:4;24497:1;24490:15;24517:305;24557:3;24576:20;24594:1;24576:20;:::i;:::-;24571:25;;24610:20;24628:1;24610:20;:::i;:::-;24605:25;;24764:1;24696:66;24692:74;24689:1;24686:81;24683:107;;;24770:18;;:::i;:::-;24683:107;24814:1;24811;24807:9;24800:16;;24517:305;;;;:::o;24828:173::-;24968:25;24964:1;24956:6;24952:14;24945:49;24828:173;:::o;25007:366::-;25149:3;25170:67;25234:2;25229:3;25170:67;:::i;:::-;25163:74;;25246:93;25335:3;25246:93;:::i;:::-;25364:2;25359:3;25355:12;25348:19;;25007:366;;;:::o;25379:419::-;25545:4;25583:2;25572:9;25568:18;25560:26;;25632:9;25626:4;25622:20;25618:1;25607:9;25603:17;25596:47;25660:131;25786:4;25660:131;:::i;:::-;25652:139;;25379:419;;;:::o;25804:229::-;25944:34;25940:1;25932:6;25928:14;25921:58;26013:12;26008:2;26000:6;25996:15;25989:37;25804:229;:::o;26039:366::-;26181:3;26202:67;26266:2;26261:3;26202:67;:::i;:::-;26195:74;;26278:93;26367:3;26278:93;:::i;:::-;26396:2;26391:3;26387:12;26380:19;;26039:366;;;:::o;26411:419::-;26577:4;26615:2;26604:9;26600:18;26592:26;;26664:9;26658:4;26654:20;26650:1;26639:9;26635:17;26628:47;26692:131;26818:4;26692:131;:::i;:::-;26684:139;;26411:419;;;:::o;26836:231::-;26976:34;26972:1;26964:6;26960:14;26953:58;27045:14;27040:2;27032:6;27028:15;27021:39;26836:231;:::o;27073:366::-;27215:3;27236:67;27300:2;27295:3;27236:67;:::i;:::-;27229:74;;27312:93;27401:3;27312:93;:::i;:::-;27430:2;27425:3;27421:12;27414:19;;27073:366;;;:::o;27445:419::-;27611:4;27649:2;27638:9;27634:18;27626:26;;27698:9;27692:4;27688:20;27684:1;27673:9;27669:17;27662:47;27726:131;27852:4;27726:131;:::i;:::-;27718:139;;27445:419;;;:::o;27870:224::-;28010:34;28006:1;27998:6;27994:14;27987:58;28079:7;28074:2;28066:6;28062:15;28055:32;27870:224;:::o;28100:366::-;28242:3;28263:67;28327:2;28322:3;28263:67;:::i;:::-;28256:74;;28339:93;28428:3;28339:93;:::i;:::-;28457:2;28452:3;28448:12;28441:19;;28100:366;;;:::o;28472:419::-;28638:4;28676:2;28665:9;28661:18;28653:26;;28725:9;28719:4;28715:20;28711:1;28700:9;28696:17;28689:47;28753:131;28879:4;28753:131;:::i;:::-;28745:139;;28472:419;;;:::o;28897:223::-;29037:34;29033:1;29025:6;29021:14;29014:58;29106:6;29101:2;29093:6;29089:15;29082:31;28897:223;:::o;29126:366::-;29268:3;29289:67;29353:2;29348:3;29289:67;:::i;:::-;29282:74;;29365:93;29454:3;29365:93;:::i;:::-;29483:2;29478:3;29474:12;29467:19;;29126:366;;;:::o;29498:419::-;29664:4;29702:2;29691:9;29687:18;29679:26;;29751:9;29745:4;29741:20;29737:1;29726:9;29722:17;29715:47;29779:131;29905:4;29779:131;:::i;:::-;29771:139;;29498:419;;;:::o;29923:191::-;29963:4;29983:20;30001:1;29983:20;:::i;:::-;29978:25;;30017:20;30035:1;30017:20;:::i;:::-;30012:25;;30056:1;30053;30050:8;30047:34;;;30061:18;;:::i;:::-;30047:34;30106:1;30103;30099:9;30091:17;;29923:191;;;;:::o;30120:148::-;30222:11;30259:3;30244:18;;30120:148;;;;:::o;30274:173::-;30414:25;30410:1;30402:6;30398:14;30391:49;30274:173;:::o;30453:402::-;30613:3;30634:85;30716:2;30711:3;30634:85;:::i;:::-;30627:92;;30728:93;30817:3;30728:93;:::i;:::-;30846:2;30841:3;30837:12;30830:19;;30453:402;;;:::o;30861:377::-;30967:3;30995:39;31028:5;30995:39;:::i;:::-;31050:89;31132:6;31127:3;31050:89;:::i;:::-;31043:96;;31148:52;31193:6;31188:3;31181:4;31174:5;31170:16;31148:52;:::i;:::-;31225:6;31220:3;31216:16;31209:23;;30971:267;30861:377;;;;:::o;31244:167::-;31384:19;31380:1;31372:6;31368:14;31361:43;31244:167;:::o;31417:402::-;31577:3;31598:85;31680:2;31675:3;31598:85;:::i;:::-;31591:92;;31692:93;31781:3;31692:93;:::i;:::-;31810:2;31805:3;31801:12;31794:19;;31417:402;;;:::o;31825:967::-;32207:3;32229:148;32373:3;32229:148;:::i;:::-;32222:155;;32394:95;32485:3;32476:6;32394:95;:::i;:::-;32387:102;;32506:148;32650:3;32506:148;:::i;:::-;32499:155;;32671:95;32762:3;32753:6;32671:95;:::i;:::-;32664:102;;32783:3;32776:10;;31825:967;;;;;:::o;32798:175::-;32938:27;32934:1;32926:6;32922:14;32915:51;32798:175;:::o;32979:366::-;33121:3;33142:67;33206:2;33201:3;33142:67;:::i;:::-;33135:74;;33218:93;33307:3;33218:93;:::i;:::-;33336:2;33331:3;33327:12;33320:19;;32979:366;;;:::o;33351:419::-;33517:4;33555:2;33544:9;33540:18;33532:26;;33604:9;33598:4;33594:20;33590:1;33579:9;33575:17;33568:47;33632:131;33758:4;33632:131;:::i;:::-;33624:139;;33351:419;;;:::o;33776:237::-;33916:34;33912:1;33904:6;33900:14;33893:58;33985:20;33980:2;33972:6;33968:15;33961:45;33776:237;:::o;34019:366::-;34161:3;34182:67;34246:2;34241:3;34182:67;:::i;:::-;34175:74;;34258:93;34347:3;34258:93;:::i;:::-;34376:2;34371:3;34367:12;34360:19;;34019:366;;;:::o;34391:419::-;34557:4;34595:2;34584:9;34580:18;34572:26;;34644:9;34638:4;34634:20;34630:1;34619:9;34615:17;34608:47;34672:131;34798:4;34672:131;:::i;:::-;34664:139;;34391:419;;;:::o;34816:172::-;34956:24;34952:1;34944:6;34940:14;34933:48;34816:172;:::o;34994:366::-;35136:3;35157:67;35221:2;35216:3;35157:67;:::i;:::-;35150:74;;35233:93;35322:3;35233:93;:::i;:::-;35351:2;35346:3;35342:12;35335:19;;34994:366;;;:::o;35366:419::-;35532:4;35570:2;35559:9;35555:18;35547:26;;35619:9;35613:4;35609:20;35605:1;35594:9;35590:17;35583:47;35647:131;35773:4;35647:131;:::i;:::-;35639:139;;35366:419;;;:::o;35791:348::-;35831:7;35854:20;35872:1;35854:20;:::i;:::-;35849:25;;35888:20;35906:1;35888:20;:::i;:::-;35883:25;;36076:1;36008:66;36004:74;36001:1;35998:81;35993:1;35986:9;35979:17;35975:105;35972:131;;;36083:18;;:::i;:::-;35972:131;36131:1;36128;36124:9;36113:20;;35791:348;;;;:::o;36145:171::-;36184:3;36207:24;36225:5;36207:24;:::i;:::-;36198:33;;36253:4;36246:5;36243:15;36240:41;;;36261:18;;:::i;:::-;36240:41;36308:1;36301:5;36297:13;36290:20;;36145:171;;;:::o;36322:182::-;36462:34;36458:1;36450:6;36446:14;36439:58;36322:182;:::o;36510:366::-;36652:3;36673:67;36737:2;36732:3;36673:67;:::i;:::-;36666:74;;36749:93;36838:3;36749:93;:::i;:::-;36867:2;36862:3;36858:12;36851:19;;36510:366;;;:::o;36882:419::-;37048:4;37086:2;37075:9;37071:18;37063:26;;37135:9;37129:4;37125:20;37121:1;37110:9;37106:17;37099:47;37163:131;37289:4;37163:131;:::i;:::-;37155:139;;36882:419;;;:::o;37307:98::-;37358:6;37392:5;37386:12;37376:22;;37307:98;;;:::o;37411:168::-;37494:11;37528:6;37523:3;37516:19;37568:4;37563:3;37559:14;37544:29;;37411:168;;;;:::o;37585:360::-;37671:3;37699:38;37731:5;37699:38;:::i;:::-;37753:70;37816:6;37811:3;37753:70;:::i;:::-;37746:77;;37832:52;37877:6;37872:3;37865:4;37858:5;37854:16;37832:52;:::i;:::-;37909:29;37931:6;37909:29;:::i;:::-;37904:3;37900:39;37893:46;;37675:270;37585:360;;;;:::o;37951:640::-;38146:4;38184:3;38173:9;38169:19;38161:27;;38198:71;38266:1;38255:9;38251:17;38242:6;38198:71;:::i;:::-;38279:72;38347:2;38336:9;38332:18;38323:6;38279:72;:::i;:::-;38361;38429:2;38418:9;38414:18;38405:6;38361:72;:::i;:::-;38480:9;38474:4;38470:20;38465:2;38454:9;38450:18;38443:48;38508:76;38579:4;38570:6;38508:76;:::i;:::-;38500:84;;37951:640;;;;;;;:::o;38597:141::-;38653:5;38684:6;38678:13;38669:22;;38700:32;38726:5;38700:32;:::i;:::-;38597:141;;;;:::o;38744:349::-;38813:6;38862:2;38850:9;38841:7;38837:23;38833:32;38830:119;;;38868:79;;:::i;:::-;38830:119;38988:1;39013:63;39068:7;39059:6;39048:9;39044:22;39013:63;:::i;:::-;39003:73;;38959:127;38744:349;;;;:::o;39099:182::-;39239:34;39235:1;39227:6;39223:14;39216:58;39099:182;:::o;39287:366::-;39429:3;39450:67;39514:2;39509:3;39450:67;:::i;:::-;39443:74;;39526:93;39615:3;39526:93;:::i;:::-;39644:2;39639:3;39635:12;39628:19;;39287:366;;;:::o;39659:419::-;39825:4;39863:2;39852:9;39848:18;39840:26;;39912:9;39906:4;39902:20;39898:1;39887:9;39883:17;39876:47;39940:131;40066:4;39940:131;:::i;:::-;39932:139;;39659:419;;;:::o;40084:178::-;40224:30;40220:1;40212:6;40208:14;40201:54;40084:178;:::o;40268:366::-;40410:3;40431:67;40495:2;40490:3;40431:67;:::i;:::-;40424:74;;40507:93;40596:3;40507:93;:::i;:::-;40625:2;40620:3;40616:12;40609:19;;40268:366;;;:::o;40640:419::-;40806:4;40844:2;40833:9;40829:18;40821:26;;40893:9;40887:4;40883:20;40879:1;40868:9;40864:17;40857:47;40921:131;41047:4;40921:131;:::i;:::-;40913:139;;40640:419;;;:::o;41065:180::-;41113:77;41110:1;41103:88;41210:4;41207:1;41200:15;41234:4;41231:1;41224:15", - "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract NFTSbt is AccessControl, ERC721Enumerable {\n using Counters for Counters.Counter;\n string private _baseTokenURI = \"https://market.cebg.games/api/nft/info/\";\n bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n uint256 public immutable supplyLimit;\n\n Counters.Counter private _tokenIdCounter;\n\n constructor(\n string memory _name,\n string memory _symbol,\n uint256 _supplyLimt\n ) ERC721(_name, _symbol) {\n supplyLimit = _supplyLimt;\n _setRoleAdmin(BURN_ROLE, DEFAULT_ADMIN_ROLE);\n _setRoleAdmin(MINTER_ROLE, DEFAULT_ADMIN_ROLE);\n\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _setupRole(MINTER_ROLE, msg.sender);\n _setupRole(BURN_ROLE, msg.sender);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(AccessControl, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721Enumerable) {\n require(from == address(0) || to == address(0), \"Token not transferable\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(\n string calldata baseTokenURI\n ) external onlyRole(DEFAULT_ADMIN_ROLE) {\n _baseTokenURI = baseTokenURI;\n }\n\n /**\n * @dev one type nft has same tokenURI\n */\n function tokenURI(\n uint256 tokenId\n ) public view virtual override returns (string memory) {\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? baseURI : \"\";\n }\n\n function mint(address to) external onlyRole(MINTER_ROLE) returns (uint256) {\n require(to != address(0), \"Cannot mint to zero address\");\n if (supplyLimit > 0) {\n require((totalSupply() + 1) <= supplyLimit, \"Exceed the total supply\");\n }\n uint256 tokenId = _tokenIdCounter.current();\n _tokenIdCounter.increment();\n _safeMint(to, tokenId);\n return tokenId;\n }\n\n function burn(uint256 tokenId) external onlyRole(BURN_ROLE) {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"Caller is not owner nor approved\"\n );\n _burn(tokenId);\n }\n\n /**\n * @dev Grant mint role to address\n */\n function setMintRole(address to) external {\n grantRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Remove mint role to address\n */\n function removeMintRole(address to) external {\n revokeRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Grant burn role to address\n */\n function setBurnRole(address to) external {\n grantRole(BURN_ROLE, to);\n }\n\n /**\n * @dev Remove burn role to address\n */\n function removeBurnRole(address to) external {\n revokeRole(BURN_ROLE, to);\n }\n}\n", + "deployedSourceMap": "249:2959:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2488:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3999:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3537:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1615:111:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;547:36:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2858:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4726:330:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1291:253:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2994:77:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5122:179:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2477:195:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1798:230:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2725:79:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2191:235:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2090:383:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:205:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1697:138:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:102:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3125:81:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2027:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4283:153:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5367:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;419:58:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1892:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;481:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4502:162:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1075:208:14;1221:4;1242:36;1266:11;1242:23;:36::i;:::-;1235:43;;1075:208;;;:::o;2488:98:2:-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;4102:16;4110:7;4102;:16::i;:::-;4094:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4185:15;:24;4201:7;4185:24;;;;;;;;;;;;;;;;;;;;;4178:31;;3999:217;;;:::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;3674:11;;:2;:11;;;;3666:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3771:5;3755:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3780:37;3797:5;3804:12;:10;:12::i;:::-;3780:16;:37::i;:::-;3755:62;3734:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;1615:111:5:-;1676:7;1702:10;:17;;;;1695:24;;1615:111;:::o;547:36:14:-;;;:::o;2858:83::-;2909:27;519:24;2933:2;2909:10;:27::i;:::-;2858:83;:::o;4726:330:2:-;4915:41;4934:12;:10;:12::i;:::-;4948:7;4915:18;:41::i;:::-;4907:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;:::-;4726:330;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;1291:253:5:-;1388:7;1423:23;1440:5;1423:16;:23::i;:::-;1415:5;:31;1407:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1511:12;:19;1524:5;1511:19;;;;;;;;;;;;;;;:26;1531:5;1511:26;;;;;;;;;;;;1504:33;;1291:253;;;;:::o;2994:77:14:-;3042:24;455:22;3063:2;3042:9;:24::i;:::-;2994:77;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;5122:179:2:-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;:::-;5122:179;;;:::o;2477:195:14:-;455:22;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;2558:41:14::1;2577:12;:10;:12::i;:::-;2591:7;2558:18;:41::i;:::-;2543:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;2653:14;2659:7;2653:5;:14::i;:::-;2477:195:::0;;:::o;1798:230:5:-;1873:7;1908:30;:28;:30::i;:::-;1900:5;:38;1892:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:10;2015:5;2004:17;;;;;;;;:::i;:::-;;;;;;;;;;1997:24;;1798:230;;;:::o;2725:79:14:-;2773:26;519:24;2796:2;2773:9;:26::i;:::-;2725:79;:::o;2191:235:2:-;2263:7;2282:13;2298:7;:16;2306:7;2298:16;;;;;;;;;;;;;;;;;;;;;2282:32;;2349:1;2332:19;;:5;:19;;;;2324:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2414:5;2407:12;;;2191:235;;;:::o;2090:383:14:-;2156:7;519:24;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;2193:1:14::1;2179:16;;:2;:16;;;;2171:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:1;2237:11;:15;2233:106;;;2293:11;2287:1;2271:13;:11;:13::i;:::-;:17;;;;:::i;:::-;2270:34;;2262:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;2233:106;2344:27;:15;:25;:27::i;:::-;2377:15;2395:25;:15;:23;:25::i;:::-;2377:43;;2426:22;2436:2;2440:7;2426:9;:22::i;:::-;2461:7;2454:14;;;2090:383:::0;;;;:::o;1929:205:2:-;2001:7;2045:1;2028:19;;:5;:19;;;;2020:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2111:9;:16;2121:5;2111:16;;;;;;;;;;;;;;;;2104:23;;1929:205;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:138:14:-;2072:4:0;1776:18:14;;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;1818:12:14::1;;1802:13;:28;;;;;;;:::i;:::-;;1697:138:::0;;;:::o;2650:102:2:-;2706:13;2738:7;2731:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:102;:::o;3125:81:14:-;3176:25;455:22;3198:2;3176:10;:25::i;:::-;3125:81;:::o;2027:49:0:-;2072:4;2027:49;;;:::o;4283:153:2:-;4377:52;4396:12;:10;:12::i;:::-;4410:8;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;5555:12;:10;:12::i;:::-;5569:7;5536:18;:41::i;:::-;5528:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;419:58:14:-;455:22;419:58;:::o;1892:194::-;1973:13;1994:21;2018:10;:8;:10::i;:::-;1994:34;;2065:1;2047:7;2041:21;:25;:40;;;;;;;;;;;;;;;;;2069:7;2041:40;2034:47;;;1892:194;;;:::o;481:62::-;519:24;481:62;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;4502:162:2:-;4599:4;4622:18;:25;4641:5;4622:25;;;;;;;;;;;;;;;:35;4648:8;4622:35;;;;;;;;;;;;;;;;;;;;;;;;;4615:42;;4502:162;;;;:::o;990:222:5:-;1092:4;1130:35;1115:50;;;:11;:50;;;;:90;;;;1169:36;1193:11;1169:23;:36::i;:::-;1115:90;1108:97;;990:222;;;:::o;7159:125:2:-;7224:4;7275:1;7247:30;;:7;:16;7255:7;7247:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7240:37;;7159:125;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;11168:171:2:-;11269:2;11242:15;:24;11258:7;11242:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11324:7;11320:2;11286:46;;11295:23;11310:7;11295:14;:23::i;:::-;11286:46;;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7559:16;7567:7;7559;:16::i;:::-;7551:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;7691:16;;:7;:16;;;:51;;;;7735:7;7711:31;;:20;7723:7;7711:11;:20::i;:::-;:31;;;7691:51;:87;;;;7746:32;7763:5;7770:7;7746:16;:32::i;:::-;7691:87;7683:96;;;7442:344;;;;:::o;10452:605::-;10606:4;10579:31;;:23;10594:7;10579:14;:23::i;:::-;:31;;;10571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:1;10670:16;;:2;:16;;;;10662:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10738:39;10759:4;10765:2;10769:7;10738:20;:39::i;:::-;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;10898:1;10879:9;:15;10889:4;10879:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;10926:1;10909:9;:13;10919:2;10909:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;10956:2;10937:7;:16;10945:7;10937:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10993:7;10989:2;10974:27;;10983:4;10974:27;;;;;;;;;;;;11012:38;11032:4;11038:2;11042:7;11012:19;:38::i;:::-;10452:605;;;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7219:234::-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;9722:406:2:-;9781:13;9797:23;9812:7;9797:14;:23::i;:::-;9781:39;;9831:48;9852:5;9867:1;9871:7;9831:20;:48::i;:::-;9917:29;9934:1;9938:7;9917:8;:29::i;:::-;9977:1;9957:9;:16;9967:5;9957:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;9995:7;:16;10003:7;9995:16;;;;;;;;;;;;9988:23;;;;;;;;;;;10055:7;10051:1;10027:36;;10036:5;10027:36;;;;;;;;;;;;10074:47;10094:5;10109:1;10113:7;10074:19;:47::i;:::-;9771:357;9722:406;:::o;945:123:10:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;827:112::-;892:7;918;:14;;;911:21;;827:112;;;:::o;8116:108:2:-;8191:26;8201:2;8205:7;8191:26;;;;;;;;;;;;:9;:26::i;:::-;8116:108;;:::o;11474:307::-;11624:8;11615:17;;:5;:17;;;;11607:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:8;11672:18;:25;11691:5;11672:25;;;;;;;;;;;;;;;:35;11698:8;11672:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11755:8;11733:41;;11748:5;11733:41;;;11765:8;11733:41;;;;;;:::i;:::-;;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6549:307;;;;:::o;1551:106:14:-;1611:13;1639;1632:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:106;:::o;1570:300:2:-;1672:4;1722:25;1707:40;;;:11;:40;;;;:104;;;;1778:33;1763:48;;;:11;:48;;;;1707:104;:156;;;;1827:36;1851:11;1827:23;:36::i;:::-;1707:156;1688:175;;1570:300;;;:::o;1287:260:14:-;1442:1;1426:18;;:4;:18;;;:38;;;;1462:1;1448:16;;:2;:16;;;1426:38;1418:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1497:45;1524:4;1530:2;1534:7;1497:26;:45::i;:::-;1287:260;;;:::o;14162:121:2:-;;;;:::o;1588:441:11:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;8445:311:2:-;8570:18;8576:2;8580:7;8570:5;:18::i;:::-;8619:54;8650:1;8654:2;8658:7;8667:5;8619:22;:54::i;:::-;8598:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;8445:311;;;:::o;12334:778::-;12484:4;12504:15;:2;:13;;;:15::i;:::-;12500:606;;;12555:2;12539:36;;;12576:12;:10;:12::i;:::-;12590:4;12596:7;12605:5;12539:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12795:1;12778:6;:13;:18;12774:266;;;12820:60;;;;;;;;;;:::i;:::-;;;;;;;;12774:266;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;12671:41;;;12661:51;;;:6;:51;;;;12654:58;;;;;12500:606;13091:4;13084:11;;12334:778;;;;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;2624:572:5:-;2763:45;2790:4;2796:2;2800:7;2763:26;:45::i;:::-;2839:1;2823:18;;:4;:18;;;2819:183;;;2857:40;2889:7;2857:31;:40::i;:::-;2819:183;;;2926:2;2918:10;;:4;:10;;;2914:88;;2944:47;2977:4;2983:7;2944:32;:47::i;:::-;2914:88;2819:183;3029:1;3015:16;;:2;:16;;;3011:179;;;3047:45;3084:7;3047:36;:45::i;:::-;3011:179;;;3119:4;3113:10;;:2;:10;;;3109:81;;3139:40;3167:2;3171:7;3139:27;:40::i;:::-;3109:81;3011:179;2624:572;;;:::o;9078:427:2:-;9171:1;9157:16;;:2;:16;;;;9149:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:16;9237:7;9229;:16::i;:::-;9228:17;9220:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9289:45;9318:1;9322:2;9326:7;9289:20;:45::i;:::-;9362:1;9345:9;:13;9355:2;9345:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9392:2;9373:7;:16;9381:7;9373:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9435:7;9431:2;9410:33;;9427:1;9410:33;;;;;;;;;;;;9454:44;9482:1;9486:2;9490:7;9454:19;:44::i;:::-;9078:427;;:::o;1175:320:8:-;1235:4;1487:1;1465:7;:19;;;:23;1458:30;;1175:320;;;:::o;829:155:12:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;13668:122:2:-;;;;:::o;3902:161:5:-;4005:10;:17;;;;3978:15;:24;3994:7;3978:24;;;;;;;;;;;:44;;;;4032:10;4048:7;4032:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3902:161;:::o;4680:970::-;4942:22;4992:1;4967:22;4984:4;4967:16;:22::i;:::-;:26;;;;:::i;:::-;4942:51;;5003:18;5024:17;:26;5042:7;5024:26;;;;;;;;;;;;5003:47;;5168:14;5154:10;:28;5150:323;;5198:19;5220:12;:18;5233:4;5220:18;;;;;;;;;;;;;;;:34;5239:14;5220:34;;;;;;;;;;;;5198:56;;5302:11;5269:12;:18;5282:4;5269:18;;;;;;;;;;;;;;;:30;5288:10;5269:30;;;;;;;;;;;:44;;;;5418:10;5385:17;:30;5403:11;5385:30;;;;;;;;;;;:43;;;;5184:289;5150:323;5566:17;:26;5584:7;5566:26;;;;;;;;;;;5559:33;;;5609:12;:18;5622:4;5609:18;;;;;;;;;;;;;;;:34;5628:14;5609:34;;;;;;;;;;;5602:41;;;4761:889;;4680:970;;:::o;5938:1061::-;6187:22;6232:1;6212:10;:17;;;;:21;;;;:::i;:::-;6187:46;;6243:18;6264:15;:24;6280:7;6264:24;;;;;;;;;;;;6243:45;;6610:19;6632:10;6643:14;6632:26;;;;;;;;:::i;:::-;;;;;;;;;;6610:48;;6694:11;6669:10;6680;6669:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;6804:10;6773:15;:28;6789:11;6773:28;;;;;;;;;;;:41;;;;6942:15;:24;6958:7;6942:24;;;;;;;;;;;6935:31;;;6976:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6009:990;;;5938:1061;:::o;3490:217::-;3574:14;3591:20;3608:2;3591:16;:20::i;:::-;3574:37;;3648:7;3621:12;:16;3634:2;3621:16;;;;;;;;;;;;;;;:24;3638:6;3621:24;;;;;;;;;;;:34;;;;3694:6;3665:17;:26;3683:7;3665:26;;;;;;;;;;;:35;;;;3564:143;3490:217;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:329::-;5349:6;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5290:329;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:77::-;6287:7;6316:5;6305:16;;6250:77;;;:::o;6333:122::-;6406:24;6424:5;6406:24;:::i;:::-;6399:5;6396:35;6386:63;;6445:1;6442;6435:12;6386:63;6333:122;:::o;6461:139::-;6507:5;6545:6;6532:20;6523:29;;6561:33;6588:5;6561:33;:::i;:::-;6461:139;;;;:::o;6606:329::-;6665:6;6714:2;6702:9;6693:7;6689:23;6685:32;6682:119;;;6720:79;;:::i;:::-;6682:119;6840:1;6865:53;6910:7;6901:6;6890:9;6886:22;6865:53;:::i;:::-;6855:63;;6811:117;6606:329;;;;:::o;6941:118::-;7028:24;7046:5;7028:24;:::i;:::-;7023:3;7016:37;6941:118;;:::o;7065:222::-;7158:4;7196:2;7185:9;7181:18;7173:26;;7209:71;7277:1;7266:9;7262:17;7253:6;7209:71;:::i;:::-;7065:222;;;;:::o;7293:474::-;7361:6;7369;7418:2;7406:9;7397:7;7393:23;7389:32;7386:119;;;7424:79;;:::i;:::-;7386:119;7544:1;7569:53;7614:7;7605:6;7594:9;7590:22;7569:53;:::i;:::-;7559:63;;7515:117;7671:2;7697:53;7742:7;7733:6;7722:9;7718:22;7697:53;:::i;:::-;7687:63;;7642:118;7293:474;;;;;:::o;7773:117::-;7882:1;7879;7872:12;7896:117;8005:1;8002;7995:12;8019:117;8128:1;8125;8118:12;8156:553;8214:8;8224:6;8274:3;8267:4;8259:6;8255:17;8251:27;8241:122;;8282:79;;:::i;:::-;8241:122;8395:6;8382:20;8372:30;;8425:18;8417:6;8414:30;8411:117;;;8447:79;;:::i;:::-;8411:117;8561:4;8553:6;8549:17;8537:29;;8615:3;8607:4;8599:6;8595:17;8585:8;8581:32;8578:41;8575:128;;;8622:79;;:::i;:::-;8575:128;8156:553;;;;;:::o;8715:529::-;8786:6;8794;8843:2;8831:9;8822:7;8818:23;8814:32;8811:119;;;8849:79;;:::i;:::-;8811:119;8997:1;8986:9;8982:17;8969:31;9027:18;9019:6;9016:30;9013:117;;;9049:79;;:::i;:::-;9013:117;9162:65;9219:7;9210:6;9199:9;9195:22;9162:65;:::i;:::-;9144:83;;;;8940:297;8715:529;;;;;:::o;9250:116::-;9320:21;9335:5;9320:21;:::i;:::-;9313:5;9310:32;9300:60;;9356:1;9353;9346:12;9300:60;9250:116;:::o;9372:133::-;9415:5;9453:6;9440:20;9431:29;;9469:30;9493:5;9469:30;:::i;:::-;9372:133;;;;:::o;9511:468::-;9576:6;9584;9633:2;9621:9;9612:7;9608:23;9604:32;9601:119;;;9639:79;;:::i;:::-;9601:119;9759:1;9784:53;9829:7;9820:6;9809:9;9805:22;9784:53;:::i;:::-;9774:63;;9730:117;9886:2;9912:50;9954:7;9945:6;9934:9;9930:22;9912:50;:::i;:::-;9902:60;;9857:115;9511:468;;;;;:::o;9985:117::-;10094:1;10091;10084:12;10108:180;10156:77;10153:1;10146:88;10253:4;10250:1;10243:15;10277:4;10274:1;10267:15;10294:281;10377:27;10399:4;10377:27;:::i;:::-;10369:6;10365:40;10507:6;10495:10;10492:22;10471:18;10459:10;10456:34;10453:62;10450:88;;;10518:18;;:::i;:::-;10450:88;10558:10;10554:2;10547:22;10337:238;10294:281;;:::o;10581:129::-;10615:6;10642:20;;:::i;:::-;10632:30;;10671:33;10699:4;10691:6;10671:33;:::i;:::-;10581:129;;;:::o;10716:307::-;10777:4;10867:18;10859:6;10856:30;10853:56;;;10889:18;;:::i;:::-;10853:56;10927:29;10949:6;10927:29;:::i;:::-;10919:37;;11011:4;11005;11001:15;10993:23;;10716:307;;;:::o;11029:154::-;11113:6;11108:3;11103;11090:30;11175:1;11166:6;11161:3;11157:16;11150:27;11029:154;;;:::o;11189:410::-;11266:5;11291:65;11307:48;11348:6;11307:48;:::i;:::-;11291:65;:::i;:::-;11282:74;;11379:6;11372:5;11365:21;11417:4;11410:5;11406:16;11455:3;11446:6;11441:3;11437:16;11434:25;11431:112;;;11462:79;;:::i;:::-;11431:112;11552:41;11586:6;11581:3;11576;11552:41;:::i;:::-;11272:327;11189:410;;;;;:::o;11618:338::-;11673:5;11722:3;11715:4;11707:6;11703:17;11699:27;11689:122;;11730:79;;:::i;:::-;11689:122;11847:6;11834:20;11872:78;11946:3;11938:6;11931:4;11923:6;11919:17;11872:78;:::i;:::-;11863:87;;11679:277;11618:338;;;;:::o;11962:943::-;12057:6;12065;12073;12081;12130:3;12118:9;12109:7;12105:23;12101:33;12098:120;;;12137:79;;:::i;:::-;12098:120;12257:1;12282:53;12327:7;12318:6;12307:9;12303:22;12282:53;:::i;:::-;12272:63;;12228:117;12384:2;12410:53;12455:7;12446:6;12435:9;12431:22;12410:53;:::i;:::-;12400:63;;12355:118;12512:2;12538:53;12583:7;12574:6;12563:9;12559:22;12538:53;:::i;:::-;12528:63;;12483:118;12668:2;12657:9;12653:18;12640:32;12699:18;12691:6;12688:30;12685:117;;;12721:79;;:::i;:::-;12685:117;12826:62;12880:7;12871:6;12860:9;12856:22;12826:62;:::i;:::-;12816:72;;12611:287;11962:943;;;;;;;:::o;12911:474::-;12979:6;12987;13036:2;13024:9;13015:7;13011:23;13007:32;13004:119;;;13042:79;;:::i;:::-;13004:119;13162:1;13187:53;13232:7;13223:6;13212:9;13208:22;13187:53;:::i;:::-;13177:63;;13133:117;13289:2;13315:53;13360:7;13351:6;13340:9;13336:22;13315:53;:::i;:::-;13305:63;;13260:118;12911:474;;;;;:::o;13391:180::-;13439:77;13436:1;13429:88;13536:4;13533:1;13526:15;13560:4;13557:1;13550:15;13577:320;13621:6;13658:1;13652:4;13648:12;13638:22;;13705:1;13699:4;13695:12;13726:18;13716:81;;13782:4;13774:6;13770:17;13760:27;;13716:81;13844:2;13836:6;13833:14;13813:18;13810:38;13807:84;;;13863:18;;:::i;:::-;13807:84;13628:269;13577:320;;;:::o;13903:231::-;14043:34;14039:1;14031:6;14027:14;14020:58;14112:14;14107:2;14099:6;14095:15;14088:39;13903:231;:::o;14140:366::-;14282:3;14303:67;14367:2;14362:3;14303:67;:::i;:::-;14296:74;;14379:93;14468:3;14379:93;:::i;:::-;14497:2;14492:3;14488:12;14481:19;;14140:366;;;:::o;14512:419::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14765:9;14759:4;14755:20;14751:1;14740:9;14736:17;14729:47;14793:131;14919:4;14793:131;:::i;:::-;14785:139;;14512:419;;;:::o;14937:220::-;15077:34;15073:1;15065:6;15061:14;15054:58;15146:3;15141:2;15133:6;15129:15;15122:28;14937:220;:::o;15163:366::-;15305:3;15326:67;15390:2;15385:3;15326:67;:::i;:::-;15319:74;;15402:93;15491:3;15402:93;:::i;:::-;15520:2;15515:3;15511:12;15504:19;;15163:366;;;:::o;15535:419::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15788:9;15782:4;15778:20;15774:1;15763:9;15759:17;15752:47;15816:131;15942:4;15816:131;:::i;:::-;15808:139;;15535:419;;;:::o;15960:243::-;16100:34;16096:1;16088:6;16084:14;16077:58;16169:26;16164:2;16156:6;16152:15;16145:51;15960:243;:::o;16209:366::-;16351:3;16372:67;16436:2;16431:3;16372:67;:::i;:::-;16365:74;;16448:93;16537:3;16448:93;:::i;:::-;16566:2;16561:3;16557:12;16550:19;;16209:366;;;:::o;16581:419::-;16747:4;16785:2;16774:9;16770:18;16762:26;;16834:9;16828:4;16824:20;16820:1;16809:9;16805:17;16798:47;16862:131;16988:4;16862:131;:::i;:::-;16854:139;;16581:419;;;:::o;17006:236::-;17146:34;17142:1;17134:6;17130:14;17123:58;17215:19;17210:2;17202:6;17198:15;17191:44;17006:236;:::o;17248:366::-;17390:3;17411:67;17475:2;17470:3;17411:67;:::i;:::-;17404:74;;17487:93;17576:3;17487:93;:::i;:::-;17605:2;17600:3;17596:12;17589:19;;17248:366;;;:::o;17620:419::-;17786:4;17824:2;17813:9;17809:18;17801:26;;17873:9;17867:4;17863:20;17859:1;17848:9;17844:17;17837:47;17901:131;18027:4;17901:131;:::i;:::-;17893:139;;17620:419;;;:::o;18045:230::-;18185:34;18181:1;18173:6;18169:14;18162:58;18254:13;18249:2;18241:6;18237:15;18230:38;18045:230;:::o;18281:366::-;18423:3;18444:67;18508:2;18503:3;18444:67;:::i;:::-;18437:74;;18520:93;18609:3;18520:93;:::i;:::-;18638:2;18633:3;18629:12;18622:19;;18281:366;;;:::o;18653:419::-;18819:4;18857:2;18846:9;18842:18;18834:26;;18906:9;18900:4;18896:20;18892:1;18881:9;18877:17;18870:47;18934:131;19060:4;18934:131;:::i;:::-;18926:139;;18653:419;;;:::o;19078:234::-;19218:34;19214:1;19206:6;19202:14;19195:58;19287:17;19282:2;19274:6;19270:15;19263:42;19078:234;:::o;19318:366::-;19460:3;19481:67;19545:2;19540:3;19481:67;:::i;:::-;19474:74;;19557:93;19646:3;19557:93;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19318:366;;;:::o;19690:419::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19943:9;19937:4;19933:20;19929:1;19918:9;19914:17;19907:47;19971:131;20097:4;19971:131;:::i;:::-;19963:139;;19690:419;;;:::o;20115:182::-;20255:34;20251:1;20243:6;20239:14;20232:58;20115:182;:::o;20303:366::-;20445:3;20466:67;20530:2;20525:3;20466:67;:::i;:::-;20459:74;;20542:93;20631:3;20542:93;:::i;:::-;20660:2;20655:3;20651:12;20644:19;;20303:366;;;:::o;20675:419::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:231::-;21240:34;21236:1;21228:6;21224:14;21217:58;21309:14;21304:2;21296:6;21292:15;21285:39;21100:231;:::o;21337:366::-;21479:3;21500:67;21564:2;21559:3;21500:67;:::i;:::-;21493:74;;21576:93;21665:3;21576:93;:::i;:::-;21694:2;21689:3;21685:12;21678:19;;21337:366;;;:::o;21709:419::-;21875:4;21913:2;21902:9;21898:18;21890:26;;21962:9;21956:4;21952:20;21948:1;21937:9;21933:17;21926:47;21990:131;22116:4;21990:131;:::i;:::-;21982:139;;21709:419;;;:::o;22134:180::-;22182:77;22179:1;22172:88;22279:4;22276:1;22269:15;22303:4;22300:1;22293:15;22320:228;22460:34;22456:1;22448:6;22444:14;22437:58;22529:11;22524:2;22516:6;22512:15;22505:36;22320:228;:::o;22554:366::-;22696:3;22717:67;22781:2;22776:3;22717:67;:::i;:::-;22710:74;;22793:93;22882:3;22793:93;:::i;:::-;22911:2;22906:3;22902:12;22895:19;;22554:366;;;:::o;22926:419::-;23092:4;23130:2;23119:9;23115:18;23107:26;;23179:9;23173:4;23169:20;23165:1;23154:9;23150:17;23143:47;23207:131;23333:4;23207:131;:::i;:::-;23199:139;;22926:419;;;:::o;23351:177::-;23491:29;23487:1;23479:6;23475:14;23468:53;23351:177;:::o;23534:366::-;23676:3;23697:67;23761:2;23756:3;23697:67;:::i;:::-;23690:74;;23773:93;23862:3;23773:93;:::i;:::-;23891:2;23886:3;23882:12;23875:19;;23534:366;;;:::o;23906:419::-;24072:4;24110:2;24099:9;24095:18;24087:26;;24159:9;24153:4;24149:20;24145:1;24134:9;24130:17;24123:47;24187:131;24313:4;24187:131;:::i;:::-;24179:139;;23906:419;;;:::o;24331:180::-;24379:77;24376:1;24369:88;24476:4;24473:1;24466:15;24500:4;24497:1;24490:15;24517:305;24557:3;24576:20;24594:1;24576:20;:::i;:::-;24571:25;;24610:20;24628:1;24610:20;:::i;:::-;24605:25;;24764:1;24696:66;24692:74;24689:1;24686:81;24683:107;;;24770:18;;:::i;:::-;24683:107;24814:1;24811;24807:9;24800:16;;24517:305;;;;:::o;24828:173::-;24968:25;24964:1;24956:6;24952:14;24945:49;24828:173;:::o;25007:366::-;25149:3;25170:67;25234:2;25229:3;25170:67;:::i;:::-;25163:74;;25246:93;25335:3;25246:93;:::i;:::-;25364:2;25359:3;25355:12;25348:19;;25007:366;;;:::o;25379:419::-;25545:4;25583:2;25572:9;25568:18;25560:26;;25632:9;25626:4;25622:20;25618:1;25607:9;25603:17;25596:47;25660:131;25786:4;25660:131;:::i;:::-;25652:139;;25379:419;;;:::o;25804:229::-;25944:34;25940:1;25932:6;25928:14;25921:58;26013:12;26008:2;26000:6;25996:15;25989:37;25804:229;:::o;26039:366::-;26181:3;26202:67;26266:2;26261:3;26202:67;:::i;:::-;26195:74;;26278:93;26367:3;26278:93;:::i;:::-;26396:2;26391:3;26387:12;26380:19;;26039:366;;;:::o;26411:419::-;26577:4;26615:2;26604:9;26600:18;26592:26;;26664:9;26658:4;26654:20;26650:1;26639:9;26635:17;26628:47;26692:131;26818:4;26692:131;:::i;:::-;26684:139;;26411:419;;;:::o;26836:231::-;26976:34;26972:1;26964:6;26960:14;26953:58;27045:14;27040:2;27032:6;27028:15;27021:39;26836:231;:::o;27073:366::-;27215:3;27236:67;27300:2;27295:3;27236:67;:::i;:::-;27229:74;;27312:93;27401:3;27312:93;:::i;:::-;27430:2;27425:3;27421:12;27414:19;;27073:366;;;:::o;27445:419::-;27611:4;27649:2;27638:9;27634:18;27626:26;;27698:9;27692:4;27688:20;27684:1;27673:9;27669:17;27662:47;27726:131;27852:4;27726:131;:::i;:::-;27718:139;;27445:419;;;:::o;27870:224::-;28010:34;28006:1;27998:6;27994:14;27987:58;28079:7;28074:2;28066:6;28062:15;28055:32;27870:224;:::o;28100:366::-;28242:3;28263:67;28327:2;28322:3;28263:67;:::i;:::-;28256:74;;28339:93;28428:3;28339:93;:::i;:::-;28457:2;28452:3;28448:12;28441:19;;28100:366;;;:::o;28472:419::-;28638:4;28676:2;28665:9;28661:18;28653:26;;28725:9;28719:4;28715:20;28711:1;28700:9;28696:17;28689:47;28753:131;28879:4;28753:131;:::i;:::-;28745:139;;28472:419;;;:::o;28897:223::-;29037:34;29033:1;29025:6;29021:14;29014:58;29106:6;29101:2;29093:6;29089:15;29082:31;28897:223;:::o;29126:366::-;29268:3;29289:67;29353:2;29348:3;29289:67;:::i;:::-;29282:74;;29365:93;29454:3;29365:93;:::i;:::-;29483:2;29478:3;29474:12;29467:19;;29126:366;;;:::o;29498:419::-;29664:4;29702:2;29691:9;29687:18;29679:26;;29751:9;29745:4;29741:20;29737:1;29726:9;29722:17;29715:47;29779:131;29905:4;29779:131;:::i;:::-;29771:139;;29498:419;;;:::o;29923:191::-;29963:4;29983:20;30001:1;29983:20;:::i;:::-;29978:25;;30017:20;30035:1;30017:20;:::i;:::-;30012:25;;30056:1;30053;30050:8;30047:34;;;30061:18;;:::i;:::-;30047:34;30106:1;30103;30099:9;30091:17;;29923:191;;;;:::o;30120:148::-;30222:11;30259:3;30244:18;;30120:148;;;;:::o;30274:173::-;30414:25;30410:1;30402:6;30398:14;30391:49;30274:173;:::o;30453:402::-;30613:3;30634:85;30716:2;30711:3;30634:85;:::i;:::-;30627:92;;30728:93;30817:3;30728:93;:::i;:::-;30846:2;30841:3;30837:12;30830:19;;30453:402;;;:::o;30861:377::-;30967:3;30995:39;31028:5;30995:39;:::i;:::-;31050:89;31132:6;31127:3;31050:89;:::i;:::-;31043:96;;31148:52;31193:6;31188:3;31181:4;31174:5;31170:16;31148:52;:::i;:::-;31225:6;31220:3;31216:16;31209:23;;30971:267;30861:377;;;;:::o;31244:167::-;31384:19;31380:1;31372:6;31368:14;31361:43;31244:167;:::o;31417:402::-;31577:3;31598:85;31680:2;31675:3;31598:85;:::i;:::-;31591:92;;31692:93;31781:3;31692:93;:::i;:::-;31810:2;31805:3;31801:12;31794:19;;31417:402;;;:::o;31825:967::-;32207:3;32229:148;32373:3;32229:148;:::i;:::-;32222:155;;32394:95;32485:3;32476:6;32394:95;:::i;:::-;32387:102;;32506:148;32650:3;32506:148;:::i;:::-;32499:155;;32671:95;32762:3;32753:6;32671:95;:::i;:::-;32664:102;;32783:3;32776:10;;31825:967;;;;;:::o;32798:175::-;32938:27;32934:1;32926:6;32922:14;32915:51;32798:175;:::o;32979:366::-;33121:3;33142:67;33206:2;33201:3;33142:67;:::i;:::-;33135:74;;33218:93;33307:3;33218:93;:::i;:::-;33336:2;33331:3;33327:12;33320:19;;32979:366;;;:::o;33351:419::-;33517:4;33555:2;33544:9;33540:18;33532:26;;33604:9;33598:4;33594:20;33590:1;33579:9;33575:17;33568:47;33632:131;33758:4;33632:131;:::i;:::-;33624:139;;33351:419;;;:::o;33776:237::-;33916:34;33912:1;33904:6;33900:14;33893:58;33985:20;33980:2;33972:6;33968:15;33961:45;33776:237;:::o;34019:366::-;34161:3;34182:67;34246:2;34241:3;34182:67;:::i;:::-;34175:74;;34258:93;34347:3;34258:93;:::i;:::-;34376:2;34371:3;34367:12;34360:19;;34019:366;;;:::o;34391:419::-;34557:4;34595:2;34584:9;34580:18;34572:26;;34644:9;34638:4;34634:20;34630:1;34619:9;34615:17;34608:47;34672:131;34798:4;34672:131;:::i;:::-;34664:139;;34391:419;;;:::o;34816:172::-;34956:24;34952:1;34944:6;34940:14;34933:48;34816:172;:::o;34994:366::-;35136:3;35157:67;35221:2;35216:3;35157:67;:::i;:::-;35150:74;;35233:93;35322:3;35233:93;:::i;:::-;35351:2;35346:3;35342:12;35335:19;;34994:366;;;:::o;35366:419::-;35532:4;35570:2;35559:9;35555:18;35547:26;;35619:9;35613:4;35609:20;35605:1;35594:9;35590:17;35583:47;35647:131;35773:4;35647:131;:::i;:::-;35639:139;;35366:419;;;:::o;35791:348::-;35831:7;35854:20;35872:1;35854:20;:::i;:::-;35849:25;;35888:20;35906:1;35888:20;:::i;:::-;35883:25;;36076:1;36008:66;36004:74;36001:1;35998:81;35993:1;35986:9;35979:17;35975:105;35972:131;;;36083:18;;:::i;:::-;35972:131;36131:1;36128;36124:9;36113:20;;35791:348;;;;:::o;36145:171::-;36184:3;36207:24;36225:5;36207:24;:::i;:::-;36198:33;;36253:4;36246:5;36243:15;36240:41;;;36261:18;;:::i;:::-;36240:41;36308:1;36301:5;36297:13;36290:20;;36145:171;;;:::o;36322:182::-;36462:34;36458:1;36450:6;36446:14;36439:58;36322:182;:::o;36510:366::-;36652:3;36673:67;36737:2;36732:3;36673:67;:::i;:::-;36666:74;;36749:93;36838:3;36749:93;:::i;:::-;36867:2;36862:3;36858:12;36851:19;;36510:366;;;:::o;36882:419::-;37048:4;37086:2;37075:9;37071:18;37063:26;;37135:9;37129:4;37125:20;37121:1;37110:9;37106:17;37099:47;37163:131;37289:4;37163:131;:::i;:::-;37155:139;;36882:419;;;:::o;37307:98::-;37358:6;37392:5;37386:12;37376:22;;37307:98;;;:::o;37411:168::-;37494:11;37528:6;37523:3;37516:19;37568:4;37563:3;37559:14;37544:29;;37411:168;;;;:::o;37585:360::-;37671:3;37699:38;37731:5;37699:38;:::i;:::-;37753:70;37816:6;37811:3;37753:70;:::i;:::-;37746:77;;37832:52;37877:6;37872:3;37865:4;37858:5;37854:16;37832:52;:::i;:::-;37909:29;37931:6;37909:29;:::i;:::-;37904:3;37900:39;37893:46;;37675:270;37585:360;;;;:::o;37951:640::-;38146:4;38184:3;38173:9;38169:19;38161:27;;38198:71;38266:1;38255:9;38251:17;38242:6;38198:71;:::i;:::-;38279:72;38347:2;38336:9;38332:18;38323:6;38279:72;:::i;:::-;38361;38429:2;38418:9;38414:18;38405:6;38361:72;:::i;:::-;38480:9;38474:4;38470:20;38465:2;38454:9;38450:18;38443:48;38508:76;38579:4;38570:6;38508:76;:::i;:::-;38500:84;;37951:640;;;;;;;:::o;38597:141::-;38653:5;38684:6;38678:13;38669:22;;38700:32;38726:5;38700:32;:::i;:::-;38597:141;;;;:::o;38744:349::-;38813:6;38862:2;38850:9;38841:7;38837:23;38833:32;38830:119;;;38868:79;;:::i;:::-;38830:119;38988:1;39013:63;39068:7;39059:6;39048:9;39044:22;39013:63;:::i;:::-;39003:73;;38959:127;38744:349;;;;:::o;39099:182::-;39239:34;39235:1;39227:6;39223:14;39216:58;39099:182;:::o;39287:366::-;39429:3;39450:67;39514:2;39509:3;39450:67;:::i;:::-;39443:74;;39526:93;39615:3;39526:93;:::i;:::-;39644:2;39639:3;39635:12;39628:19;;39287:366;;;:::o;39659:419::-;39825:4;39863:2;39852:9;39848:18;39840:26;;39912:9;39906:4;39902:20;39898:1;39887:9;39883:17;39876:47;39940:131;40066:4;39940:131;:::i;:::-;39932:139;;39659:419;;;:::o;40084:178::-;40224:30;40220:1;40212:6;40208:14;40201:54;40084:178;:::o;40268:366::-;40410:3;40431:67;40495:2;40490:3;40431:67;:::i;:::-;40424:74;;40507:93;40596:3;40507:93;:::i;:::-;40625:2;40620:3;40616:12;40609:19;;40268:366;;;:::o;40640:419::-;40806:4;40844:2;40833:9;40829:18;40821:26;;40893:9;40887:4;40883:20;40879:1;40868:9;40864:17;40857:47;40921:131;41047:4;40921:131;:::i;:::-;40913:139;;40640:419;;;:::o;41065:180::-;41113:77;41110:1;41103:88;41210:4;41207:1;41200:15;41234:4;41231:1;41224:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract NFTSbt is AccessControl, ERC721Enumerable {\n using Counters for Counters.Counter;\n string private _baseTokenURI = \"https://market.cebg.games/api/nft/info/\";\n bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n uint256 public immutable supplyLimit;\n\n Counters.Counter private _tokenIdCounter;\n\n constructor(\n string memory _name,\n string memory _symbol,\n uint256 _supplyLimt\n ) ERC721(_name, _symbol) {\n supplyLimit = _supplyLimt;\n _setRoleAdmin(BURN_ROLE, DEFAULT_ADMIN_ROLE);\n _setRoleAdmin(MINTER_ROLE, DEFAULT_ADMIN_ROLE);\n\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _setupRole(MINTER_ROLE, msg.sender);\n _setupRole(BURN_ROLE, msg.sender);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(AccessControl, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721Enumerable) {\n require(from == address(0) || to == address(0), \"Token not transferable\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(\n string calldata baseTokenURI\n ) external onlyRole(DEFAULT_ADMIN_ROLE) {\n _baseTokenURI = baseTokenURI;\n }\n\n /**\n * @dev one type nft has same tokenURI\n */\n function tokenURI(\n uint256 tokenId\n ) public view virtual override returns (string memory) {\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? baseURI : \"\";\n }\n\n function mint(address to) external onlyRole(MINTER_ROLE) returns (uint256) {\n require(to != address(0), \"Cannot mint to zero address\");\n if (supplyLimit > 0) {\n require((totalSupply() + 1) <= supplyLimit, \"Exceed the total supply\");\n }\n _tokenIdCounter.increment();\n uint256 tokenId = _tokenIdCounter.current();\n _safeMint(to, tokenId);\n return tokenId;\n }\n\n function burn(uint256 tokenId) external onlyRole(BURN_ROLE) {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"Caller is not owner nor approved\"\n );\n _burn(tokenId);\n }\n\n /**\n * @dev Grant mint role to address\n */\n function setMintRole(address to) external {\n grantRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Remove mint role to address\n */\n function removeMintRole(address to) external {\n revokeRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Grant burn role to address\n */\n function setBurnRole(address to) external {\n grantRole(BURN_ROLE, to);\n }\n\n /**\n * @dev Remove burn role to address\n */\n function removeBurnRole(address to) external {\n revokeRole(BURN_ROLE, to);\n }\n}\n", "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/tokens/erc721/NFTSbt.sol", "ast": { "absolutePath": "project:/contracts/tokens/erc721/NFTSbt.sol", @@ -23418,20 +23418,70 @@ ] } }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2623, + "name": "_tokenIdCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "2344:15:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2100_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "increment", + "nodeType": "MemberAccess", + "referencedDeclaration": 2126, + "src": "2344:25:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2100_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2100_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer)" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2344:27:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2627, + "nodeType": "ExpressionStatement", + "src": "2344:27:14" + }, { "assignments": [ - 2624 + 2629 ], "declarations": [ { "constant": false, - "id": 2624, + "id": 2629, "mutability": "mutable", "name": "tokenId", - "nameLocation": "2352:7:14", + "nameLocation": "2385:7:14", "nodeType": "VariableDeclaration", "scope": 2641, - "src": "2344:15:14", + "src": "2377:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23439,10 +23489,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2623, + "id": 2628, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2344:7:14", + "src": "2377:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23451,67 +23501,18 @@ "visibility": "internal" } ], - "id": 2628, + "id": 2633, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 2625, + "id": 2630, "name": "_tokenIdCounter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2438, - "src": "2362:15:14", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$2100_storage", - "typeString": "struct Counters.Counter storage ref" - } - }, - "id": 2626, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "current", - "nodeType": "MemberAccess", - "referencedDeclaration": 2112, - "src": "2362:23:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2100_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2100_storage_ptr_$", - "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" - } - }, - "id": 2627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2362:25:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2344:43:14" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 2629, - "name": "_tokenIdCounter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2438, - "src": "2393:15:14", + "src": "2395:15:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Counter_$2100_storage", "typeString": "struct Counters.Counter storage ref" @@ -23522,13 +23523,13 @@ "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "increment", + "memberName": "current", "nodeType": "MemberAccess", - "referencedDeclaration": 2126, - "src": "2393:25:14", + "referencedDeclaration": 2112, + "src": "2395:23:14", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2100_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2100_storage_ptr_$", - "typeString": "function (struct Counters.Counter storage pointer)" + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2100_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2100_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" } }, "id": 2632, @@ -23539,16 +23540,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2393:27:14", + "src": "2395:25:14", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 2633, - "nodeType": "ExpressionStatement", - "src": "2393:27:14" + "nodeType": "VariableDeclarationStatement", + "src": "2377:43:14" }, { "expression": { @@ -23570,7 +23570,7 @@ "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2624, + "referencedDeclaration": 2629, "src": "2440:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -23628,7 +23628,7 @@ "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2624, + "referencedDeclaration": 2629, "src": "2461:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -24608,7 +24608,7 @@ }, "networks": {}, "schemaVersion": "3.4.11", - "updatedAt": "2023-06-14T06:00:00.491Z", + "updatedAt": "2023-06-14T06:31:28.726Z", "devdoc": { "kind": "dev", "methods": { diff --git a/contracts/tokens/erc721/NFTSbt.sol b/contracts/tokens/erc721/NFTSbt.sol index ae13bdc..e07d358 100644 --- a/contracts/tokens/erc721/NFTSbt.sol +++ b/contracts/tokens/erc721/NFTSbt.sol @@ -80,8 +80,8 @@ contract NFTSbt is AccessControl, ERC721Enumerable { if (supplyLimit > 0) { require((totalSupply() + 1) <= supplyLimit, "Exceed the total supply"); } - uint256 tokenId = _tokenIdCounter.current(); _tokenIdCounter.increment(); + uint256 tokenId = _tokenIdCounter.current(); _safeMint(to, tokenId); return tokenId; } diff --git a/migrations/8_deploy_claim_activity.js b/migrations/8_deploy_claim_activity.js index d224f2e..00f584c 100644 --- a/migrations/8_deploy_claim_activity.js +++ b/migrations/8_deploy_claim_activity.js @@ -1,6 +1,7 @@ const Factory = artifacts.require("activity/ClaimBoxFactory"); const Box = artifacts.require("tokens/erc721/NFTSbt"); const base = require("../scripts/base"); +const config = require("../config/config"); module.exports = async function (deployer, network, accounts) { const name = "Gacha"; @@ -38,4 +39,7 @@ module.exports = async function (deployer, network, accounts) { await factoryInstance.addTokenSupport(boxInstance.address); console.log(`success add token support to: ${boxInstance.address}`); + + await factoryInstance.updateExecutor(config.admins.admin); + console.log(`success update executor to: ${config.admins.admin}`); }; diff --git a/out_arbitrum_testnet_dev.json b/out_arbitrum_testnet_dev.json index 06d6b1c..f4b7af6 100644 --- a/out_arbitrum_testnet_dev.json +++ b/out_arbitrum_testnet_dev.json @@ -57,12 +57,12 @@ "name": "NFTSbt", "type": "erc721", "json": "assets/contracts/NFTSbt.json", - "address": "0x46675eecD0Bb2dcdE3f9b76A11EE7f6DfB174EcA" + "address": "0x86A8E6a23039c28b57C306b25dF257817957F132" }, { "name": "ClaimBoxFactory", "type": "logic", "json": "assets/contracts/ClaimBoxFactory.json", - "address": "0xc63ed18feE4C3D62b87DfCE5b5F4DafD8905D9B2" + "address": "0xF06038807A700d67be3AA8a7D752761EaC88ab82" } ]