{"information_for_contributors":["This file has been converted from https://github.com/NVIDIA/cuda-cpp-grammar/blob/master/syntaxes/cuda-cpp.tmLanguage.json","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."],"version":"https://github.com/NVIDIA/cuda-cpp-grammar/commit/81e88eaec5170aa8585736c63627c73e3589998c","name":"CUDA C++","scopeName":"source.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#constructor_root"},{"include":"#destructor_root"},{"include":"#function_definition"},{"include":"#operator_overload"},{"include":"#using_namespace"},{"include":"#type_alias"},{"include":"#using_name"},{"include":"#namespace_alias"},{"include":"#namespace_block"},{"include":"#extern_block"},{"include":"#typedef_class"},{"include":"#typedef_struct"},{"include":"#typedef_union"},{"include":"#misc_keywords"},{"include":"#standard_declares"},{"include":"#class_block"},{"include":"#struct_block"},{"include":"#union_block"},{"include":"#enum_block"},{"include":"#template_isolated_definition"},{"include":"#template_definition"},{"include":"#access_control_keywords"},{"include":"#block"},{"include":"#static_assert"},{"include":"#assembly"},{"include":"#function_pointer"},{"include":"#evaluation_context"}],"repository":{"access_control_keywords":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(((?:(?:protected)|(?:private)|(?:public)))(?:(?:\\s)+)?(:))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"storage.type.modifier.access.control.$4.cuda-cpp"},"4":{},"5":{"name":"punctuation.separator.colon.access.control.cuda-cpp"}}},"alignas_attribute":{"begin":"alignas\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.attribute.begin.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.attribute.end.cuda-cpp"}},"name":"support.other.attribute.cuda-cpp","patterns":[{"include":"#attributes_context"},{"begin":"\\(","end":"\\)","beginCaptures":{},"endCaptures":{},"patterns":[{"include":"#attributes_context"},{"include":"#string_context"}]},{"match":"(using)(?:\\s)+((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.alignas.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.alignas.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.alignas.cuda-cpp"}},"contentName":"meta.arguments.operator.alignas","patterns":[{"include":"#evaluation_context"}]},"alignof_operator":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.alignof.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.alignof.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.alignof.cuda-cpp"}},"contentName":"meta.arguments.operator.alignof","patterns":[{"include":"#evaluation_context"}]},"assembly":{"begin":"(\\b(?:__asm__|asm)\\b)(?:(?:\\s)+)?((?:volatile)?)","end":"(?!\\G)","beginCaptures":{"1":{"name":"storage.type.asm.cuda-cpp"},"2":{"name":"storage.modifier.cuda-cpp"}},"endCaptures":{},"name":"meta.asm.cuda-cpp","patterns":[{"match":"^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\n)|$)","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"include":"#comments"},{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parens.begin.bracket.round.assembly.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.bracket.round.assembly.cuda-cpp"}},"patterns":[{"begin":"(R?)(\")","end":"\"","beginCaptures":{"1":{"name":"meta.encoding.cuda-cpp"},"2":{"name":"punctuation.definition.string.begin.assembly.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.assembly.cuda-cpp"}},"name":"string.quoted.double.cuda-cpp","contentName":"meta.embedded.assembly","patterns":[{"include":"source.asm"},{"include":"source.x86"},{"include":"source.x86_64"},{"include":"source.arm"},{"include":"#backslash_escapes"},{"include":"#string_escaped_char"}]},{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parens.begin.bracket.round.assembly.inner.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.bracket.round.assembly.inner.cuda-cpp"}},"patterns":[{"include":"#evaluation_context"}]},{"match":"\\[((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.other.asm.label.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":":","name":"punctuation.separator.delimiter.colon.assembly.cuda-cpp"},{"include":"#comments"}]}]},"assignment_operator":{"match":"\\=","name":"keyword.operator.assignment.cuda-cpp"},"attributes_context":{"patterns":[{"include":"#cpp_attributes"},{"include":"#gcc_attributes"},{"include":"#ms_attributes"},{"include":"#alignas_attribute"}]},"backslash_escapes":{"match":"(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3][0-7]{,2}\t |\n[4-7]\\d?\t\t|\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )","name":"constant.character.escape"},"block":{"begin":"{","end":"}|(?=\\s*#\\s*(?:elif|else|endif)\\b)","beginCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.cuda-cpp"}},"name":"meta.block.cuda-cpp","patterns":[{"include":"#function_body_context"}]},"block_comment":{"begin":"\\s*+(\\/\\*)","end":"\\*\\/","beginCaptures":{"1":{"name":"punctuation.definition.comment.begin.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.cuda-cpp"}},"name":"comment.block.cuda-cpp"},"builtin_storage_type_initilizer":{"begin":"(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.class.cuda-cpp"},"1":{"name":"storage.type.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.type.modifier.final.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)","captures":{"1":{"name":"entity.name.type.class.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"storage.type.modifier.final.cuda-cpp"},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"DLLEXPORT","name":"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cuda-cpp"},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.other.preprocessor.macro.predefined.probably.$0.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"20":{"name":"punctuation.separator.colon.inheritance.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.class.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.class.cuda-cpp"}},"name":"meta.head.class.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#inheritance_context"},{"include":"#template_call_range"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.class.cuda-cpp"}},"name":"meta.body.class.cuda-cpp","patterns":[{"include":"#function_pointer"},{"include":"#static_assert"},{"include":"#constructor_inline"},{"include":"#destructor_inline"},{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.class.cuda-cpp","patterns":[{"include":"$self"}]}]},"class_declare":{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.class.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.class.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"comma":{"match":",","name":"punctuation.separator.delimiter.comma.cuda-cpp"},"comma_in_template_argument":{"match":",","name":"punctuation.separator.delimiter.comma.template.argument.cuda-cpp"},"comments":{"patterns":[{"begin":"^(?:(?:\\s)+)?+(\\/\\/[!\\/]+)","end":"(?<=\\n)(?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.italic.doxygen.cuda-cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.bold.doxygen.cuda-cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.inline.raw.string.cuda-cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"patterns":[{"match":"in|out","name":"keyword.other.parameter.direction.$0.cuda-cpp"}]},"3":{"name":"variable.parameter.cuda-cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?:\\b[A-Z]+:|@[a-z_]+:)","name":"storage.type.class.gtkdoc.cuda-cpp"}]},{"match":"(\\/\\*[!*]+(?=\\s))(.+)([!*]*\\*\\/)","captures":{"1":{"name":"punctuation.definition.comment.begin.documentation.cuda-cpp"},"2":{"patterns":[{"match":"(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.italic.doxygen.cuda-cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.bold.doxygen.cuda-cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.inline.raw.string.cuda-cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"patterns":[{"match":"in|out","name":"keyword.other.parameter.direction.$0.cuda-cpp"}]},"3":{"name":"variable.parameter.cuda-cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?:\\b[A-Z]+:|@[a-z_]+:)","name":"storage.type.class.gtkdoc.cuda-cpp"}]},"3":{"name":"punctuation.definition.comment.end.documentation.cuda-cpp"}},"name":"comment.block.documentation.cuda-cpp"},{"begin":"(?:(?:\\s)+)?+\\/\\*[!*]+(?:(?:(?:\\n)|$)|(?=\\s))","end":"[!*]*\\*\\/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.documentation.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.documentation.cuda-cpp"}},"name":"comment.block.documentation.cuda-cpp","patterns":[{"match":"(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.italic.doxygen.cuda-cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.bold.doxygen.cuda-cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"name":"markup.inline.raw.string.cuda-cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)","captures":{"1":{"name":"storage.type.class.doxygen.cuda-cpp"},"2":{"patterns":[{"match":"in|out","name":"keyword.other.parameter.direction.$0.cuda-cpp"}]},"3":{"name":"variable.parameter.cuda-cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cuda-cpp"},{"match":"(?:\\b[A-Z]+:|@[a-z_]+:)","name":"storage.type.class.gtkdoc.cuda-cpp"}]},{"include":"#emacs_file_banner"},{"include":"#block_comment"},{"include":"#line_comment"},{"include":"#invalid_comment_end"}]},"constructor_inline":{"begin":"^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:__forceinline__)|(?:__noinline__)|(?:__global__)|(?:__device__)|(?:constexpr)|(?:explicit)|(?:__host__)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.function.definition.special.constructor.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"patterns":[{"include":"#functional_specifiers_pre_parameters"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"12":{"name":"comment.block.cuda-cpp"},"13":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"14":{"name":"storage.type.modifier.calling-convention.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"17":{"name":"comment.block.cuda-cpp"},"18":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"19":{"name":"entity.name.function.constructor.cuda-cpp entity.name.function.definition.special.constructor.cuda-cpp"}},"endCaptures":{},"name":"meta.function.definition.special.constructor.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cuda-cpp"}},"name":"meta.head.function.definition.special.constructor.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"match":"(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))","captures":{"1":{"name":"keyword.operator.assignment.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"keyword.other.default.constructor.cuda-cpp"},"7":{"name":"keyword.other.delete.constructor.cuda-cpp"}}},{"include":"#functional_specifiers_pre_parameters"},{"begin":":","end":"(?=\\{)","beginCaptures":{"0":{"name":"punctuation.separator.initializers.cuda-cpp"}},"endCaptures":{},"patterns":[{"begin":"((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()","end":"\\)","beginCaptures":{"1":{"name":"entity.name.function.call.initializer.cuda-cpp"},"2":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"3":{},"4":{"name":"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.function.call.initializer.cuda-cpp"}},"contentName":"meta.parameter.initialization","patterns":[{"include":"#evaluation_context"}]},{"begin":"((?|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cuda-cpp"}},"name":"meta.body.function.definition.special.constructor.cuda-cpp","patterns":[{"include":"#function_body_context"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.function.definition.special.constructor.cuda-cpp","patterns":[{"include":"$self"}]}]},"constructor_root":{"begin":"\\s*+((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())","end":"(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.function.definition.special.constructor.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"storage.type.modifier.calling-convention.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.constructor.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))","captures":{"1":{"name":"keyword.operator.assignment.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"keyword.other.default.constructor.cuda-cpp"},"7":{"name":"keyword.other.delete.constructor.cuda-cpp"}}},{"include":"#functional_specifiers_pre_parameters"},{"begin":":","end":"(?=\\{)","beginCaptures":{"0":{"name":"punctuation.separator.initializers.cuda-cpp"}},"endCaptures":{},"patterns":[{"begin":"((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()","end":"\\)","beginCaptures":{"1":{"name":"entity.name.function.call.initializer.cuda-cpp"},"2":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"3":{},"4":{"name":"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.function.call.initializer.cuda-cpp"}},"contentName":"meta.parameter.initialization","patterns":[{"include":"#evaluation_context"}]},{"begin":"((?|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cuda-cpp"}},"name":"meta.body.function.definition.special.constructor.cuda-cpp","patterns":[{"include":"#function_body_context"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.function.definition.special.constructor.cuda-cpp","patterns":[{"include":"$self"}]}]},"control_flow_keywords":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.control.$3.cuda-cpp"}}},"cpp_attributes":{"begin":"\\[\\[","end":"\\]\\]","beginCaptures":{"0":{"name":"punctuation.section.attribute.begin.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.attribute.end.cuda-cpp"}},"name":"support.other.attribute.cuda-cpp","patterns":[{"include":"#attributes_context"},{"begin":"\\(","end":"\\)","beginCaptures":{},"endCaptures":{},"patterns":[{"include":"#attributes_context"},{"include":"#string_context"}]},{"match":"(using)(?:\\s)+((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\{)","end":"\\}","beginCaptures":{"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((import))(?:(?:\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/)))|((\\\")[^\\\"]*((?:\\\")?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/))))|(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\.(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;)))))|((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;))))(?:(?:\\s)+)?(;?)","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.control.directive.import.cuda-cpp"},"5":{"name":"string.quoted.other.lt-gt.include.cuda-cpp"},"6":{"name":"punctuation.definition.string.begin.cuda-cpp"},"7":{"name":"punctuation.definition.string.end.cuda-cpp"},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"name":"string.quoted.double.include.cuda-cpp"},"11":{"name":"punctuation.definition.string.begin.cuda-cpp"},"12":{"name":"punctuation.definition.string.end.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"15":{"name":"entity.name.other.preprocessor.macro.include.cuda-cpp"},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"18":{"patterns":[{"include":"#inline_comment"}]},"19":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"20":{"patterns":[{"include":"#inline_comment"}]},"21":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"22":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.preprocessor.import.cuda-cpp"},"d9bc4796b0b_preprocessor_number_literal":{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.other.decltype.cuda-cpp storage.type.decltype.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.decltype.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.decltype.cuda-cpp"}},"contentName":"meta.arguments.decltype","patterns":[{"include":"#evaluation_context"}]},"decltype_specifier":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.other.decltype.cuda-cpp storage.type.decltype.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.decltype.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.decltype.cuda-cpp"}},"contentName":"meta.arguments.decltype","patterns":[{"include":"#evaluation_context"}]},"default_statement":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:__forceinline__)|(?:__noinline__)|(?:__global__)|(?:__device__)|(?:constexpr)|(?:explicit)|(?:__host__)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(~(?|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.function.definition.special.member.destructor.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"7":{"name":"comment.block.cuda-cpp"},"8":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"9":{"name":"storage.type.modifier.calling-convention.cuda-cpp"},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"12":{"name":"comment.block.cuda-cpp"},"13":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"14":{"patterns":[{"include":"#functional_specifiers_pre_parameters"}]},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"17":{"name":"comment.block.cuda-cpp"},"18":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"19":{"name":"entity.name.function.destructor.cuda-cpp entity.name.function.definition.special.member.destructor.cuda-cpp"}},"endCaptures":{},"name":"meta.function.definition.special.member.destructor.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cuda-cpp"}},"name":"meta.head.function.definition.special.member.destructor.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"match":"(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))","captures":{"1":{"name":"keyword.operator.assignment.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"keyword.other.default.constructor.cuda-cpp"},"7":{"name":"keyword.other.delete.constructor.cuda-cpp"}}},{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parameters.end.bracket.round.special.member.destructor.cuda-cpp"}},"contentName":"meta.function.definition.parameters.special.member.destructor","patterns":[]},{"match":"((?:(?:final)|(?:override)))+","captures":{"1":{"name":"keyword.operator.wordlike.cuda-cpp keyword.operator.$1.cuda-cpp"}}},{"include":"$self"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cuda-cpp"}},"name":"meta.body.function.definition.special.member.destructor.cuda-cpp","patterns":[{"include":"#function_body_context"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.function.definition.special.member.destructor.cuda-cpp","patterns":[{"include":"$self"}]}]},"destructor_root":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))~\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())","end":"(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.function.definition.special.member.destructor.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"storage.type.modifier.calling-convention.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.destructor.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))","captures":{"1":{"name":"keyword.operator.assignment.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"keyword.other.default.constructor.cuda-cpp"},"7":{"name":"keyword.other.delete.constructor.cuda-cpp"}}},{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parameters.end.bracket.round.special.member.destructor.cuda-cpp"}},"contentName":"meta.function.definition.parameters.special.member.destructor","patterns":[]},{"match":"((?:(?:final)|(?:override)))+","captures":{"1":{"name":"keyword.operator.wordlike.cuda-cpp keyword.operator.$1.cuda-cpp"}}},{"include":"$self"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cuda-cpp"}},"name":"meta.body.function.definition.special.member.destructor.cuda-cpp","patterns":[{"include":"#function_body_context"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.function.definition.special.member.destructor.cuda-cpp","patterns":[{"include":"$self"}]}]},"diagnostic":{"begin":"(^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:error|warning)))\\b(?:(?:\\s)+)?","end":"(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?(::))?(?:(?:\\s)+)?((?|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.enum.cuda-cpp"},"1":{"name":"storage.type.enum.cuda-cpp"},"2":{"name":"storage.type.enum.enum-key.$2.cuda-cpp"},"3":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"4":{"name":"entity.name.type.enum.cuda-cpp"},"5":{"name":"punctuation.separator.colon.type-specifier.cuda-cpp"},"6":{"patterns":[{"include":"#scope_resolution_inner_generated"}]},"7":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},"8":{"patterns":[{"include":"#template_call_range"}]},"9":{},"10":{"name":"entity.name.scope-resolution.cuda-cpp"},"11":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"12":{},"13":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},"14":{"name":"storage.type.integral.$14.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.enum.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.enum.cuda-cpp"}},"name":"meta.head.enum.cuda-cpp","patterns":[{"include":"$self"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.enum.cuda-cpp"}},"name":"meta.body.enum.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#enumerator_list"},{"include":"#comments"},{"include":"#comma"},{"include":"#semicolon"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.enum.cuda-cpp","patterns":[{"include":"$self"}]}]},"enum_declare":{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.enum.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.enum.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"enumerator_list":{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.control.exception.$3.cuda-cpp"}}},"extern_block":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(extern)(?=\\s*\\\")","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.extern.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"storage.type.extern.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.extern.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.extern.cuda-cpp"}},"name":"meta.head.extern.cuda-cpp","patterns":[{"include":"$self"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.extern.cuda-cpp"}},"name":"meta.body.extern.cuda-cpp","patterns":[{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.extern.cuda-cpp","patterns":[{"include":"$self"}]},{"include":"$self"}]},"function_body_context":{"patterns":[{"include":"#ever_present_context"},{"include":"#using_namespace"},{"include":"#type_alias"},{"include":"#using_name"},{"include":"#namespace_alias"},{"include":"#typedef_class"},{"include":"#typedef_struct"},{"include":"#typedef_union"},{"include":"#misc_keywords"},{"include":"#standard_declares"},{"include":"#class_block"},{"include":"#struct_block"},{"include":"#union_block"},{"include":"#enum_block"},{"include":"#access_control_keywords"},{"include":"#block"},{"include":"#static_assert"},{"include":"#assembly"},{"include":"#function_pointer"},{"include":"#switch_statement"},{"include":"#goto_statement"},{"include":"#evaluation_context"},{"include":"#label"}]},"function_call":{"begin":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?(\\()","end":"\\)","beginCaptures":{"1":{"patterns":[{"include":"#scope_resolution_function_call_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.call.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.function.call.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"11":{},"12":{"name":"punctuation.section.arguments.begin.bracket.round.function.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.function.call.cuda-cpp"}},"patterns":[{"include":"#evaluation_context"}]},"function_definition":{"begin":"(?:(?:^|\\G|(?<=;|\\}))|(?<=>))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\s)*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\()","end":"(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.function.definition.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"storage.type.template.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.modifier.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"storage.modifier.$12.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"15":{"name":"comment.block.cuda-cpp"},"16":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"17":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"18":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"21":{"name":"comment.block.cuda-cpp"},"22":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"23":{"patterns":[{"include":"#inline_comment"}]},"24":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"25":{"name":"comment.block.cuda-cpp"},"26":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"27":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"36":{"patterns":[{"include":"#inline_comment"}]},"37":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"38":{"name":"comment.block.cuda-cpp"},"39":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"40":{"patterns":[{"include":"#inline_comment"}]},"41":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"42":{"name":"comment.block.cuda-cpp"},"43":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"44":{"patterns":[{"include":"#inline_comment"}]},"45":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"46":{"name":"comment.block.cuda-cpp"},"47":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"48":{"patterns":[{"include":"#inline_comment"}]},"49":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"50":{"name":"comment.block.cuda-cpp"},"51":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"52":{"name":"storage.type.modifier.calling-convention.cuda-cpp"},"53":{"patterns":[{"include":"#inline_comment"}]},"54":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"55":{"name":"comment.block.cuda-cpp"},"56":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"57":{"patterns":[{"include":"#scope_resolution_function_definition_inner_generated"}]},"58":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.cuda-cpp"},"59":{"patterns":[{"include":"#template_call_range"}]},"60":{},"61":{"name":"entity.name.function.definition.cuda-cpp"},"62":{"patterns":[{"include":"#inline_comment"}]},"63":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"64":{"name":"comment.block.cuda-cpp"},"65":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"endCaptures":{},"name":"meta.function.definition.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.function.definition.cuda-cpp"}},"name":"meta.head.function.definition.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parameters.begin.bracket.round.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parameters.end.bracket.round.cuda-cpp"}},"contentName":"meta.function.definition.parameters","patterns":[{"include":"#ever_present_context"},{"include":"#parameter_or_maybe_value"},{"include":"#comma"},{"include":"#evaluation_context"}]},{"match":"(?<=^|\\))(?:(?:\\s)+)?(->)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<23>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<23>?)+>)?(?![\\w<:.]))","captures":{"1":{"name":"punctuation.definition.function.return-type.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"7":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"10":{"name":"comment.block.cuda-cpp"},"11":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.function.definition.cuda-cpp"}},"name":"meta.body.function.definition.cuda-cpp","patterns":[{"include":"#function_body_context"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.function.definition.cuda-cpp","patterns":[{"include":"$self"}]}]},"function_parameter_context":{"patterns":[{"include":"#ever_present_context"},{"include":"#parameter"},{"include":"#comma"}]},"function_pointer":{"begin":"(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()(\\*)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\s)+)?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)*(\\))(?:(?:\\s)+)?(\\()","end":"(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()","beginCaptures":{"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"20":{"patterns":[{"include":"#inline_comment"}]},"21":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"22":{"name":"comment.block.cuda-cpp"},"23":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"24":{"patterns":[{"include":"#inline_comment"}]},"25":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"26":{"name":"comment.block.cuda-cpp"},"27":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"28":{"patterns":[{"include":"#inline_comment"}]},"29":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"30":{"name":"comment.block.cuda-cpp"},"31":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"32":{"name":"punctuation.section.parens.begin.bracket.round.function.pointer.cuda-cpp"},"33":{"name":"punctuation.definition.function.pointer.dereference.cuda-cpp"},"34":{"name":"variable.other.definition.pointer.function.cuda-cpp"},"35":{"name":"punctuation.definition.begin.bracket.square.cuda-cpp"},"36":{"patterns":[{"include":"#evaluation_context"}]},"37":{"name":"punctuation.definition.end.bracket.square.cuda-cpp"},"38":{"name":"punctuation.section.parens.end.bracket.round.function.pointer.cuda-cpp"},"39":{"name":"punctuation.section.parameters.begin.bracket.round.function.pointer.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.section.parameters.end.bracket.round.function.pointer.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"patterns":[{"include":"#function_parameter_context"}]},"function_pointer_parameter":{"begin":"(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()(\\*)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\s)+)?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)*(\\))(?:(?:\\s)+)?(\\()","end":"(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()","beginCaptures":{"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"20":{"patterns":[{"include":"#inline_comment"}]},"21":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"22":{"name":"comment.block.cuda-cpp"},"23":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"24":{"patterns":[{"include":"#inline_comment"}]},"25":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"26":{"name":"comment.block.cuda-cpp"},"27":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"28":{"patterns":[{"include":"#inline_comment"}]},"29":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"30":{"name":"comment.block.cuda-cpp"},"31":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"32":{"name":"punctuation.section.parens.begin.bracket.round.function.pointer.cuda-cpp"},"33":{"name":"punctuation.definition.function.pointer.dereference.cuda-cpp"},"34":{"name":"variable.parameter.pointer.function.cuda-cpp"},"35":{"name":"punctuation.definition.begin.bracket.square.cuda-cpp"},"36":{"patterns":[{"include":"#evaluation_context"}]},"37":{"name":"punctuation.definition.end.bracket.square.cuda-cpp"},"38":{"name":"punctuation.section.parens.end.bracket.round.function.pointer.cuda-cpp"},"39":{"name":"punctuation.section.parameters.begin.bracket.round.function.pointer.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.section.parameters.end.bracket.round.function.pointer.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"patterns":[{"include":"#function_parameter_context"}]},"functional_specifiers_pre_parameters":{"match":"(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)","captures":{"1":{"name":"keyword.control.goto.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.label.call.cuda-cpp"}}},"identifier":{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*"},"include":{"match":"^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((#)(?:(?:\\s)+)?((?:include|include_next))\\b)(?:(?:\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/)))|((\\\")[^\\\"]*((?:\\\")?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/))))|(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\.(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;)))))|((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;))))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.control.directive.$5.cuda-cpp"},"4":{"name":"punctuation.definition.directive.cuda-cpp"},"6":{"name":"string.quoted.other.lt-gt.include.cuda-cpp"},"7":{"name":"punctuation.definition.string.begin.cuda-cpp"},"8":{"name":"punctuation.definition.string.end.cuda-cpp"},"9":{"patterns":[{"include":"#inline_comment"}]},"10":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"11":{"name":"string.quoted.double.include.cuda-cpp"},"12":{"name":"punctuation.definition.string.begin.cuda-cpp"},"13":{"name":"punctuation.definition.string.end.cuda-cpp"},"14":{"patterns":[{"include":"#inline_comment"}]},"15":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"16":{"name":"entity.name.other.preprocessor.macro.include.cuda-cpp"},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"21":{"patterns":[{"include":"#inline_comment"}]},"22":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}},"name":"meta.preprocessor.include.cuda-cpp"},"inheritance_context":{"patterns":[{"include":"#ever_present_context"},{"match":",","name":"punctuation.separator.delimiter.comma.inheritance.cuda-cpp"},{"match":"(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)?(?![\\w<:.]))","captures":{"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{}}}]},"inline_builtin_storage_type":{"match":"(?:\\s)*+(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:)","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"entity.name.label.cuda-cpp"},"4":{"patterns":[{"include":"#inline_comment"}]},"5":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"6":{"name":"punctuation.separator.label.cuda-cpp"}}},"lambdas":{"begin":"(?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))(?:(?:\\s)+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))[\\[\\];]))","end":"(?<=[;}])","beginCaptures":{"1":{"name":"punctuation.definition.capture.begin.lambda.cuda-cpp"},"2":{"name":"meta.lambda.capture.cuda-cpp","patterns":[{"include":"#the_this_keyword"},{"match":"((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))","captures":{"1":{"name":"variable.parameter.capture.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.separator.delimiter.comma.cuda-cpp"},"7":{"name":"keyword.operator.assignment.cuda-cpp"}}},{"include":"#evaluation_context"}]},"3":{},"4":{"name":"punctuation.definition.capture.end.lambda.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"7":{"name":"comment.block.cuda-cpp"},"8":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"endCaptures":{},"patterns":[{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.lambda.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.lambda.cuda-cpp"}},"name":"meta.function.definition.parameters.lambda.cuda-cpp","patterns":[{"include":"#function_parameter_context"}]},{"match":"(?)((?:.+?(?=\\{|$))?)","captures":{"1":{"name":"punctuation.definition.lambda.return-type.cuda-cpp"},"2":{"name":"storage.type.return-type.lambda.cuda-cpp"}}},{"begin":"\\{","end":"\\}","beginCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.lambda.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.lambda.cuda-cpp"}},"name":"meta.function.definition.body.lambda.cuda-cpp","patterns":[{"include":"$self"}]}]},"language_constants":{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?line\\b","end":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?define\\b)(?:(?:\\s)+)?((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:(?:\\s)+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:(?:\\s)+)?)*)(?:(?:\\s)+)?(\\b(?!uint_least16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_least32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_least64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_least8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|suseconds_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|useconds_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulonglong1[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulonglong2[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulonglong3[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulonglong4[^Pattern.new(\n match: \\/\\w\\/,\n)]|blksize_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|in_addr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|in_port_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintptr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|longlong1[^Pattern.new(\n match: \\/\\w\\/,\n)]|longlong2[^Pattern.new(\n match: \\/\\w\\/,\n)]|longlong3[^Pattern.new(\n match: \\/\\w\\/,\n)]|longlong4[^Pattern.new(\n match: \\/\\w\\/,\n)]|unsigned[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_quad_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|blkcnt_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|intptr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|intmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|intmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|wchar_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_short[^Pattern.new(\n match: \\/\\w\\/,\n)]|qaddr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|caddr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|daddr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|fixpt_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|nlink_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|segsz_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|swblk_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|clock_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ssize_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ushort1[^Pattern.new(\n match: \\/\\w\\/,\n)]|ushort2[^Pattern.new(\n match: \\/\\w\\/,\n)]|ushort3[^Pattern.new(\n match: \\/\\w\\/,\n)]|ushort4[^Pattern.new(\n match: \\/\\w\\/,\n)]|double1[^Pattern.new(\n match: \\/\\w\\/,\n)]|double2[^Pattern.new(\n match: \\/\\w\\/,\n)]|double3[^Pattern.new(\n match: \\/\\w\\/,\n)]|double4[^Pattern.new(\n match: \\/\\w\\/,\n)]|signed[^Pattern.new(\n match: \\/\\w\\/,\n)]|double[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_char[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_long[^Pattern.new(\n match: \\/\\w\\/,\n)]|ushort[^Pattern.new(\n match: \\/\\w\\/,\n)]|quad_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|mode_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|size_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|time_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uchar1[^Pattern.new(\n match: \\/\\w\\/,\n)]|uchar2[^Pattern.new(\n match: \\/\\w\\/,\n)]|uchar3[^Pattern.new(\n match: \\/\\w\\/,\n)]|uchar4[^Pattern.new(\n match: \\/\\w\\/,\n)]|short1[^Pattern.new(\n match: \\/\\w\\/,\n)]|short2[^Pattern.new(\n match: \\/\\w\\/,\n)]|short3[^Pattern.new(\n match: \\/\\w\\/,\n)]|short4[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulong4[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulong1[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulong2[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulong3[^Pattern.new(\n match: \\/\\w\\/,\n)]|ulong4[^Pattern.new(\n match: \\/\\w\\/,\n)]|float1[^Pattern.new(\n match: \\/\\w\\/,\n)]|float2[^Pattern.new(\n match: \\/\\w\\/,\n)]|float3[^Pattern.new(\n match: \\/\\w\\/,\n)]|float4[^Pattern.new(\n match: \\/\\w\\/,\n)]|short[^Pattern.new(\n match: \\/\\w\\/,\n)]|float[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_int[^Pattern.new(\n match: \\/\\w\\/,\n)]|div_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|dev_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|gid_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ino_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|key_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|pid_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|off_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uid_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|char1[^Pattern.new(\n match: \\/\\w\\/,\n)]|char2[^Pattern.new(\n match: \\/\\w\\/,\n)]|char3[^Pattern.new(\n match: \\/\\w\\/,\n)]|char4[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint1[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint2[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint3[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint4[^Pattern.new(\n match: \\/\\w\\/,\n)]|long1[^Pattern.new(\n match: \\/\\w\\/,\n)]|long2[^Pattern.new(\n match: \\/\\w\\/,\n)]|long3[^Pattern.new(\n match: \\/\\w\\/,\n)]|auto[^Pattern.new(\n match: \\/\\w\\/,\n)]|void[^Pattern.new(\n match: \\/\\w\\/,\n)]|char[^Pattern.new(\n match: \\/\\w\\/,\n)]|long[^Pattern.new(\n match: \\/\\w\\/,\n)]|bool[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint[^Pattern.new(\n match: \\/\\w\\/,\n)]|id_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|id_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int1[^Pattern.new(\n match: \\/\\w\\/,\n)]|int2[^Pattern.new(\n match: \\/\\w\\/,\n)]|int3[^Pattern.new(\n match: \\/\\w\\/,\n)]|int4[^Pattern.new(\n match: \\/\\w\\/,\n)]|dim3[^Pattern.new(\n match: \\/\\w\\/,\n)]|int[^Pattern.new(\n match: \\/\\w\\/,\n)])(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?!\\())","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"variable.language.this.cuda-cpp"},"4":{"name":"variable.other.object.access.cuda-cpp"},"5":{"name":"punctuation.separator.dot-access.cuda-cpp"},"6":{"name":"punctuation.separator.pointer-access.cuda-cpp"},"7":{"patterns":[{"match":"(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.language.this.cuda-cpp"},"6":{"name":"variable.other.object.property.cuda-cpp"},"7":{"name":"punctuation.separator.dot-access.cuda-cpp"},"8":{"name":"punctuation.separator.pointer-access.cuda-cpp"}}},{"match":"(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.language.this.cuda-cpp"},"6":{"name":"variable.other.object.access.cuda-cpp"},"7":{"name":"punctuation.separator.dot-access.cuda-cpp"},"8":{"name":"punctuation.separator.pointer-access.cuda-cpp"}}},{"include":"#member_access"},{"include":"#method_access"}]},"8":{"name":"variable.other.property.cuda-cpp"}}},"memory_operators":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(delete)(?:(?:\\s)+)?(\\[\\])|(delete))|(new))(?!\\w))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.operator.wordlike.cuda-cpp"},"4":{"name":"keyword.operator.delete.array.cuda-cpp"},"5":{"name":"keyword.operator.delete.array.bracket.cuda-cpp"},"6":{"name":"keyword.operator.delete.cuda-cpp"},"7":{"name":"keyword.operator.new.cuda-cpp"}}},"method_access":{"begin":"(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:(?:\\s)+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:(?:\\s)+)?)*)(?:(?:\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?(\\()","end":"\\)","beginCaptures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.language.this.cuda-cpp"},"6":{"name":"variable.other.object.access.cuda-cpp"},"7":{"name":"punctuation.separator.dot-access.cuda-cpp"},"8":{"name":"punctuation.separator.pointer-access.cuda-cpp"},"9":{"patterns":[{"match":"(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.language.this.cuda-cpp"},"6":{"name":"variable.other.object.property.cuda-cpp"},"7":{"name":"punctuation.separator.dot-access.cuda-cpp"},"8":{"name":"punctuation.separator.pointer-access.cuda-cpp"}}},{"match":"(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.language.this.cuda-cpp"},"6":{"name":"variable.other.object.access.cuda-cpp"},"7":{"name":"punctuation.separator.dot-access.cuda-cpp"},"8":{"name":"punctuation.separator.pointer-access.cuda-cpp"}}},{"include":"#member_access"},{"include":"#method_access"}]},"10":{"name":"entity.name.function.member.cuda-cpp"},"11":{"name":"punctuation.section.arguments.begin.bracket.round.function.member.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.function.member.cuda-cpp"}},"patterns":[{"include":"#evaluation_context"}]},"misc_keywords":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.other.$3.cuda-cpp"}}},"ms_attributes":{"begin":"__declspec\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.attribute.begin.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.attribute.end.cuda-cpp"}},"name":"support.other.attribute.cuda-cpp","patterns":[{"include":"#attributes_context"},{"begin":"\\(","end":"\\)","beginCaptures":{},"endCaptures":{},"patterns":[{"include":"#attributes_context"},{"include":"#string_context"}]},{"match":"(using)(?:\\s)+((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<8>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.namespace.cuda-cpp"},"1":{"name":"keyword.other.namespace.definition.cuda-cpp storage.type.namespace.definition.cuda-cpp"}},"endCaptures":{},"name":"meta.block.namespace.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.namespace.cuda-cpp"}},"name":"meta.head.namespace.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#attributes_context"},{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<4>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.namespace.cuda-cpp"}},"name":"meta.body.namespace.cuda-cpp","patterns":[{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.namespace.cuda-cpp","patterns":[{"include":"$self"}]}]},"noexcept_operator":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.noexcept.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.noexcept.cuda-cpp"}},"contentName":"meta.arguments.operator.noexcept","patterns":[{"include":"#evaluation_context"}]},"number_literal":{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(?:(?:((?:(?:delete\\[\\])|(?:delete)|(?:new\\[\\])|(?:new)|(?:\\->\\*)|(?:<<=)|(?:>>=)|(?:<=>)|(?:\\+\\+)|(?:\\-\\-)|(?:\\(\\))|(?:\\[\\])|(?:\\->)|(?:\\+\\+)|(?:\\-\\-)|(?:<<)|(?:>>)|(?:<=)|(?:>=)|(?:==)|(?:!=)|(?:&&)|(?:\\|\\|)|(?:\\+=)|(?:\\-=)|(?:\\*=)|(?:\\/=)|(?:%=)|(?:&=)|(?:\\^=)|(?:\\|=)|(?:\\+)|(?:\\-)|!|~|(?:\\*)|&|(?:\\*)|(?:\\/)|%|(?:\\+)|(?:\\-)|<|>|&|(?:\\^)|(?:\\|)|=|,))|((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:\\[\\])?)))|(\"\")((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\<|\\()","end":"(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.function.definition.special.operator-overload.cuda-cpp"},"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"20":{"patterns":[{"include":"#inline_comment"}]},"21":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"22":{"name":"comment.block.cuda-cpp"},"23":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"24":{"patterns":[{"include":"#inline_comment"}]},"25":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"26":{"name":"comment.block.cuda-cpp"},"27":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"28":{"patterns":[{"include":"#inline_comment"}]},"29":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"30":{"name":"comment.block.cuda-cpp"},"31":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"32":{"patterns":[{"include":"#inline_comment"}]},"33":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"34":{"name":"comment.block.cuda-cpp"},"35":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"36":{"name":"storage.type.modifier.calling-convention.cuda-cpp"},"37":{"patterns":[{"include":"#inline_comment"}]},"38":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"39":{"name":"comment.block.cuda-cpp"},"40":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"41":{"patterns":[{"include":"#inline_comment"}]},"42":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"43":{"name":"comment.block.cuda-cpp"},"44":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"45":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.operator.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"entity.name.operator.type.reference.cuda-cpp"}]},"59":{"patterns":[{"include":"#inline_comment"}]},"60":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"61":{"name":"comment.block.cuda-cpp"},"62":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"63":{"patterns":[{"include":"#inline_comment"}]},"64":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"65":{"name":"comment.block.cuda-cpp"},"66":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"67":{"patterns":[{"include":"#inline_comment"}]},"68":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"69":{"name":"comment.block.cuda-cpp"},"70":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"71":{"name":"entity.name.operator.type.array.cuda-cpp"},"72":{"name":"entity.name.operator.custom-literal.cuda-cpp"},"73":{"patterns":[{"include":"#inline_comment"}]},"74":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"75":{"name":"comment.block.cuda-cpp"},"76":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"77":{"name":"entity.name.operator.custom-literal.cuda-cpp"},"78":{"patterns":[{"include":"#inline_comment"}]},"79":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"80":{"name":"comment.block.cuda-cpp"},"81":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"endCaptures":{},"name":"meta.function.definition.special.operator-overload.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cuda-cpp"}},"name":"meta.head.function.definition.special.operator-overload.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#template_call_range"},{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parameters.end.bracket.round.special.operator-overload.cuda-cpp"}},"contentName":"meta.function.definition.parameters.special.operator-overload","patterns":[{"include":"#function_parameter_context"},{"include":"#evaluation_context"}]},{"include":"#qualifiers_and_specifiers_post_parameters"},{"include":"$self"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cuda-cpp"}},"name":"meta.body.function.definition.special.operator-overload.cuda-cpp","patterns":[{"include":"#function_body_context"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.function.definition.special.operator-overload.cuda-cpp","patterns":[{"include":"$self"}]}]},"operators":{"patterns":[{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.sizeof.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.sizeof.cuda-cpp"}},"contentName":"meta.arguments.operator.sizeof","patterns":[{"include":"#evaluation_context"}]},{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.alignof.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.alignof.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.alignof.cuda-cpp"}},"contentName":"meta.arguments.operator.alignof","patterns":[{"include":"#evaluation_context"}]},{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.alignas.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.alignas.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.alignas.cuda-cpp"}},"contentName":"meta.arguments.operator.alignas","patterns":[{"include":"#evaluation_context"}]},{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.typeid.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.typeid.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.typeid.cuda-cpp"}},"contentName":"meta.arguments.operator.typeid","patterns":[{"include":"#evaluation_context"}]},{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.noexcept.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.noexcept.cuda-cpp"}},"contentName":"meta.arguments.operator.noexcept","patterns":[{"include":"#evaluation_context"}]},{"begin":"(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.sizeof.variadic.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cuda-cpp"}},"contentName":"meta.arguments.operator.sizeof.variadic","patterns":[{"include":"#evaluation_context"}]},{"match":"--","name":"keyword.operator.decrement.cuda-cpp"},{"match":"\\+\\+","name":"keyword.operator.increment.cuda-cpp"},{"match":"%=|\\+=|-=|\\*=|(?>=|\\|=","name":"keyword.operator.assignment.compound.bitwise.cuda-cpp"},{"match":"<<|>>","name":"keyword.operator.bitwise.shift.cuda-cpp"},{"match":"!=|<=|>=|==|<|>","name":"keyword.operator.comparison.cuda-cpp"},{"match":"&&|!|\\|\\|","name":"keyword.operator.logical.cuda-cpp"},{"match":"&|\\||\\^|~","name":"keyword.operator.cuda-cpp"},{"include":"#assignment_operator"},{"match":"%|\\*|\\/|-|\\+","name":"keyword.operator.cuda-cpp"},{"include":"#ternary_operator"}]},"over_qualified_types":{"patterns":[{"match":"(struct)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.struct.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.struct.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},{"match":"(enum)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.enum.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.enum.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},{"match":"(union)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.union.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.union.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},{"match":"(class)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.class.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.class.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}}]},"parameter":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)","end":"(?:(?=\\))|(,))","beginCaptures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"endCaptures":{"1":{"name":"punctuation.separator.delimiter.comma.cuda-cpp"}},"name":"meta.parameter.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#function_pointer_parameter"},{"include":"#decltype"},{"include":"#vararg_ellipses"},{"match":"((?:((?:(?:__constant__)|(?:__restrict__)|(?:__managed__)|(?:__shared__)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)","captures":{"1":{"patterns":[{"include":"#storage_types"}]},"2":{"name":"storage.modifier.specifier.parameter.cuda-cpp"},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"name":"storage.type.primitive.cuda-cpp storage.type.built-in.primitive.cuda-cpp"},"12":{"name":"storage.type.cuda-cpp storage.type.built-in.cuda-cpp"},"13":{"name":"support.type.posix-reserved.pthread.cuda-cpp support.type.built-in.posix-reserved.pthread.cuda-cpp"},"14":{"name":"support.type.posix-reserved.cuda-cpp support.type.built-in.posix-reserved.cuda-cpp"},"15":{"name":"entity.name.type.parameter.cuda-cpp"},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"include":"#storage_types"},{"include":"#scope_resolution_parameter_inner_generated"},{"match":"(?:(?:struct)|(?:class)|(?:union)|(?:enum))","name":"storage.type.$0.cuda-cpp"},{"begin":"(?<==)","end":"(?:(?=\\))|(,))","beginCaptures":{},"endCaptures":{"1":{"name":"punctuation.separator.delimiter.comma.cuda-cpp"}},"patterns":[{"include":"#evaluation_context"}]},{"match":"\\=","name":"keyword.operator.assignment.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\)|,|\\[|=|\\n)","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.parameter.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"include":"#attributes_context"},{"begin":"\\[","end":"\\]","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.square.array.type.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.array.type.cuda-cpp"}},"name":"meta.bracket.square.array.cuda-cpp","patterns":[{"include":"#evaluation_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))","captures":{"0":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"7":{"name":"comment.block.cuda-cpp"},"8":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"parameter_class":{"match":"(class)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.class.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.class.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"parameter_enum":{"match":"(enum)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.enum.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.enum.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"parameter_or_maybe_value":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)","end":"(?:(?=\\))|(,))","beginCaptures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"endCaptures":{"1":{"name":"punctuation.separator.delimiter.comma.cuda-cpp"}},"name":"meta.parameter.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#function_pointer_parameter"},{"include":"#memory_operators"},{"include":"#builtin_storage_type_initilizer"},{"include":"#curly_initializer"},{"include":"#decltype"},{"include":"#vararg_ellipses"},{"match":"((?:((?:(?:__constant__)|(?:__restrict__)|(?:__managed__)|(?:__shared__)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)","captures":{"1":{"patterns":[{"include":"#storage_types"}]},"2":{"name":"storage.modifier.specifier.parameter.cuda-cpp"},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"name":"storage.type.primitive.cuda-cpp storage.type.built-in.primitive.cuda-cpp"},"12":{"name":"storage.type.cuda-cpp storage.type.built-in.cuda-cpp"},"13":{"name":"support.type.posix-reserved.pthread.cuda-cpp support.type.built-in.posix-reserved.pthread.cuda-cpp"},"14":{"name":"support.type.posix-reserved.cuda-cpp support.type.built-in.posix-reserved.cuda-cpp"},"15":{"name":"entity.name.type.parameter.cuda-cpp"},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"include":"#storage_types"},{"include":"#function_call"},{"include":"#scope_resolution_parameter_inner_generated"},{"match":"(?:(?:struct)|(?:class)|(?:union)|(?:enum))","name":"storage.type.$0.cuda-cpp"},{"begin":"(?<==)","end":"(?:(?=\\))|(,))","beginCaptures":{},"endCaptures":{"1":{"name":"punctuation.separator.delimiter.comma.cuda-cpp"}},"patterns":[{"include":"#evaluation_context"}]},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=(?:\\)|,|\\[|=|\\/\\/|(?:(?:\\n)|$)))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"variable.parameter.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"include":"#attributes_context"},{"begin":"\\[","end":"\\]","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.square.array.type.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.array.type.cuda-cpp"}},"name":"meta.bracket.square.array.cuda-cpp","patterns":[{"include":"#evaluation_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))","captures":{"0":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"7":{"name":"comment.block.cuda-cpp"},"8":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"include":"#evaluation_context"}]},"parameter_struct":{"match":"(struct)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.struct.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.struct.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"parameter_union":{"match":"(union)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)","captures":{"1":{"name":"storage.type.union.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.union.parameter.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"variable.other.object.declare.cuda-cpp"},"15":{"patterns":[{"include":"#inline_comment"}]},"16":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{"patterns":[{"include":"#inline_comment"}]},"18":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"19":{"patterns":[{"include":"#inline_comment"}]},"20":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"parentheses":{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.section.parens.begin.bracket.round.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.bracket.round.cuda-cpp"}},"name":"meta.parens.cuda-cpp","patterns":[{"include":"#over_qualified_types"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma\\b","end":"(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma(?:\\s)+mark)(?:\\s)+(.*)","captures":{"1":{"name":"keyword.control.directive.pragma.pragma-mark.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"punctuation.definition.directive.cuda-cpp"},"5":{"name":"entity.name.tag.pragma-mark.cuda-cpp"}},"name":"meta.preprocessor.pragma.cuda-cpp"},"predefined_macros":{"patterns":[{"match":"\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\b","captures":{"1":{"name":"entity.name.other.preprocessor.macro.predefined.$1.cuda-cpp"}}},{"match":"\\b__([A-Z_]+)__\\b","name":"entity.name.other.preprocessor.macro.predefined.probably.$1.cuda-cpp"}]},"preprocessor_conditional_context":{"patterns":[{"include":"#preprocessor_conditional_defined"},{"include":"#comments"},{"include":"#language_constants"},{"include":"#string_context"},{"include":"#d9bc4796b0b_preprocessor_number_literal"},{"include":"#operators"},{"include":"#predefined_macros"},{"include":"#macro_name"},{"include":"#line_continuation_character"}]},"preprocessor_conditional_defined":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:(?:ifndef|ifdef)|if))","end":"^(?!\\s*+#\\s*(?:else|endif))","beginCaptures":{"0":{"name":"keyword.control.directive.conditional.$6.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"punctuation.definition.directive.cuda-cpp"},"6":{}},"endCaptures":{},"patterns":[{"begin":"\\G(?<=ifndef|ifdef|if)","end":"(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"punctuation.definition.directive.cuda-cpp"}},"name":"keyword.control.directive.$4.cuda-cpp"},"preprocessor_context":{"patterns":[{"include":"#pragma_mark"},{"include":"#pragma"},{"include":"#include"},{"include":"#line"},{"include":"#diagnostic"},{"include":"#undef"},{"include":"#preprocessor_conditional_range"},{"include":"#single_line_macro"},{"include":"#macro"},{"include":"#preprocessor_conditional_standalone"},{"include":"#macro_argument"}]},"qualified_type":{"match":"\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)?(?![\\w<:.])","captures":{"0":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"1":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"patterns":[{"include":"#inline_comment"}]},"5":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"6":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}},"name":"meta.qualified_type.cuda-cpp"},"qualifiers_and_specifiers_post_parameters":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"storage.modifier.specifier.functional.post-parameters.$3.cuda-cpp"},"4":{"patterns":[{"include":"#inline_comment"}]},"5":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"scope_resolution":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_function_call":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_function_call_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.call.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_function_call_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_function_call_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.call.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.function.call.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.call.cuda-cpp"}}},"scope_resolution_function_definition":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_function_definition_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_function_definition_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_function_definition_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.function.definition.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.cuda-cpp"}}},"scope_resolution_function_definition_operator_overload":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_function_definition_operator_overload_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_function_definition_operator_overload_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_function_definition_operator_overload_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.function.definition.operator-overload.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cuda-cpp"}}},"scope_resolution_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"}}},"scope_resolution_namespace_alias":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_namespace_alias_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.alias.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_namespace_alias_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_namespace_alias_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.alias.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.namespace.alias.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.alias.cuda-cpp"}}},"scope_resolution_namespace_block":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_namespace_block_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.block.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_namespace_block_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_namespace_block_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.block.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.namespace.block.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.block.cuda-cpp"}}},"scope_resolution_namespace_using":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_namespace_using_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.using.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_namespace_using_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_namespace_using_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.using.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.namespace.using.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.namespace.using.cuda-cpp"}}},"scope_resolution_parameter":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_parameter_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.parameter.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_parameter_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_parameter_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.parameter.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.parameter.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.parameter.cuda-cpp"}}},"scope_resolution_template_call":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_template_call_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.template.call.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_template_call_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_template_call_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.template.call.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.template.call.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.template.call.cuda-cpp"}}},"scope_resolution_template_definition":{"match":"(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+","captures":{"0":{"patterns":[{"include":"#scope_resolution_template_definition_inner_generated"}]},"1":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.template.definition.cuda-cpp"},"2":{"patterns":[{"include":"#template_call_range"}]}}},"scope_resolution_template_definition_inner_generated":{"match":"((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)","captures":{"1":{"patterns":[{"include":"#scope_resolution_template_definition_inner_generated"}]},"2":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.template.definition.cuda-cpp"},"3":{"patterns":[{"include":"#template_call_range"}]},"4":{},"5":{"name":"entity.name.scope-resolution.template.definition.cuda-cpp"},"6":{"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_range"}]},"7":{},"8":{"name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.template.definition.cuda-cpp"}}},"semicolon":{"match":";","name":"punctuation.terminator.statement.cuda-cpp"},"simple_type":{"match":"(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)?(?![\\w<:.]))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?","captures":{"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{},"13":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"14":{"patterns":[{"include":"#inline_comment"}]},"15":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"single_line_macro":{"match":"^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))#define.*(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"sizeof_operator":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.sizeof.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.sizeof.cuda-cpp"}},"contentName":"meta.arguments.operator.sizeof","patterns":[{"include":"#evaluation_context"}]},"sizeof_variadic_operator":{"begin":"(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.sizeof.variadic.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cuda-cpp"}},"contentName":"meta.arguments.operator.sizeof.variadic","patterns":[{"include":"#evaluation_context"}]},"square_brackets":{"name":"meta.bracket.square.access","begin":"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])","beginCaptures":{"1":{"name":"variable.other.object"},"2":{"name":"punctuation.definition.begin.bracket.square"}},"end":"\\]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square"}},"patterns":[{"include":"#evaluation_context"}]},"standard_declares":{"patterns":[{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.struct.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.struct.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.union.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.union.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.enum.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.enum.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.class.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.class.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}}]},"static_assert":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"keyword.other.static_assert.cuda-cpp"},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"name":"punctuation.section.arguments.begin.bracket.round.static_assert.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.static_assert.cuda-cpp"}},"patterns":[{"begin":"(,)(?:(?:\\s)+)?(?=(?:L|u8|u|U(?:(?:\\s)+)?\\\")?)","end":"(?=\\))","beginCaptures":{"1":{"name":"punctuation.separator.delimiter.comma.cuda-cpp"}},"endCaptures":{},"name":"meta.static_assert.message.cuda-cpp","patterns":[{"include":"#string_context"}]},{"include":"#evaluation_context"}]},"std_space":{"match":"(?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))","captures":{"0":{"patterns":[{"include":"#inline_comment"}]},"1":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"storage_specifiers":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"storage.modifier.specifier.$3.cuda-cpp"}}},"storage_types":{"patterns":[{"include":"#storage_specifiers"},{"include":"#inline_builtin_storage_type"},{"include":"#decltype"},{"include":"#typename"}]},"string_context":{"patterns":[{"begin":"((?:u|u8|U|L)?)\"","end":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.cuda-cpp"},"1":{"name":"meta.encoding.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.cuda-cpp"}},"name":"string.quoted.double.cuda-cpp","patterns":[{"match":"(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8})","name":"constant.character.escape.cuda-cpp"},{"match":"\\\\['\"?\\\\abfnrtv]","name":"constant.character.escape.cuda-cpp"},{"match":"\\\\[0-7]{1,3}","name":"constant.character.escape.cuda-cpp"},{"match":"(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))","captures":{"1":{"name":"constant.character.escape.cuda-cpp"},"2":{"name":"invalid.illegal.unknown-escape.cuda-cpp"}}},{"include":"#string_escapes_context_c"}]},{"begin":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.struct.cuda-cpp"},"1":{"name":"storage.type.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.type.modifier.final.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)","captures":{"1":{"name":"entity.name.type.struct.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"storage.type.modifier.final.cuda-cpp"},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"DLLEXPORT","name":"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cuda-cpp"},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.other.preprocessor.macro.predefined.probably.$0.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"20":{"name":"punctuation.separator.colon.inheritance.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.struct.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.struct.cuda-cpp"}},"name":"meta.head.struct.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#inheritance_context"},{"include":"#template_call_range"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.struct.cuda-cpp"}},"name":"meta.body.struct.cuda-cpp","patterns":[{"include":"#function_pointer"},{"include":"#static_assert"},{"include":"#constructor_inline"},{"include":"#destructor_inline"},{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.struct.cuda-cpp","patterns":[{"include":"$self"}]}]},"struct_declare":{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.struct.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.struct.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"switch_conditional_parentheses":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"punctuation.section.parens.begin.bracket.round.conditional.switch.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.bracket.round.conditional.switch.cuda-cpp"}},"name":"meta.conditional.switch.cuda-cpp","patterns":[{"include":"#evaluation_context"},{"include":"#c_conditional_context"}]},"switch_statement":{"begin":"((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.switch.cuda-cpp"},"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"5":{"name":"keyword.control.switch.cuda-cpp"}},"endCaptures":{},"name":"meta.block.switch.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.switch.cuda-cpp"}},"name":"meta.head.switch.cuda-cpp","patterns":[{"include":"#switch_conditional_parentheses"},{"include":"$self"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.switch.cuda-cpp"}},"name":"meta.body.switch.cuda-cpp","patterns":[{"include":"#default_statement"},{"include":"#case_statement"},{"include":"$self"},{"include":"#block_innards"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.switch.cuda-cpp","patterns":[{"include":"$self"}]}]},"template_argument_defaulted":{"match":"(?<=<|,)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s)+)*)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?([=])","captures":{"1":{"name":"storage.type.template.cuda-cpp"},"2":{"name":"entity.name.type.template.cuda-cpp"},"3":{"name":"keyword.operator.assignment.cuda-cpp"}}},"template_call_context":{"patterns":[{"include":"#ever_present_context"},{"include":"#template_call_range"},{"include":"#storage_types"},{"include":"#language_constants"},{"include":"#scope_resolution_template_call_inner_generated"},{"include":"#operators"},{"include":"#number_literal"},{"include":"#string_context"},{"include":"#comma_in_template_argument"},{"include":"#qualified_type"}]},"template_call_innards":{"match":"((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<1>?)+>)(?:\\s)*+","captures":{"0":{"patterns":[{"include":"#template_call_range"}]}},"name":"meta.template.call.cuda-cpp"},"template_call_range":{"begin":"<","end":">","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},"template_definition":{"begin":"(?","beginCaptures":{"1":{"name":"storage.type.template.cuda-cpp"},"2":{"name":"punctuation.section.angle-brackets.start.template.definition.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.definition.cuda-cpp"}},"name":"meta.template.definition.cuda-cpp","patterns":[{"begin":"(?<=\\w)(?:(?:\\s)+)?<","end":">","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"patterns":[{"include":"#template_call_context"}]},{"include":"#template_definition_context"}]},"template_definition_argument":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s)+)+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?(\\.\\.\\.)(?:(?:\\s)+)?((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))(?:(?:\\s)+)?(?:(,)|(?=>|$))","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"storage.type.template.argument.$3.cuda-cpp"},"4":{"patterns":[{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"storage.type.template.argument.$0.cuda-cpp"}]},"5":{"name":"entity.name.type.template.cuda-cpp"},"6":{"name":"storage.type.template.cuda-cpp"},"7":{"name":"punctuation.vararg-ellipses.template.definition.cuda-cpp"},"8":{"name":"entity.name.type.template.cuda-cpp"},"9":{"name":"punctuation.separator.delimiter.comma.template.argument.cuda-cpp"}}},"template_definition_context":{"patterns":[{"include":"#scope_resolution_template_definition_inner_generated"},{"include":"#template_definition_argument"},{"include":"#template_argument_defaulted"},{"include":"#template_call_innards"},{"include":"#evaluation_context"}]},"template_isolated_definition":{"match":"(?(?:(?:\\s)+)?$)","captures":{"1":{"name":"storage.type.template.cuda-cpp"},"2":{"name":"punctuation.section.angle-brackets.start.template.definition.cuda-cpp"},"3":{"name":"meta.template.definition.cuda-cpp","patterns":[{"include":"#template_definition_context"}]},"4":{"name":"punctuation.section.angle-brackets.end.template.definition.cuda-cpp"}}},"ternary_operator":{"begin":"\\?","end":":","beginCaptures":{"0":{"name":"keyword.operator.ternary.cuda-cpp"}},"endCaptures":{"0":{"name":"keyword.operator.ternary.cuda-cpp"}},"patterns":[{"include":"#ever_present_context"},{"include":"#string_context"},{"include":"#number_literal"},{"include":"#method_access"},{"include":"#member_access"},{"include":"#predefined_macros"},{"include":"#operators"},{"include":"#memory_operators"},{"include":"#wordlike_operators"},{"include":"#type_casting_operators"},{"include":"#control_flow_keywords"},{"include":"#exception_keywords"},{"include":"#the_this_keyword"},{"include":"#language_constants"},{"include":"#builtin_storage_type_initilizer"},{"include":"#qualifiers_and_specifiers_post_parameters"},{"include":"#functional_specifiers_pre_parameters"},{"include":"#storage_types"},{"include":"#lambdas"},{"include":"#attributes_context"},{"include":"#parentheses"},{"include":"#function_call"},{"include":"#scope_resolution_inner_generated"},{"include":"#square_brackets"},{"include":"#semicolon"},{"include":"#comma"}],"applyEndPatternLast":1},"the_this_keyword":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"variable.language.this.cuda-cpp"}}},"type_alias":{"match":"(using)(?:(?:\\s)+)?(?!namespace)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)?(?![\\w<:.]))(?:(?:\\s)+)?(\\=)(?:(?:\\s)+)?((?:typename)?)(?:(?:\\s)+)?((?:(?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)?(?![\\w<:.]))|(.*(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)?(?:(?:\\s)+)?(?:(;)|\\n)","captures":{"1":{"name":"keyword.other.using.directive.cuda-cpp"},"2":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"3":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"4":{"patterns":[{"include":"#inline_comment"}]},"5":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"14":{"name":"keyword.operator.assignment.cuda-cpp"},"15":{"name":"keyword.other.typename.cuda-cpp"},"16":{"patterns":[{"include":"#storage_specifiers"}]},"17":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"18":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"19":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"20":{"patterns":[{"include":"#inline_comment"}]},"21":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"22":{"patterns":[{"include":"#inline_comment"}]},"23":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"24":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"30":{"name":"meta.declaration.type.alias.value.unknown.cuda-cpp","patterns":[{"include":"#evaluation_context"}]},"31":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"32":{"patterns":[{"include":"#inline_comment"}]},"33":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"34":{"patterns":[{"include":"#inline_comment"}]},"35":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"36":{"patterns":[{"include":"#inline_comment"}]},"37":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"38":{"name":"punctuation.definition.begin.bracket.square.cuda-cpp"},"39":{"patterns":[{"include":"#evaluation_context"}]},"40":{"name":"punctuation.definition.end.bracket.square.cuda-cpp"},"41":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.declaration.type.alias.cuda-cpp"},"type_casting_operators":{"match":"((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"3":{"name":"keyword.operator.wordlike.cuda-cpp keyword.operator.cast.$3.cuda-cpp"}}},"typedef_class":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.class.cuda-cpp"},"1":{"name":"storage.type.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.type.modifier.final.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)","captures":{"1":{"name":"entity.name.type.class.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"storage.type.modifier.final.cuda-cpp"},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"DLLEXPORT","name":"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cuda-cpp"},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.other.preprocessor.macro.predefined.probably.$0.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"20":{"name":"punctuation.separator.colon.inheritance.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.class.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.class.cuda-cpp"}},"name":"meta.head.class.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#inheritance_context"},{"include":"#template_call_range"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.class.cuda-cpp"}},"name":"meta.body.class.cuda-cpp","patterns":[{"include":"#function_pointer"},{"include":"#static_assert"},{"include":"#constructor_inline"},{"include":"#destructor_inline"},{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.class.cuda-cpp","patterns":[{"match":"(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"12":{"name":"comment.block.cuda-cpp"},"13":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"14":{"name":"entity.name.type.alias.cuda-cpp"}}},{"match":","}]}]}]},"typedef_function_pointer":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()(\\*)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\s)+)?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)*(\\))(?:(?:\\s)+)?(\\()","end":"(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()","beginCaptures":{"1":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"2":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"3":{"patterns":[{"include":"#inline_comment"}]},"4":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"5":{"name":"comment.block.cuda-cpp"},"6":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"20":{"patterns":[{"include":"#inline_comment"}]},"21":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"22":{"name":"comment.block.cuda-cpp"},"23":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"24":{"patterns":[{"include":"#inline_comment"}]},"25":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"26":{"name":"comment.block.cuda-cpp"},"27":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"28":{"patterns":[{"include":"#inline_comment"}]},"29":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"30":{"name":"comment.block.cuda-cpp"},"31":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"32":{"name":"punctuation.section.parens.begin.bracket.round.function.pointer.cuda-cpp"},"33":{"name":"punctuation.definition.function.pointer.dereference.cuda-cpp"},"34":{"name":"entity.name.type.alias.cuda-cpp entity.name.type.pointer.function.cuda-cpp"},"35":{"name":"punctuation.definition.begin.bracket.square.cuda-cpp"},"36":{"patterns":[{"include":"#evaluation_context"}]},"37":{"name":"punctuation.definition.end.bracket.square.cuda-cpp"},"38":{"name":"punctuation.section.parens.end.bracket.round.function.pointer.cuda-cpp"},"39":{"name":"punctuation.section.parameters.begin.bracket.round.function.pointer.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.section.parameters.end.bracket.round.function.pointer.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"patterns":[{"include":"#function_parameter_context"}]}]},"typedef_struct":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.struct.cuda-cpp"},"1":{"name":"storage.type.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.type.modifier.final.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)","captures":{"1":{"name":"entity.name.type.struct.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"storage.type.modifier.final.cuda-cpp"},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"DLLEXPORT","name":"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cuda-cpp"},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.other.preprocessor.macro.predefined.probably.$0.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"20":{"name":"punctuation.separator.colon.inheritance.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.struct.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.struct.cuda-cpp"}},"name":"meta.head.struct.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#inheritance_context"},{"include":"#template_call_range"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.struct.cuda-cpp"}},"name":"meta.body.struct.cuda-cpp","patterns":[{"include":"#function_pointer"},{"include":"#static_assert"},{"include":"#constructor_inline"},{"include":"#destructor_inline"},{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.struct.cuda-cpp","patterns":[{"match":"(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"12":{"name":"comment.block.cuda-cpp"},"13":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"14":{"name":"entity.name.type.alias.cuda-cpp"}}},{"match":","}]}]}]},"typedef_union":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.union.cuda-cpp"},"1":{"name":"storage.type.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.type.modifier.final.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)","captures":{"1":{"name":"entity.name.type.union.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"storage.type.modifier.final.cuda-cpp"},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"DLLEXPORT","name":"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cuda-cpp"},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.other.preprocessor.macro.predefined.probably.$0.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"20":{"name":"punctuation.separator.colon.inheritance.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.union.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.union.cuda-cpp"}},"name":"meta.head.union.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#inheritance_context"},{"include":"#template_call_range"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.union.cuda-cpp"}},"name":"meta.body.union.cuda-cpp","patterns":[{"include":"#function_pointer"},{"include":"#static_assert"},{"include":"#constructor_inline"},{"include":"#destructor_inline"},{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.union.cuda-cpp","patterns":[{"match":"(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"8":{"name":"comment.block.cuda-cpp"},"9":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"12":{"name":"comment.block.cuda-cpp"},"13":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"14":{"name":"entity.name.type.alias.cuda-cpp"}}},{"match":","}]}]}]},"typeid_operator":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()","end":"\\)","beginCaptures":{"1":{"name":"keyword.operator.functionlike.cuda-cpp keyword.operator.typeid.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"punctuation.section.arguments.begin.bracket.round.operator.typeid.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.operator.typeid.cuda-cpp"}},"contentName":"meta.arguments.operator.typeid","patterns":[{"include":"#evaluation_context"}]},"typename":{"match":"(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|__forceinline__|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|__constant__|__restrict__|__noinline__|thread_local|synchronized|static_cast|__managed__|const_cast|__shared__|__global__|__device__|co_return|constexpr|constexpr|constexpr|consteval|protected|namespace|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|__host__|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<17>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:__forceinline__)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:__constant__)|(?:__restrict__)|(?:__noinline__)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:__managed__)|(?:const_cast)|(?:__shared__)|(?:__global__)|(?:__device__)|(?:co_return)|(?:constexpr)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:threadIdx)|(?:namespace)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:__host__)|(?:override)|(?:volatile)|(?:noexcept)|(?:blockIdx)|(?:blockDim)|(?:warpSize)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:gridDim)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<17>?)+>)?(?![\\w<:.]))","captures":{"1":{"name":"storage.modifier.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"patterns":[{"include":"#inline_comment"}]},"5":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"6":{"name":"meta.qualified_type.cuda-cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.cuda-cpp"},{"match":"(?","beginCaptures":{"0":{"name":"punctuation.section.angle-brackets.begin.template.call.cuda-cpp"}},"endCaptures":{"0":{"name":"punctuation.section.angle-brackets.end.template.call.cuda-cpp"}},"name":"meta.template.call.cuda-cpp","patterns":[{"include":"#template_call_context"}]},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.type.cuda-cpp"}]},"7":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cuda-cpp punctuation.separator.scope-resolution.type.cuda-cpp"},{"match":"(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"17":{}}},"undef":{"match":"(^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?undef\\b)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"punctuation.definition.directive.cuda-cpp"},"5":{"patterns":[{"include":"#inline_comment"}]},"6":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"7":{"name":"entity.name.function.preprocessor.cuda-cpp"}},"name":"meta.preprocessor.undef.cuda-cpp"},"union_block":{"begin":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)","end":"(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))","beginCaptures":{"0":{"name":"meta.head.union.cuda-cpp"},"1":{"name":"storage.type.$1.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"patterns":[{"include":"#attributes_context"},{"include":"#number_literal"}]},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"11":{"patterns":[{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))","captures":{"1":{"name":"storage.type.modifier.final.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)","captures":{"1":{"name":"entity.name.type.union.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"4":{"name":"comment.block.cuda-cpp"},"5":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"6":{"name":"storage.type.modifier.final.cuda-cpp"},"7":{"patterns":[{"include":"#inline_comment"}]},"8":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"9":{"name":"comment.block.cuda-cpp"},"10":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}},{"match":"DLLEXPORT","name":"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cuda-cpp"},{"match":"(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*","name":"entity.name.other.preprocessor.macro.predefined.probably.$0.cuda-cpp"}]},"12":{"patterns":[{"include":"#inline_comment"}]},"13":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"14":{"name":"comment.block.cuda-cpp"},"15":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"16":{"patterns":[{"include":"#inline_comment"}]},"17":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"18":{"name":"comment.block.cuda-cpp"},"19":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]},"20":{"name":"punctuation.separator.colon.inheritance.cuda-cpp"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cuda-cpp"},"2":{"name":"punctuation.terminator.statement.cuda-cpp"}},"name":"meta.block.union.cuda-cpp","patterns":[{"begin":"\\G ?","end":"(?:\\{|<%|\\?\\?<|(?=;))","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.union.cuda-cpp"}},"name":"meta.head.union.cuda-cpp","patterns":[{"include":"#ever_present_context"},{"include":"#inheritance_context"},{"include":"#template_call_range"}]},{"begin":"(?<=\\{|<%|\\?\\?<)","end":"\\}|%>|\\?\\?>","beginCaptures":{},"endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.union.cuda-cpp"}},"name":"meta.body.union.cuda-cpp","patterns":[{"include":"#function_pointer"},{"include":"#static_assert"},{"include":"#constructor_inline"},{"include":"#destructor_inline"},{"include":"$self"}]},{"begin":"(?<=\\}|%>|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)","beginCaptures":{},"endCaptures":{},"name":"meta.tail.union.cuda-cpp","patterns":[{"include":"$self"}]}]},"union_declare":{"match":"((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])","captures":{"1":{"name":"storage.type.union.declare.cuda-cpp"},"2":{"patterns":[{"include":"#inline_comment"}]},"3":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"4":{"name":"entity.name.type.union.cuda-cpp"},"5":{"patterns":[{"match":"\\*","name":"storage.modifier.pointer.cuda-cpp"},{"match":"(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&","captures":{"1":{"patterns":[{"include":"#inline_comment"}]},"2":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"3":{"name":"comment.block.cuda-cpp"},"4":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}},"name":"invalid.illegal.reference-type.cuda-cpp"},{"match":"\\&","name":"storage.modifier.reference.cuda-cpp"}]},"6":{"patterns":[{"include":"#inline_comment"}]},"7":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"8":{"patterns":[{"include":"#inline_comment"}]},"9":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"10":{"patterns":[{"include":"#inline_comment"}]},"11":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]},"12":{"name":"variable.other.object.declare.cuda-cpp"},"13":{"patterns":[{"include":"#inline_comment"}]},"14":{"patterns":[{"match":"(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))","captures":{"1":{"name":"comment.block.cuda-cpp punctuation.definition.comment.begin.cuda-cpp"},"2":{"name":"comment.block.cuda-cpp"},"3":{"patterns":[{"match":"\\*\\/","name":"comment.block.cuda-cpp punctuation.definition.comment.end.cuda-cpp"},{"match":"\\*","name":"comment.block.cuda-cpp"}]}}}]}}},"using_name":{"match":"(using)(?:\\s)+(?!namespace\\b)","captures":{"1":{"name":"keyword.other.using.directive.cuda-cpp"}}},"using_namespace":{"begin":"(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<6>?)+>)(?:\\s)*+)?::)*\\s*+)?((?