<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE language><language name="Varnish Configuration Language" version="12" kateversion="5.79" section="Configuration" extensions="*.vcl" author="Xavier Guerrin (xavier@tuxfamily.org)" license="WTFPL" priority="9"><highlighting><list name="vclStandardSubs"><item>vcl_backend_error</item><item>vcl_backend_fetch</item><item>vcl_backend_response</item><item>vcl_deliver</item><item>vcl_fini</item><item>vcl_hash</item><item>vcl_hit</item><item>vcl_init</item><item>vcl_miss</item><item>vcl_pass</item><item>vcl_pipe</item><item>vcl_purge</item><item>vcl_recv</item><item>vcl_synth</item></list><list name="vclConditionalKeywords"><item>elif</item><item>else</item><item>elseif</item><item>elsif</item><item>if</item></list><list name="vclKeywords"><item>call</item><item>esi</item><item>include</item><item>new</item><item>panic</item><item>rollback</item><item>set</item><item>synthetic</item><item>unset</item></list><list name="vclStandardFunctions"><item>ban</item><item>hash_data</item><item>regsub</item><item>regsuball</item></list><list name="vclModes"><item>abandon</item><item>deliver</item><item>error</item><item>fetch</item><item>hash</item><item>hit_for_pass</item><item>lookup</item><item>ok</item><item>pass</item><item>pipe</item><item>purge</item><item>restart</item><item>retry</item><item>synth</item></list><list name="vclDirectorTypes"><item>client</item><item>dns</item><item>fallback</item><item>hash</item><item>random</item><item>round-robin</item></list><list name="knownVMods"><item>abtest</item><item>authentication</item><item>boltsort</item><item>crashhandler</item><item>curl</item><item>digest</item><item>directors</item><item>dns</item><item>example</item><item>header</item><item>memcached</item><item>null</item><item>querystring</item><item>shield</item><item>softpurge</item><item>statsd</item><item>std</item><item>threescale</item><item>throttle</item><item>timers</item><item>timeutils</item><item>urlcode</item><item>var</item></list><contexts><context name="normal_text" attribute="Normal Text"><IncludeRules context="comments"/><StringDetect String="sub" attribute="Keyword" context="sub_declaration"/><StringDetect String="probe" attribute="Keyword" context="probe_declaration"/><StringDetect String="backend" attribute="Keyword" context="backend_declaration"/><StringDetect String="director" attribute="Keyword" context="director_declaration"/><StringDetect String="acl" attribute="Keyword" context="acl_declaration"/><StringDetect String="import" attribute="Keyword" context="import_declaration"/><StringDetect String="include" attribute="Keyword" context="include_declaration"/><StringDetect String="vcl" attribute="Keyword" context="version_declaration"/><IncludeRules context="embedded-c"/></context><context name="definition_code" attribute="Normal Text"><IncludeRules context="minimal_code"/><DetectChar char="=" attribute="Operator"/></context><context name="backend_declaration" attribute="Normal Text"><DetectSpaces/><DetectChar char="=" attribute="Operator"/><DetectChar char="{" attribute="Region Marker" context="backend_definition" beginRegion="backend_block"/><DetectChar char=";" attribute="Normal Text" context="#pop"/></context><context name="basic_code" attribute="Normal Text"><IncludeRules context="minimal_code"/><IncludeRules context="vcl_variables"/><IncludeRules context="vcl_operators"/></context><context name="comments" attribute="Comment" lineEndContext="#pop"><DetectChar char="#" attribute="Comment" context="shell-like-comment"/><StringDetect String="/*" attribute="Comment" context="c-like-comment" beginRegion="BlockComment"/><StringDetect String="//" attribute="Comment" context="cplusplus-like-comment"/></context><context name="minimal_code" attribute="Normal Text"><IncludeRules context="comments"/><RegExpr String="([0-9]+|[0-9]+\.[0-9]+|[0-9]+\.|\.[0-9]+)\s*(y|w|d|h|m|s|ms)" attribute="Duration"/><RegExpr String="([0-9]+|[0-9]+\.[0-9]+|[0-9]+\.|\.[0-9]+)\s*[KMGT]?B" attribute="Data Size"/><Float attribute="Float"/><Int attribute="Decimal"/><StringDetect String="true" attribute="Keyword"/><StringDetect String="false" attribute="Keyword"/><RegExpr String="debug\.(panic|author|obj|test_priv_(?:call|vcl)|str2blob|blob2hex|no_backend|rot52)|\.(enum|foo|date)|directors\.(fallback|hash|random|round_robin)|\.(add_backend|backend)|std\.(cache_req_body|collect|duration|fileread|healthy|integer|ip|log|port|querysort|random|real|real2time|rollback|set_ip_tos|strstr|syslog|time|time2integer|time2real|timestamp|tolower|toupper)" attribute="Known VMod Function"/><DetectChar char='"' attribute="String" context="string"/><StringDetect String='{"' attribute="String" context="string_enclosure" beginRegion="string_enclosure_block"/></context><context name="conditional_expression" attribute="Normal Text"><IncludeRules context="basic_code"/><DetectChar char="(" attribute="Region Marker" context="conditional_expression" beginRegion="conditional_expression_block"/><DetectChar char=")" attribute="Region Marker" context="#pop" endRegion="conditional_expression_block"/></context><context name="embedded-c" attribute="Normal Text"><StringDetect String="C{" attribute="Region Marker" context="embedded-c_enclosure" beginRegion="embedded_c_block"/></context><context name="import_identified" attribute="Normal Text"><DetectChar char=";" attribute="Normal Text" context="#pop#pop"/><StringDetect String="from" attribute="Keyword" context="import_from"/></context><context name="probe_declaration" attribute="Normal Text"><DetectSpaces/><DetectChar char="=" attribute="Operator"/><DetectChar char="{" attribute="Region Marker" context="probe_definition" beginRegion="probe_block"/><DetectChar char=";" attribute="Normal Text" context="#pop"/></context><context name="regular_code" attribute="Normal Text"><IncludeRules context="basic_code"/><keyword String="vclKeywords" attribute="Keyword"/><keyword String="vclStandardSubs" attribute="Standard VCL Sub"/><keyword String="vclStandardFunctions" attribute="Standard VCL Function"/><keyword String="vclConditionalKeywords" attribute="Condition Keyword" context="condition_part"/><StringDetect String="return" attribute="Keyword" context="return_statement"/><IncludeRules context="embedded-c"/></context><context name="acl_declaration" attribute="Normal Text"><DetectChar char="{" attribute="Region Marker" context="acl_definition" beginRegion="acl_block"/></context><context name="acl_definition" attribute="Normal Text"><IncludeRules context="minimal_code"/><AnyChar String="!/" attribute="Logical Operator"/><DetectChar char="}" attribute="Region Marker" context="#pop#pop" endRegion="acl_block"/></context><context name="backend_definition" attribute="Normal Text"><RegExpr String="\.(host|port|host_header|connect_timeout|first_byte_timeout|between_bytes_timeout|max_connections)" attribute="Backend Property"/><IncludeRules context="definition_code"/><StringDetect String=".probe" attribute="Backend Property" context="probe_declaration"/><DetectChar char="}" attribute="Region Marker" context="#pop#pop" endRegion="backend_block"/></context><context name="c-like-comment" attribute="Comment"><DetectSpaces/><StringDetect String="*/" attribute="Comment" context="#pop" endRegion="BlockComment"/><IncludeRules context="##Comments"/></context><context name="condition_part" attribute="Normal Text"><keyword String="vclConditionalKeywords" attribute="Condition Keyword"/><DetectChar char="(" attribute="Region Marker" context="conditional_expression" beginRegion="conditional_expression_block"/><DetectChar char="{" attribute="Region Marker" context="conditional_block" beginRegion="conditional_blockregion"/></context><context name="conditional_block" attribute="Normal Text"><IncludeRules context="regular_code"/><DetectChar char="}" attribute="Region Marker" context="#pop#pop" endRegion="conditional_blockregion"/></context><context name="cplusplus-like-comment" attribute="Comment" lineEndContext="#pop"><DetectSpaces/><IncludeRules context="##Comments"/></context><context name="director_backend" attribute="Normal Text"><IncludeRules context="definition_code"/><RegExpr String="\.(weight|suffix)" attribute="Director Property"/><StringDetect String=".backend" attribute="Director Property" context="backend_declaration"/><DetectChar char="}" attribute="Region Marker" context="#pop" endRegion="director_backend_block"/></context><context name="director_declaration" attribute="Normal Text"><DetectSpaces/><keyword String="vclDirectorTypes" attribute="Director Type"/><StringDetect String="round-robin" attribute="Director Type"/><DetectChar char="{" attribute="Region Marker" context="director_definition" beginRegion="director_block"/></context><context name="director_definition" attribute="Normal Text"><IncludeRules context="definition_code"/><RegExpr String="\.(retries|ttl|suffix)" attribute="Director Property"/><StringDetect String=".list" attribute="Director Property" context="backend_declaration"/><DetectChar char="{" attribute="Region Marker" context="director_backend" beginRegion="director_backend_block"/><DetectChar char="}" attribute="Region Marker" context="#pop#pop" endRegion="backend_block"/></context><context name="embedded-c_enclosure" attribute="Normal Text"><StringDetect String="}C" attribute="Region Marker" context="#pop" endRegion="embedded_c_block"/><IncludeRules context="##C"/></context><context name="import_declaration" attribute="Normal Text"><keyword String="knownVMods" attribute="Well-known VMod" context="import_identified"/><DetectIdentifier attribute="VMod Identifier" context="import_identified"/></context><context name="import_from" attribute="Normal Text"><DetectChar char='"' attribute="String" context="import_from_path"/></context><context name="import_from_path" attribute="String"><DetectChar char='"' attribute="String" context="import_from_path_complete"/></context><context name="import_from_path_complete" attribute="Normal Text"><DetectChar char=";" attribute="Normal Text" context="#pop#pop#pop#pop#pop"/></context><context name="include_declaration" attribute="Normal Text"><DetectChar char='"' attribute="String" context="include_path"/></context><context name="include_path" attribute="String"><DetectChar char='"' attribute="String" context="include_path_complete"/></context><context name="include_path_complete" attribute="Normal Text"><DetectChar char=";" attribute="Normal Text" context="#pop#pop#pop"/></context><context name="probe_definition" attribute="Normal Text"><RegExpr String="\.(url|request|window|threshold|initial|expected_response|interval|timeout)" attribute="Probe Property"/><IncludeRules context="definition_code"/><DetectChar char="}" attribute="Region Marker" context="#pop#pop" endRegion="probe_block"/></context><context name="return_statement" attribute="Normal Text"><IncludeRules context="comments"/><StringDetect String="synth" attribute="Keyword" context="return_synth"/><keyword String="vclModes" attribute="Action Keyword"/><DetectChar char=";" attribute="Normal Text" context="#pop"/></context><context name="return_synth" attribute="Normal Text"><IncludeRules context="basic_code"/><DetectChar char=")" attribute="Normal Text" context="#pop"/></context><context name="shell-like-comment" attribute="Comment" lineEndContext="#pop"><DetectSpaces/><IncludeRules context="##Comments"/></context><context name="string" attribute="String" lineEndContext="#pop"><DetectChar char='"' attribute="String" context="#pop"/></context><context name="string_enclosure" attribute="String"><StringDetect String='"}' attribute="String" context="#pop" endRegion="string_enclosure_block"/></context><context name="sub_declaration" attribute="Normal Text"><DetectSpaces/><keyword String="vclStandardSubs" attribute="Standard VCL Sub"/><DetectChar char="{" attribute="Region Marker" context="sub_definition" beginRegion="sub_block"/></context><context name="sub_definition" attribute="Normal Text"><IncludeRules context="regular_code"/><DetectChar char="}" attribute="Region Marker" context="#pop#pop" endRegion="sub_block"/></context><context name="vcl_operators" attribute="Operator"><StringDetect String="&amp;&amp;" attribute="Logical Operator"/><StringDetect String="||" attribute="Logical Operator"/><StringDetect String="==" attribute="Comparison Operator"/><StringDetect String="!=" attribute="Comparison Operator"/><StringDetect String="&lt;=" attribute="Comparison Operator"/><StringDetect String=">=" attribute="Comparison Operator"/><DetectChar char="~" attribute="Comparison Operator"/><StringDetect String="!~" attribute="Comparison Operator"/><DetectChar char="!" attribute="Logical Operator"/><StringDetect String="+=" attribute="Arithmetic Operator"/><StringDetect String="-=" attribute="Arithmetic Operator"/><StringDetect String="*=" attribute="Arithmetic Operator"/><StringDetect String="/=" attribute="Arithmetic Operator"/><StringDetect String="++" attribute="Arithmetic Operator"/><StringDetect String="--" attribute="Arithmetic Operator"/><AnyChar String="+-*/" attribute="Arithmetic Operator"/><StringDetect String=">>" attribute="Arithmetic Operator"/><StringDetect String="&lt;&lt;" attribute="Arithmetic Operator"/><AnyChar String="&lt;>" attribute="Comparison Operator"/><DetectChar char="=" attribute="Operator"/></context><context name="vcl_variables" attribute="Normal Text"><StringDetect String="now" attribute="Variable"/><RegExpr String="storage\.[a-zA-Z0-9]+(?:\.(?:free_space|used_space|happy))?" attribute="Storage"/><RegExpr String="client\.(ip|identity)|server\.(ip|hostname|identity|port)" attribute="TCP Property"/><RegExpr String="req\.(method|url|proto|restarts|esi_level|ttl|xid|esi|can_gzip|backend_hint|hash_ignore_busy|hash_always_miss)|bereq\.(xid|retries|backend|method|url|proto|uncacheable|connect_timeout|first_byte_timeout|between_bytes_timeout)|obj\.(proto|status|reason|hits|ttl|grace|keep|uncacheable)|beresp\.(proto|status|reason|do_esi|do_stream|do_gzip|do_gunzip|uncacheable|ttl|grace|keep|backend\.(name|ip)|storage_hint)|resp\.(proto|status|reason)" attribute="HTTP Property"/><RegExpr String="(req|bereq|resp|beresp|obj)\.http\.X-[-_A-Za-z0-9]*" attribute="HTTP X- Header"/><RegExpr String="(req|bereq|resp|beresp|obj)\.http\.[A-Za-z][-_A-Za-z0-9]*" attribute="HTTP Header"/></context><context name="version_declaration" attribute="Normal Text"><Float attribute="Float"/><DetectChar char=";" attribute="Normal Text" context="#pop"/></context></contexts><itemDatas><itemData name="Normal Text" defStyleNum="dsNormal"/><itemData name="Comment" defStyleNum="dsComment"/><itemData name="Keyword" defStyleNum="dsKeyword"/><itemData name="Condition Keyword" defStyleNum="dsKeyword"/><itemData name="Action Keyword" defStyleNum="dsKeyword"/><itemData name="Variable" defStyleNum="dsVariable"/><itemData name="Director Type" defStyleNum="dsDataType"/><itemData name="Standard VCL Function" defStyleNum="dsFunction"/><itemData name="Standard VCL Sub" defStyleNum="dsFunction" bold="1"/><itemData name="Operator" defStyleNum="dsOthers"/><itemData name="Comparison Operator" defStyleNum="dsOthers"/><itemData name="Arithmetic Operator" defStyleNum="dsOthers"/><itemData name="Logical Operator" defStyleNum="dsOthers"/><itemData name="String" defStyleNum="dsString"/><itemData name="Region Marker" defStyleNum="dsNormal"/><itemData name="Probe Property" defStyleNum="dsAttribute" bold="1" italic="0"/><itemData name="Backend Property" defStyleNum="dsAttribute" bold="1" italic="0"/><itemData name="Director Property" defStyleNum="dsAttribute" bold="1" italic="0"/><itemData name="Storage" defStyleNum="dsAttribute" bold="0" italic="0"/><itemData name="TCP Property" defStyleNum="dsAttribute" bold="0" italic="1"/><itemData name="HTTP Property" defStyleNum="dsAttribute" bold="0" italic="0"/><itemData name="HTTP Header" defStyleNum="dsExtension" bold="0" italic="0"/><itemData name="HTTP X- Header" defStyleNum="dsExtension" bold="0" italic="1"/><itemData name="Decimal" defStyleNum="dsDecVal"/><itemData name="Duration" defStyleNum="dsDecVal"/><itemData name="Data Size" defStyleNum="dsDecVal"/><itemData name="Float" defStyleNum="dsFloat" spellChecking="0"/><itemData name="VMod Identifier" defStyleNum="dsDataType" bold="0"/><itemData name="Well-known VMod" defStyleNum="dsDataType" bold="1"/><itemData name="Known VMod Function" defStyleNum="dsDataType" bold="0"/></itemDatas></highlighting><general><comments><comment name="singleLine" start="#"/><comment name="multiLine" start="/*" end="*/" region="BlockComment"/></comments><keywords casesensitive="1"/></general></language>