{"name":"Solidity","scopeName":"source.solidity","patterns":[{"name":"scope","begin":"\\b(assembly)(?:\\s*\\((\\\".*?\\\")\\))?\\s*\\{","end":"\\}","patterns":[{"include":"#assembly"}],"beginCaptures":{"1":{"name":"keyword"},"2":{"name":"string.quoted"}}},{"match":"\\b(?\u003c!\\.)(addmod|mulmod|keccak256|sha256|sha3|ripemd160|ecrecover)\\s*\\(","captures":{"1":{"name":"support.type"}}},{"include":"#everything"}],"repository":{"assembly":{"patterns":[{"match":"\\b(?\u003c!\\.)(stop|add|sub|mul|div|sdiv|mod|smod|exp|not|lt|gt|slt|sgt|eq|iszero|and|or|xor|byte|shl|shr|sar|addmod|mulmod|signextend|keccak256|pc|pop|mload|mstore|mstore8|sload|sstore|msize|gas|address|balance|selfbalance|caller|callvalue|calldataload|calldatasize|calldatacopy|codesize|codecopy|extcodesize|extcodecopy|returndatasize|returndatacopy|extcodehash|create|create2|call|callcode|delegatecall|staticcall|return|revert|selfdestruct|invalid|log0|log1|log2|log3|log4|chainid|basefee|origin|gasprice|blockhash|coinbase|timestamp|number|difficulty|gaslimit)\\s*\\(","captures":{"1":{"name":"entity.name.function"}}},{"name":"keyword","match":"\\b(let|switch|case|default)\\b"},{"name":"scope","begin":"\\{","end":"\\}","patterns":[{"include":"#assembly"}]},{"include":"#everything"}]},"comments":{"patterns":[{"name":"comment","match":"\\/\\/.*"},{"name":"comment","begin":"(\\/\\*)","end":"(\\*\\/)"}]},"everything":{"patterns":[{"include":"#comments"},{"name":"keyword","match":"\\b(event|enum)\\s+([A-Za-z_]\\w*)\\b","captures":{"2":{"name":"entity.name.function"}}},{"name":"scope","begin":"\\b(contract|interface|library)\\s+([A-Za-z_]\\w*)(?:\\s+(is)\\s+)?","end":"\\{","patterns":[{"name":"entity.name.function","match":"[A-Za-z_]\\w*"},{"include":"#numbers"}],"beginCaptures":{"1":{"name":"keyword"},"2":{"name":"entity.name.function"},"3":{"name":"keyword"}}},{"name":"keyword","match":"\\b(constructor|error|using|struct|type|modifier|fallback)(\\s+[A-Za-z_]\\w*)?\\b","captures":{"2":{"name":"entity.name.function"}}},{"name":"keyword","match":"\\b(function)(\\s+[A-Za-z_]\\w*)?\\b","captures":{"2":{"name":"entity.name.function"}}},{"match":"\\.(length|selector)\\b","captures":{"1":{"name":"markup.italic"}}},{"name":"markup.italic","match":"\\bthis\\b"},{"name":"markup.italic","match":"\\bsuper\\b"},{"match":"\\b(msg|block|tx|bytes|string)\\.([A-Za-z_]\\w*)\\b","captures":{"1":{"name":"support.type"},"2":{"name":"support.type"}}},{"match":"\\b(?:(indexed|memory|storage|calldata|payable|immutable)\\s*(\\b[A-Za-z_]\\w*)?\\s*)(?=[,\\)\\n])","captures":{"1":{"name":"keyword"},"2":{"name":"variable.parameter"}}},{"name":"constant.language","match":"\\b(true|false)\\b"},{"match":"\\b(payable)\\s*\\(","captures":{"1":{"name":"constant.language"}}},{"match":"\\b(from)\\s*(?=[\\'\\\"])","captures":{"1":{"name":"keyword"}}},{"match":"\\b(?:[A-Za-z_]\\w*)\\s+(as)\\s+(?:[A-Za-z_]\\w*)","captures":{"1":{"name":"keyword"}}},{"match":"\\b(global);","captures":{"1":{"name":"keyword"}}},{"name":"keyword","match":"\\b(var|import|solidity|constant|pragma\\s*(?:experimental|abicoder)?|mapping|payable|storage|memory|calldata|if|else|for|while|do|break|continue|returns?|try|catch|private|public|pure|view|internal|immutable|external|virtual|override|abstract|suicide|emit|is|throw|revert|assert|require|receive|delete)\\b"},{"include":"#numbers"},{"name":"constant.numeric","match":"\\b(0[xX][a-fA-F0-9]+)\\b"},{"name":"keyword.operator","match":"(=|:=|!|\u003e|\u003c|\\||\u0026|\\?|\\^|~|\\*|\\+|\\-|\\/|\\%)"},{"name":"markup.italic","match":"(\\bhex\\b|\\bunicode\\b)"},{"name":"keyword.operator","match":"\\s\\:\\s"},{"name":"support.type","match":"\\bnow\\b"},{"name":"keyword","match":"\\b_;"},{"name":"support.type","match":"\\b(abi)\\.([A-Za-z_]\\w*)\\b"},{"match":"\\b(blockhash|gasleft)\\s*\\(","captures":{"1":{"name":"support.type"}}},{"match":"\\.(call|delegatecall|staticcall)\\s*[\\(\\{]","captures":{"1":{"name":"support.type"}}},{"match":"(?:\\.|(new\\s+))([A-Za-z_]\\w*)\\{","captures":{"1":{"name":"keyword"},"2":{"name":"entity.name.function"}}},{"match":"\\b(?:(address(?:\\s+payable)?|I?ERC[\\dA-Za-z_]\\w*|string|bytes?\\d*|int\\d*|uint\\d*|bool|u?fixed\\d+x\\d+)|([A-Za-z_]\\w*))\\s*(?:\\[(\\d*)\\])?\\s*(?:\\[(\\d*)\\])?\\s*(?:(indexed|memory|storage|calldata|payable|immutable)?\\s*(\\b[A-Za-z_]\\w*)?\\s*)?(?=[,\\)\\n])","captures":{"1":{"name":"constant.language"},"2":{"name":"scope"},"3":{"name":"constant.numeric"},"4":{"name":"constant.numeric"},"5":{"name":"keyword"},"6":{"name":"variable.parameter"}}},{"match":"\\b(address(?:\\s*payable)?|I?ERC[\\dA-Za-z_]\\w*|string|bytes?\\d*|int\\d*|uint\\d*|bool|u?fixed\\d+x\\d+)\\b(?:(?:\\s*\\[(\\d*)\\])?(?:\\s*\\[(\\d*)\\])?(?:\\s*\\[(\\d*)\\])?\\s*((?:private\\s|public\\s|internal\\s|external\\s|constant\\s|immutable\\s|memory\\s|storage\\s)*)\\s*(?:[A-Za-z_]\\w*)\\s*(\\=))?","captures":{"1":{"name":"constant.language"},"2":{"name":"constant.numeric"},"3":{"name":"constant.numeric"},"4":{"name":"constant.numeric"},"5":{"name":"keyword"},"6":{"name":"keyword"}}},{"match":"\\b([A-Za-z_]\\w*)(?:\\s*\\[(\\d*)\\]\\s*)?(?:\\s*\\[(\\d*)\\]\\s*)?\\(","captures":{"1":{"name":"entity.name.function"},"2":{"name":"constant.numeric"},"3":{"name":"constant.numeric"}}},{"match":"\\b(wei|gwei|ether|seconds|minutes|hours|days|weeks)\\b","captures":{"1":{"name":"support.type"}}},{"name":"keyword","match":"\\bnew\\b"},{"name":"keyword","match":"\\banonymous\\b"},{"name":"keyword","match":"\\bunchecked\\b"},{"name":"string.quoted","begin":"(?\u003c!\\\\)[\\\"\\']","end":"(?\u003c!\\\\)[\\\"\\']","patterns":[{"include":"#string"}]}]},"numbers":{"patterns":[{"name":"constant.numeric","match":"\\b(?:[+-]?\\.?\\d[\\d_eE]*)(?:\\.\\d+[\\deE]*)?\\b"}]},"string":{"patterns":[{"name":"constant.character.escape","match":"\\\\\""},{"name":"constant.character.escape","match":"\\\\'"},{"name":"string.quoted","match":"."}]}}}