'pragma solidity' Keyword
' '           Text.Whitespace
'^'           Operator
'0.4.20'      Keyword
';'           Punctuation
'\n\n'        Text.Whitespace

'pragma solidity' Keyword
' '           Text.Whitespace
'>='          Operator
'0.4.0'       Keyword
' '           Text.Whitespace
'<'           Operator
'0.7.0'       Keyword
';'           Punctuation
'\n\n'        Text.Whitespace

'// one-line singleline comment\n' Comment.Single

'\n'          Text.Whitespace

'/* one-line multiline comment */' Comment.Multiline
'\n\n'        Text.Whitespace

'/*\n  multi-line multiline comment\n*/' Comment.Multiline
'\n\n'        Text.Whitespace

'contract'    Keyword
' '           Text.Whitespace
'ContractName' Name.Entity
' '           Text.Whitespace
'{'           Punctuation
'\n\n    '    Text.Whitespace
'address'     Keyword.Type
' '           Text.Whitespace
'public '     Keyword
'publicaddress' Name.Variable
';'           Punctuation
'\n\n    '    Text.Whitespace
'uint'        Keyword.Type
' '           Text.Whitespace
'varname1'    Name.Variable
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1234'        Literal.Number.Decimal
';'           Punctuation
'\n    '      Text.Whitespace
'int'         Keyword.Type
' '           Text.Whitespace
'varname2'    Name.Variable
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0x12abcdEF'  Literal.Number.Hex
';'           Punctuation
'\n\n    '    Text.Whitespace
'string'      Keyword.Type
' '           Text.Whitespace
'astringsingle' Name.Variable
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'\'test "string" value\\\' single\'' Literal.String.Single
';'           Punctuation
'\n    '      Text.Whitespace
'string'      Keyword.Type
' '           Text.Whitespace
'astringdouble' Name.Variable
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"test \'string\' value\\" double"' Literal.String.Double
';'           Punctuation
'\n\n    '    Text.Whitespace
'enum'        Keyword.Type
' '           Text.Whitespace
'State'       Name.Variable
' '           Text.Whitespace
'{'           Punctuation
'\n      '    Text.Whitespace
'NotStarted'  Text
','           Punctuation
'\n      '    Text.Whitespace
'WorkInProgress' Text
','           Punctuation
'\n      '    Text.Whitespace
'Done'        Text
'\n    '      Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'State'       Text
' '           Text.Whitespace
'public'      Keyword.Type
' '           Text.Whitespace
'state'       Text
';'           Punctuation
'\n\n    '    Text.Whitespace
'struct'      Keyword.Type
' '           Text.Whitespace
'AStruct'     Name.Variable
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'string'      Keyword.Type
' '           Text.Whitespace
'name'        Name.Variable
';'           Punctuation
'\n        '  Text.Whitespace
'uint8'       Keyword.Type
' '           Text.Whitespace
'type'        Name.Variable
';'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'mapping'     Keyword.Type
'('           Punctuation
'address'     Keyword.Type
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'AStruct'     Text
')'           Punctuation
' '           Text.Whitespace
'registry'    Text
';'           Punctuation
'\n\n    '    Text.Whitespace
'event'       Keyword.Type
' '           Text.Whitespace
'Paid'        Name.Variable
'('           Punctuation
'uint256'     Keyword.Type
' '           Text.Whitespace
'value'       Name.Variable
')'           Punctuation
';'           Punctuation
'\n    '      Text.Whitespace
'event'       Keyword.Type
' '           Text.Whitespace
'Received'    Name.Variable
'('           Punctuation
'uint256'     Keyword.Type
' '           Text.Whitespace
'time'        Name.Variable
')'           Punctuation
';'           Punctuation
'\n    '      Text.Whitespace
'event'       Keyword.Type
' '           Text.Whitespace
'Withdraw'    Name.Variable
'('           Punctuation
'uint256'     Keyword.Type
' '           Text.Whitespace
'value'       Name.Variable
')'           Punctuation
';'           Punctuation
'\n\n    '    Text.Whitespace
'function'    Keyword.Type
' '           Text.Whitespace
'addRegistry' Name.Variable
'('           Punctuation
'string'      Keyword.Type
' '           Text.Whitespace
'_name'       Name.Variable
','           Punctuation
' '           Text.Whitespace
'uint8'       Keyword.Type
' '           Text.Whitespace
'_type'       Name.Variable
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'AStruct'     Text
' '           Text.Whitespace
'memory'      Keyword.Type
' '           Text.Whitespace
'newItem'     Text
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'AStruct'     Text
'('           Punctuation
'{'           Punctuation
'\n            ' Text.Whitespace
'name'        Text
':'           Punctuation
' '           Text.Whitespace
'_name'       Text
','           Punctuation
'\n            ' Text.Whitespace
'type'        Text
':'           Punctuation
' '           Text.Whitespace
'_type'       Text
'\n        '  Text.Whitespace
'}'           Punctuation
')'           Punctuation
';'           Punctuation
'\n\n        ' Text.Whitespace
'registry'    Text
'['           Punctuation
'msg.sender'  Keyword
']'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'newItem'     Text
';'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'function'    Keyword.Type
' '           Text.Whitespace
'getHash'     Name.Variable
'('           Punctuation
'AStruct'     Text
' '           Text.Whitespace
'item'        Text
')'           Punctuation
' '           Text.Whitespace
'returns'     Keyword.Type
'('           Punctuation
'uint'        Keyword.Type
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'return'      Keyword.Type
' '           Text.Whitespace
'uint'        Keyword.Type
'('           Punctuation
'keccak256'   Name.Builtin
'('           Punctuation
'item'        Text
'.'           Punctuation
'name'        Text
','           Punctuation
' '           Text.Whitespace
'item'        Text
'.'           Punctuation
'type'        Text
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'function'    Keyword.Type
' '           Text.Whitespace
'pay'         Name.Variable
'('           Punctuation
')'           Punctuation
' '           Text.Whitespace
'public'      Keyword.Type
' '           Text.Whitespace
'payable'     Keyword.Type
' '           Text.Whitespace
'{'           Punctuation
'\n      '    Text.Whitespace
'require'     Keyword.Type
'('           Punctuation
'msg.sender'  Keyword
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'astronaut'   Text
')'           Punctuation
';'           Punctuation
'\n      '    Text.Whitespace
'state'       Text
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'State'       Text
'.'           Punctuation
'Paid'        Text
';'           Punctuation
'\n      '    Text.Whitespace
'Paid'        Text
'('           Punctuation
'msg.value'   Keyword
')'           Punctuation
';'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'function'    Keyword.Type
' '           Text.Whitespace
'receive'     Name.Variable
'('           Punctuation
')'           Punctuation
' '           Text.Whitespace
'public'      Keyword.Type
' '           Text.Whitespace
'{'           Punctuation
'\n      '    Text.Whitespace
'require'     Keyword.Type
'('           Punctuation
'msg.sender'  Keyword
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'arbiter'     Text
')'           Punctuation
';'           Punctuation
'\n      '    Text.Whitespace
'require'     Keyword.Type
'('           Punctuation
'state'       Text
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'State'       Text
'.'           Punctuation
'Paid'        Text
')'           Punctuation
';'           Punctuation
'\n      '    Text.Whitespace
'state'       Text
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'State'       Text
'.'           Punctuation
'Received'    Text
';'           Punctuation
'\n      '    Text.Whitespace
'Received'    Text
'('           Punctuation
'now'         Text
')'           Punctuation
';'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'function'    Keyword.Type
' '           Text.Whitespace
'withdraw'    Name.Variable
'('           Punctuation
')'           Punctuation
' '           Text.Whitespace
'public'      Keyword.Type
' '           Text.Whitespace
'{'           Punctuation
'\n      '    Text.Whitespace
'require'     Keyword.Type
'('           Punctuation
'msg.sender'  Keyword
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'shipper'     Text
')'           Punctuation
';'           Punctuation
'\n      '    Text.Whitespace
'require'     Keyword.Type
'('           Punctuation
'state'       Text
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'State'       Text
'.'           Punctuation
'Received'    Text
')'           Punctuation
';'           Punctuation
'\n      '    Text.Whitespace
'state'       Text
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'State'       Text
'.'           Punctuation
'Withdrawn'   Text
';'           Punctuation
'\n      '    Text.Whitespace
'Withdraw'    Text
'('           Punctuation
'this'        Keyword.Type
'.'           Punctuation
'balance'     Text
')'           Punctuation
';'           Punctuation
'\n      '    Text.Whitespace
'shipper'     Text
'.'           Punctuation
'transfer'    Text
'('           Punctuation
'this'        Keyword.Type
'.'           Punctuation
'balance'     Text
')'           Punctuation
';'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace
