Hats can be overwritten
Child hats can be created under a non-existent admin. Creating the admin allows overwriting the properties of the child-hats, which goes against the immutability of hats.\\n```\\n    function _createHat(\\n        uint256 _id,\\n        string calldata _details,\\n        uint32 _maxSupply,\\n        address _eligibility,\\n        address _toggle,\\n        bool _mutable,\\n        string calldata _imageURI\\n    ) internal returns (Hat memory hat) {\\n        hat.details = _details;\\n        hat.maxSupply = _maxSupply;\\n        hat.eligibility = _eligibility;\\n        hat.toggle = _toggle;\\n        hat.imageURI = _imageURI;\\n        hat.config = _mutable ? uint96(3 << 94) : uint96(1 << 95);\\n        _hats[_id] = hat;\\n\\n\\n        emit HatCreated(_id, _details, _maxSupply, _eligibility, _toggle, _mutable, _imageURI);\\n    }\\n```\\n\\nNow, the next eligible hat for this admin is 1.1.1, which is a hat that was already created and minted. This can allow the admin to change the properties of the child, even if the child hat was previously immutable. This contradicts the immutability of hats, and can be used to rug users in multiple ways, and is thus classified as high severity. This attack can be carried out by any hat wearer on their child tree, mutating their properties.
Check if admin exists, before minting by checking any of its properties against default values\\n```\\nrequire(_hats[admin].maxSupply > 0, "Admin not created")\\n```\\n
```\\n    function _createHat(\\n        uint256 _id,\\n        string calldata _details,\\n        uint32 _maxSupply,\\n        address _eligibility,\\n        address _toggle,\\n        bool _mutable,\\n        string calldata _imageURI\\n    ) internal returns (Hat memory hat) {\\n        hat.details = _details;\\n        hat.maxSupply = _maxSupply;\\n        hat.eligibility = _eligibility;\\n        hat.toggle = _toggle;\\n        hat.imageURI = _imageURI;\\n        hat.config = _mutable ? uint96(3 << 94) : uint96(1 << 95);\\n        _hats[_id] = hat;\\n\\n\\n        emit HatCreated(_id, _details, _maxSupply, _eligibility, _toggle, _mutable, _imageURI);\\n    }\\n```\\n