o
    Ñ­jíÆ  ã                   @   sø  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ g d¢ZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!dd„ Z"G dd„ deƒZ#G dd„ deƒZ$G dd„ deƒZ%G dd„ deƒZ&G dd„ deƒZ'G dd„ deƒZ(G d d!„ d!eƒZ)G d"d#„ d#eƒZ*G d$d%„ d%eƒZ+G d&d'„ d'eƒZ,G d(d)„ d)eƒZ-G d*d+„ d+eƒZ.G d,d-„ d-eƒZ/G d.d/„ d/eƒZ0G d0d1„ d1eƒZ1G d2d3„ d3eƒZ2G d4d5„ d5eƒZ3dS )6zÜ
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)ÚExtendedRegexLexerÚ
RegexLexerÚdefaultÚwordsÚbygroupsÚincludeÚusingÚline_re)ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚ
WhitespaceÚLiteralÚErrorÚGeneric)Ú	BashLexer)Ú	JsonLexer)ÚIniLexerÚSystemdLexerÚDesktopLexerÚRegeditLexerÚPropertiesLexerÚKconfigLexerÚCfengine3LexerÚApacheConfLexerÚSquidConfLexerÚNginxConfLexerÚLighttpdConfLexerÚDockerLexerÚTerraformLexerÚTermcapLexerÚTerminfoLexerÚPkgConfigLexerÚPacmanConfLexerÚAugeasLexerÚ	TOMLLexerÚNestedTextLexerÚSingularityLexerÚUnixConfigLexerc                   @   sì   e Zd ZdZdZg d¢Zg d¢ZddgZdZdZ	d	e
fd
ejfdeee
ƒfdeeje
ee
eƒdfdeeje
ee
eee
ƒdfdeeje
ee
eƒfdejfgdeeee
ƒdfd
ejfdedfgd	e
fdee
eee
ƒfdedfgdœZdd„ ZdS )r   z5
    Lexer for configuration files in INI style.
    ÚINI)ÚiniÚcfgÚdosini)z*.iniz*.cfgz*.infz.editorconfigz
text/x-iniztext/infz&https://en.wikipedia.org/wiki/INI_fileÚ ú\s+ú[;#].*z(\[.*?\])([ \t]*)$z!(.*?)([ \t]*)([=:])([ \t]*)(["'])Úquoted_valuez.(.*?)([ \t]*)([=:])([ \t]*)([^;#\n]*)(\\)(\s+)Úvaluez6(.*?)([ \t]*)([=:])([ \t]*)([^ ;#\n]*(?: +[^ ;#\n]+)*)z(.+?)$z([^"'\n]*)(["'])(\s*)ú#popú$z(\s*)(.*)(\\)([ \t]*)z.*$)Úrootr5   r6   c                 C   s:   |   d¡}|dk rdS | d dkr| |d  dkrdS dS )	NÚ
é   Fr   ú[é   ú]gš™™™™™é?)Úfind)ÚtextÚnpos© rB   úT/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pygments/lexers/configs.pyÚanalyse_textI   s   
zIniLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedr   r   ÚSingler   r   r   Ú	Attributer   r   r
   ÚtokensrD   rB   rB   rB   rC   r      sP    þÿýÿòÿüÿüér   c                   @   sx   e Zd ZdZdZdZdgZdgZdgZdZ	dd	e
fd
eeje
ƒfdeee
ƒfdeejeje
ee
ee
ƒfgiZdd„ ZdS )r   z#
    Lexer for .desktop files.
    zDesktop filezXhttps://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.htmlÚdesktopz	*.desktopzapplication/x-desktopú2.16r9   ú	^[ \t]*\nz
^(#.*)(\n)ú(\[[^\]\n]+\])(\n)zG([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)c                 C   ó2   |   d¡rdS t d| d d… tj¡d urdS dS )Nz[Desktop Entry]ç      ð?z^\[Desktop Entry\][ \t]*$éô  çÍÌÌÌÌÌì?ç        ©Ú
startswithÚreÚsearchÚ	MULTILINE©r@   rB   rB   rC   rD   h   ó
   
zDesktopLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   rO   r   r   rP   Ú	Namespacer   r   rQ   rD   rB   rB   rB   rC   r   R   s$    ÿüÿ
r   c                   @   sº   e Zd ZdZdZdZdgZg d¢ZdZde	fde
eje	ƒfd	e
ee	ƒfd
e
eje	ee	eee	ƒdfde
eje	ee	ee	ƒfgde
eje	ƒfde
e	eee	ƒfde
e	ee	ƒdfgdœZdd„ ZdS )r   z'
    Lexer for systemd unit files.
    ÚSystemdzDhttps://www.freedesktop.org/software/systemd/man/systemd.syntax.htmlÚsystemd)z	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scoperS   rT   z^([;#].*)(\n)rU   z*([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)r6   z&([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)z([ \t]*)([^\n]*)(\\)(\n)z([ \t]*)([^\n]*)(\n)r7   ©r9   r6   c                 C   rV   )Nz[Unit]rW   z^\[Unit\][ \t]*$rX   rY   rZ   r[   r`   rB   rB   rC   rD   ”   ra   zSystemdLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   r   rO   r   r   rP   r   r   r
   rQ   rD   rB   rB   rB   rC   r   p   s<    ÿýÿøÿÿûôr   c                   @   s¶   e Zd ZdZdZdZdgZdgZdgZdZ	de
fd	efd
ejfdeeeejeƒfdeejeeeƒdfdeejeeeƒdfgdedfdeejeeƒdfdedfedƒgdœZdd„ ZdS )r   z?
    Lexer for Windows Registry files produced by regedit.
    Úregz8http://en.wikipedia.org/wiki/Windows_Registry#.REG_filesÚregistryz*.regztext/x-windows-registryú1.6zWindows Registry Editor.*r3   r4   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)r6   z(.*?)([ \t]*)(=)([ \t]*)ú-r7   z1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+)ú.+re   c                 C   s
   |   d¡S )NzWindows Registry Editor)r\   r`   rB   rB   rC   rD   Â   s   
zRegeditLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r
   r   r   rO   r   r   r   r   ÚBuiltinrP   ÚVariabler   r   r   r   rQ   rD   rB   rB   rB   rC   r   œ   s@    ÿþþõÿúðr   c                   @   s°   e Zd ZdZdZddgZdgZdgZdZdZ	d	e
jfd
efdefedƒgdejfedƒdeeeeƒdfdedfd
edfgdefedƒd
edfgdeejeƒfdejfgdœZdS )r   z‹
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec
    Ú
PropertiesÚ
propertiesÚjpropertiesz*.propertiesztext/x-java-propertiesz)https://en.wikipedia.org/wiki/.propertiesz1.4z[!#].*|/{2}.*ú\nz	^[^\S\n]+Úkeyz
[^\\:=\s]+Úescapesz([^\S\n]*)([:=])([^\S\n]*))r7   r6   ú[^\S\n]+r7   z[^\\\n]+z(\\\n)([^\S\n]*)z\\(.|\n))r9   rq   r6   rr   N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   rO   r   r   r   rP   r   r   r   r   ÚEscaperQ   rB   rB   rB   rC   r   Æ   s<    ø
þôú
ü
ßr   c                 C   sP   d}|dkr	d}nd|d  }| dkrd}nd| › d�}d	|› d
|› d|› d�S )Né   é   ú+z{1,%d}r=   r2   Ú{Ú}z(?:\t| z\t| {z})z.*\nrB   )ÚlevelÚ	tab_widthÚspace_repeatÚlevel_repeatrB   rB   rC   Ú
_rx_indentþ   s   r~   c                   @   s  e Zd ZdZdZg d¢ZdZg d¢ZdgZdZ	dZ
d	d
„ Zdd„ Zdefdejfeddd�efdedfdejfdefdefdejfdejfdejfdefgdefedƒedƒedƒedƒed ƒed!ƒed"ƒed#ƒg	edƒedƒedƒedƒed ƒed!ƒed"ƒd$œ	Zd%S )&r   z(
    For Linux-style Kconfig files.
    ÚKconfig)ÚkconfigÚ
menuconfigzlinux-configzkernel-configrh   )zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigzChttps://www.kernel.org/doc/html/latest/kbuild/kconfig-language.htmlr   c                 C   s   t | ƒtjd| › �fS )NÚindent)r~   r   ÚDoc©rz   rB   rB   rC   Úcall_indent#  s   zKconfigLexer.call_indentc                 C   s   t | ƒtjfdtftdƒgS )Nú\s*\nú#pop:2)r~   r   rƒ   r
   r   r„   rB   rB   rC   Ú	do_indent'  s   ýzKconfigLexer.do_indentr3   ú#.*?\n)ÚmainmenuÚconfigr�   ÚchoiceÚ	endchoiceÚcommentÚmenuÚendmenuz
visible ifÚifÚendifÚsourceÚpromptÚselectz
depends onr   ÚrangeÚoptionú\b©Úsuffixz(---help---|help)[\t ]*\nÚhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()]ú[0-9]+z'(''|[^'])*'z"(""|[^"])*"ú\S+r†   é   é   é   é   r;   rv   r=   r7   )	r9   r›   Úindent7Úindent6Úindent5Úindent4Úindent3Úindent2Úindent1N)rE   rF   rG   rH   rI   rJ   rN   rK   rL   rM   Úflagsr…   rˆ   r   r   rO   r   r   r   rk   r   r   r   ÚIntegerr   ÚDoubler
   r   rQ   rB   rB   rB   rC   r     s^    üûÿïó
Ôr   c                   @   sv  e Zd ZdZdZdZddgZdgZg ZdZ	de
fd	eeeeeeƒfd
eeeeeejeƒdfdeeeeeejƒfdeeejeeejeeeƒfdeejeeeƒfdedfdeejeƒfdeejeƒfdeejeƒfdejfdefdefdefdejfdejfdejfdefgdejdfdejfdedfd efd!efgdejd"fd#ejdfd$ejfgd%edfd&efdejfdefgd'œZd(S ))r   z+
    Lexer for CFEngine3 policy files.
    Ú	CFEngine3zhttp://cfengine.orgÚ	cfengine3Úcf3z*.cfz1.5r‰   z(body)(\s+)(\S+)(\s+)(control)z%(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()Úarglistz!(body|bundle)(\s+)(\S+)(\s+)(\w+)z7(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)z(\S+)(\s*)(=>)(\s*)ú"Ústringz	(\w+)(\()z([\w.!&|()]+)(::)z(\w+)(:)z@[{(][^)}]+[})]z[(){},;]z=>z->z\d+\.\d+ú\d+ú\w+r3   z\$[{(]Úinterpolú\\.r7   rp   Ú.ú#pushz[})]z	[^${()}]+z\)ú,)r9   r±   r´   r¯   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   r   r   ÚFunctionr   rl   ÚTyper   ÚReservedr
   r   ÚClassÚDeclarationr   ÚFloatrª   ÚInterpolrt   rQ   rB   rB   rB   rC   r   `  sp    ÿþÿ
ÿÿÿç
û

ýü
Ør   c                   @   sÊ   e Zd ZdZdZg d¢Zg d¢ZdgZdZdZ	e
je
jB Zdefd	efd
eejeeejƒfdeejejƒfdejdfdefgdefdedfdefdefdefdefdejfdefdejfdefg
dœZdS )r   zT
    Lexer for configuration files following the Apache config file
    format.
    Ú
ApacheConf)Ú
apacheconfÚaconfÚapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfz6https://httpd.apache.org/docs/current/configuring.htmlz0.6r3   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*r6   z\.+z\\\nz\n+r7   z\\rs   ú\d+\.\d+\.\d+\.\d+(?:/\d+)?r²   z/([*a-z0-9][*\w./-]+)z¢(on|off|none|any|all|double|email|dns|min|minimal|os|productonly|full|emerg|alert|crit|error|warn|notice|info|debug|registry|script|inetd|standalone|user|group)\bz"([^"\\]*(?:\\(.|\n)[^"\\]*)*)"z	[^\s"\\]+re   N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r]   r_   Ú
IGNORECASEr©   r   r   r   r   ÚTagr   rk   r
   r   ÚOtherr   r«   rQ   rB   rB   rB   rC   r   �  sD    ÿÿ
øýó
õr   c                   @   sB  e Zd ZdZdZdZg d¢ZdgZdgZdZ	e
jZdZd	Zd
ZdZdZdZdZde› de› d�ZdZde› de› d�Zde› de› d�Ze› de› d�Zdefdedfeeddd�efeeddd�ejfeeddd�efeeddd�efeedd d�efeeddd�efee j!fd!e fd"e"fgd#ej#d$fd%ed$fe$d$ƒgd&œZ%d'S )(r    z.
    Lexer for squid configuration files.
    Ú	SquidConfzhttp://www.squid-cache.org/)Ú	squidconfú
squid.confÚsquidrÊ   ztext/x-squidconfz0.9)ºÚ
access_logÚaclÚalways_directÚannounce_hostÚannounce_periodÚannounce_portÚannounce_toÚanonymize_headersÚappend_domainÚas_whois_serverÚauth_param_basicÚauthenticate_childrenÚauthenticate_programÚauthenticate_ttlÚbroken_postsÚbuffered_logsÚcache_access_logÚcache_announceÚ	cache_dirÚcache_dns_programÚcache_effective_groupÚcache_effective_userÚ
cache_hostÚcache_host_aclÚcache_host_domainÚ	cache_logÚ	cache_memÚcache_mem_highÚcache_mem_lowÚ	cache_mgrÚcachemgr_passwdÚ
cache_peerÚcache_peer_accessÚcache_replacement_policyÚcache_stoplistÚcache_stoplist_patternÚcache_store_logÚ
cache_swapÚcache_swap_highÚcache_swap_logÚcache_swap_lowÚ	client_dbÚclient_lifetimeÚclient_netmaskÚconnect_timeoutÚcoredump_dirÚdead_peer_timeoutÚdebug_optionsÚdelay_accessÚdelay_classÚdelay_initial_bucket_levelÚdelay_parametersÚdelay_poolsÚ	deny_infoÚdns_childrenÚdns_defnamesÚdns_nameserversÚdns_testnamesÚemulate_httpd_logÚerr_html_textÚfake_user_agentÚfirewall_ipÚforwarded_forÚforward_snmpd_portÚfqdncache_sizeÚftpget_optionsÚftpget_programÚftp_list_widthÚftp_passiveÚftp_userÚhalf_closed_clientsÚheader_accessÚheader_replaceÚhierarchy_stoplistÚhigh_response_time_warningÚhigh_page_fault_warningÚ
hosts_fileÚ	htcp_portÚhttp_accessÚhttp_anonymizerÚhttpd_accelÚhttpd_accel_hostÚhttpd_accel_portÚhttpd_accel_uses_host_headerÚhttpd_accel_with_proxyÚ	http_portÚhttp_reply_accessÚ
icp_accessÚicp_hit_staleÚicp_portÚicp_query_timeoutÚident_lookupÚident_lookup_accessÚident_timeoutÚincoming_http_averageÚincoming_icp_averageÚinside_firewallÚipcache_highÚipcache_lowÚipcache_sizeÚlocal_domainÚlocal_ipÚlogfile_rotateÚlog_fqdnÚlog_icp_queriesÚlog_mime_hdrsÚmaximum_object_sizeÚmaximum_single_addr_triesÚmcast_groupsÚmcast_icp_query_timeoutÚmcast_miss_addrÚmcast_miss_encode_keyÚmcast_miss_portÚmemory_poolsÚmemory_pools_limitÚmemory_replacement_policyÚ
mime_tableÚmin_http_poll_cntÚmin_icp_poll_cntÚminimum_direct_hopsÚminimum_object_sizeÚminimum_retry_timeoutÚmiss_accessÚnegative_dns_ttlÚnegative_ttlÚneighbor_timeoutÚneighbor_type_domainÚ
netdb_highÚ	netdb_lowÚnetdb_ping_periodÚnetdb_ping_rateÚnever_directÚno_cacheÚpassthrough_proxyÚpconn_timeoutÚpid_filenameÚpinger_programÚpositive_dns_ttlÚprefer_directÚ
proxy_authÚproxy_auth_realmÚ
query_icmpÚquick_abortÚquick_abort_maxÚquick_abort_minÚquick_abort_pctÚrange_offset_limitÚread_timeoutÚredirect_childrenÚredirect_programÚredirect_rewrites_host_headerÚreference_ageÚrefresh_patternÚreload_into_imsÚrequest_body_max_sizeÚrequest_sizeÚrequest_timeoutÚshutdown_lifetimeÚsingle_parent_bypassÚsiteselect_timeoutÚsnmp_accessÚsnmp_incoming_addressÚ	snmp_portÚsource_pingÚ	ssl_proxyÚstore_avg_object_sizeÚstore_objects_per_bucketÚstrip_query_termsÚswap_level1_dirsÚswap_level2_dirsÚtcp_incoming_addressÚtcp_outgoing_addressÚtcp_recv_bufsizeÚtest_reachabilityÚudp_hit_objÚudp_hit_obj_sizeÚudp_incoming_addressÚudp_outgoing_addressÚunique_hostnameÚunlinkd_programÚuri_whitespaceÚuseragent_logÚvisible_hostnameÚ
wais_relayÚwais_relay_hostÚwais_relay_port)z
proxy-onlyÚweightÚttlzno-queryr   zround-robinzmulticast-responderÚonÚoffÚallÚdenyÚallowÚviaÚparentz	no-digestÚheapÚlruÚrealmÚchildrenÚq1Úq2ÚcredentialsttlÚnoneÚdisableÚoffline_toggleÚdiskd)ÚshutdownÚinfoÚ	parameterÚserver_listÚclient_listrÊ   )ÚobjectsÚ
vm_objectsÚutilizationÚipcacheÚ	fqdncacheÚdnsÚ
redirectorÚioÚreply_headersÚfiledescriptorsÚnetdb)ÚstatusÚenabler—  Úclear)Ú	url_regexÚurlpath_regexÚreferer_regexÚportÚprotoÚreq_mime_typeÚrep_mime_typeÚmethodÚbrowserÚuserÚsrcÚdstÚtimeÚ	dstdomainÚidentÚsnmp_communityz(\d+|0x[0-9a-f]+)ú(z(\.z){3})z([0-9a-f]{0,4})z(:z){1,7})ú|ú)z(/(z|\d+))?r3   ú#rŽ   r˜   ©Úprefixrš   zstats/zlog/ú=z(?:\b\d+\b(?:-\b\d+|%)?)r�   z	\s*TAG:.*r7   rj   )r9   rŽ   N)&rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r]   rÅ   r©   ÚkeywordsÚoptsÚactionsÚactions_statsÚactions_logÚaclsÚ
ipv4_groupÚipv4Ú
ipv6_groupÚipv6Úbare_ipÚipr   r   r   r   r   ÚConstantr   r   r¾   r
   rt   r   rQ   rB   rB   rB   rC   r    È  sL    ;ô
ý
ñr    c                   @   sê   e Zd ZdZdZdZdgZdgZdgZdZ	de
eeeƒfd	ed
fedƒgdedfd	ejd
fedƒgdedfdedfedƒgdejfdejfdejfde
eeejƒfdefdejfde
eeejƒfdefdefdefdefdefgdœZdS ) r!   z.
    Lexer for Nginx configuration files.
    zNginx configuration filezhttp://nginx.net/Únginxz
nginx.confztext/x-nginx-confú0.11z(include)(\s+)([^\s;]+)z[^\s;#]+ÚstmtÚbaseú\}r‡   ú\{Úblockú;r7   ú#.*\nzon|offz\$[^\s;#()]+z([a-z0-9.-]+)(:)([0-9]+)z[a-z-]+/[a-z-+]+z[0-9]+[km]?\bz(~)(\s*)([^\s{]+)z[:=~]z[^\s;#{}$]+z	/[^\s;#]*r3   z[$;])r9   r×  rÓ  rÔ  N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   r   r   r   rb   r   rO   rÐ  rl   r   rª   r   ÚRegexr
   rQ   rB   rB   rB   rC   r!   I  sH    ý
ýýÿò
ðr!   c                   @   sz   e Zd ZdZdZdZddgZdgZdgZdZ	d	d
e
jfdefdefdefdefdefdejfdefdejfdefg
iZdS )r"   z1
    Lexer for Lighttpd configuration files.
    zLighttpd configuration filezhttp://lighttpd.net/ÚlighttpdÚlightyzlighttpd.confztext/x-lighttpd-confrÒ  r9   rÙ  z/\S*z[a-zA-Z._-]+rÄ   rœ   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r3   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   rO   r   r   r   r   rk   r   r   r«   r   rQ   rB   rB   rB   rC   r"   w  s*    öÿr"   c                   @   s  e Zd ZdZdZdZddgZddgZdgZd	Z	d
Z
dZdZejejB Zddefdeeeeeeeeƒfde› d�eeeeeƒƒfde› de› d�eeeeeƒƒfde› d�eeeeeƒeeƒƒfde› de› d�eeeeeƒƒfde
› d�eeeeƒfde› d�eeeƒfdeeƒfg	iZdS )r#   z/
    Lexer for Docker configuration files.
    ÚDockerzhttp://docker.ioÚdockerÚ
dockerfileÚ
Dockerfilez*.dockerztext/x-dockerfile-configz2.0z-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r9   ú#.*z1(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?z(ONBUILD)(\s+)(r¿  z(HEALTHCHECK)(\s+)((z	--\w+=\w+z)*)z#(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)(z
)(\[.*?\])z(LABEL|ENV|ARG)(\s+)((z\w+=\w+r½  z|VOLUME)\b(\s+)(.*)z)(\s+)z(.*\\\n)*.+N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   Ú	_keywordsÚ_bash_keywordsÚ_lbr]   rÅ   r_   r©   r   r   r   r   r   r   r   r   rQ   rB   rB   rB   rC   r#   “  s@    ÿÿ
ÿÿ
óÿr#   c                   @   s  e Zd ZdZdZdZg d¢ZddgZddgZd	Z	d
Z
d d e
¡¡ZdZdZdZdZdZdZdZdZdZdZee e e e e e e e Zd d e¡¡Zdd„ Zedƒedƒdeejƒfedddd�e j!feeddd�e"j#fedƒed ƒd!e$fgd"e%j&d#fd$e%j'fedƒd%ee(e j)e(e*e(e+ƒfd&ee(e j,e(e*e(ƒfd'ee(e-jje(e*e(ƒfed( ee j.e+ƒfd)ee+e j)e+ƒfed* ee"j/e(e j0e(e j1e(e+ƒfd+efg
d,ee j1ƒfd-ee j1ƒfgd.e+fgd/e%j&fd0e%j&d1fd2e%j&d3fd4e%j&fgd5e(fd6e(fd7ee2e(ƒfgd8œZ3d9S ):r$   z-
    Lexer for terraformi ``.tf`` files.
    Ú	Terraformzhttps://www.terraform.io/)Ú	terraformÚtfÚhclz*.tfz*.hclzapplication/x-tfzapplication/x-terraformú2.1)ÚbackendÚdataÚmoduleÚoutputÚproviderÚprovisionerÚresourceÚvariablez({})r¾  )	r±   ÚnumberÚboolÚlistÚtupleÚmapÚsetÚobjectÚnull)	ÚabsÚceilÚfloorÚlogÚmaxÚmixÚparseintÚpowÚsignum)ÚchompÚformatÚ
formatlistr‚   ÚjoinÚlowerÚregexÚregexallÚreplaceÚsplitÚstrrevÚsubstrÚtitleÚtrimÚ
trimprefixÚ
trimsuffixÚ	trimspaceÚupper)ÚalltrueÚanytrueÚ	chunklistÚcoalesceÚcoalescelistÚcompactÚconcatÚcontainsÚdistinctÚelementÚflattenÚindexÚkeysÚlengthrô  Úlookuprö  Ú	matchkeysÚmerger–   ÚreverseÚsetintersectionÚ
setproductÚsetsubtractÚsetunionÚsliceÚsortÚsumÚ	transposeÚvaluesÚzipmap)Úbase64decodeÚbase64encodeÚ
base64gzipÚ	csvdecodeÚ
jsondecodeÚ
jsonencodeÚtextdecodebase64Útextencodebase64Ú	urlencodeÚ
yamldecodeÚ
yamlencode)	ÚabspathÚdirnameÚ
pathexpandÚbasenameÚfileÚ
fileexistsÚfilesetÚ
filebase64Útemplatefile)Ú
formatdateÚtimeaddÚ	timestamp)Úbase64sha256Úbase64sha512ÚbcryptÚfilebase64sha256Úfilebase64sha512Úfilemd5Úfilesha1Ú
filesha256Ú
filesha512Úmd5Ú
rsadecryptÚsha1Úsha256Úsha512ÚuuidÚuuidv5)ÚcidrhostÚcidrnetmaskÚ
cidrsubnetÚcidrsubnets)	ÚcanÚdefaultsÚtoboolÚtolistÚtomapÚtonumberÚtosetÚtostringÚtryc           	      c   s:  � |  d¡}|t| d¡fV  |  d¡tj| d¡fV  |  d¡|_| d¡|_|jtj| d¡fV  | ¡ |_| d¡}d}g }t 	|j
|j¡D ]<}|rT| ¡  ¡ }n| ¡  ¡ }||kr€|D ]}|  ¡ tj| ¡ fV  q`|  ¡ tj| ¡ fV  | ¡ |_ n| |¡ qI|D ]}|  ¡ t| ¡ fV  qˆt|j
ƒ|_d S )Nr=   rv   r;   T)Ústartr   Úgroupr   Ú	DelimiterÚposÚendÚHeredocr	   Úfinditerr@   ÚstripÚrstripÚappendr   Úlen)	ÚselfÚmatchÚctxrd  ÚhdnameÚtolerantÚlinesÚcheckÚamatchrB   rB   rC   Úheredoc_callbackñ  s2   €



zTerraformLexer.heredoc_callbackÚbasicÚ
whitespacez(".*"))ÚtrueÚfalser˜   rÁ  Ú
identifierÚpunctuationrœ   z\s*/\*rŽ   z\s*(#|//).*\nz'(\s*)([0-9a-zA-Z-_]+)(\s*)(=?)(\s*)(\{)z"(\s*)([0-9a-zA-Z-_]+)(\s*)(=)(\s*)z(\s*)("\S+")(\s*)([=:])(\s*)z(\()z(\[)([a-z_,\s]+)(\])z8(\s+)("[0-9a-zA-Z-_]+")?(\s*)("[0-9a-zA-Z-_]+")(\s+)(\{)z(<<-?)\s*([a-zA-Z_]\w*)(.*?\n)z\b(var\.[0-9a-zA-Z-_\.\[\]]+)\bz.\b([0-9a-zA-Z-_\[\]]+\.[0-9a-zA-Z-_\.\[\]]+)\bz[\[\]()\{\},.?:!=]z[^*/]z/\*r·   z\*/r7   z[*/]rp   r3   ú(\\)(\n))r9   rx  r|  r}  rŽ   ry  N)4rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   Úclassesr  r  Ú
classes_reÚtypesÚnumeric_functionsÚstring_functionsÚcollection_functionsÚencoding_functionsÚfilesystem_functionsÚdate_time_functionsÚhash_crypto_functionsÚip_network_functionsÚtype_conversion_functionsÚbuiltinsÚbuiltins_rerw  r   r   r   r«   r   r   rÐ  r   rº   r   r   Ú	MultilinerO   r   rk   r   r   rP   r   r¹   r»   r¼   rl   r
   rQ   rB   rB   rB   rC   r$   ¶  sœ    	ÿÿÿÿþ'ñ
ÿÿÿÿá"ÿþÿ

üý
¿r$   c                	   @   sÀ   e Zd ZdZdZdgZddgZg ZdZdZ	de
fdejd	fd
efgdedfdedfdefdejfgdeeeƒfdedfdeeeƒfdedfdefdejfgdefdedfdefdefgdœZdS )r%   zR
    Lexer for termcap database source.

    This is very simple and minimal.
    ÚTermcapÚtermcapztermcap.srcz%https://en.wikipedia.org/wiki/Termcapré  ú^#.*z
^[^\s#:|]+Únamesr3   rp   r7   ú:Údefsú\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*r‡   ú(#)([0-9]+)rÃ  rë  z	[^\s:=#]+z\\072z[^:\\]+r¶   ©r9   r‘  r“  rë  N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   rÆ   r   r   rP   r   r
   r   r   r¼   r   rQ   rB   rB   rB   rC   r%   _  s<    	
ýüú	ü
ìr%   c                
   @   sÌ   e Zd ZdZdZdgZddgZg ZdZdZ	de
fdejd	fd
efgdedfdeeeƒdfdefdejfgdefdedfdeeeƒfdedfdeeeƒfdejfgdefdeeeƒdfdefdefgdœZdS )r&   zS
    Lexer for terminfo database source.

    This is very simple and minimal.
    ÚTerminfoÚterminfozterminfo.srcz&https://en.wikipedia.org/wiki/Terminforé  z^#.*$z
^[^\s#,|]+r‘  r3   rp   r7   z(,)([ \t]*)r“  r”  z[^,|]+z\n[ \t]+r‡   r•  rÃ  rë  z	[^\s,=#]+z\\[,\\]z[^\\,]+r¶   r–  N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   rÆ   r   r   r   rP   r   r   r¼   r   rQ   rB   rB   rB   rC   r&   Ž  s<    	
ýüú	ü
ìr&   c                
   @   sÄ   e Zd ZdZdZdZdgZdgZg ZdZ	de
jfdeejeƒfd	eejeƒd
fedƒdefdefdefgdefdejdfgdejdfdejfgedƒde
jdfdedfdefdefdefgdœZdS )r'   ze
    Lexer for pkg-config
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).
    Ú	PkgConfigz4http://www.freedesktop.org/wiki/Software/pkg-config/Ú	pkgconfigz*.pcré  ú#.*$z	^(\w+)(=)z^([\w.]+)(:)ÚspvalueÚinterpr3   z[^${}#=:\n.]+r¶   z\$\$z\$\{ÚcurlyrÕ  r7   r³   rp   z[^${}#\n\s]+)r9   r�  rž  rœ  N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   rO   r   r   rP   r   rÆ   r   r   r   r
   r   r¿   rQ   rB   rB   rB   rC   r'   ½  s@    ÿð
û
þ
÷
âr'   c                	   @   s†   e Zd ZdZdZdZdgZdgZg ZdZ	dde
jfd	eeeeƒfd
eejeeƒfdeeejeƒfeddd�ejfdefdefgiZdS )r(   a@  
    Lexer for pacman.conf.

    Actually, IniLexer works almost fine for this format,
    but it yield error token. It is because pacman.conf has
    a form without assignment like:

        UseSyslog
        Color
        TotalDownload
        CheckSpace
        VerbosePkgLists

    These are flags to switch on.
    Ú
PacmanConfz3https://www.archlinux.org/pacman/pacman.conf.5.htmlÚ
pacmanconfzpacman.confré  r9   r›  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur˜   r™   r3   r¶   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   rO   r   r   r   r   rP   r   r   rl   r
   rQ   rB   rB   rB   rC   r(   ö  s4    ÿÿûú	åÿr(   c                   @   s   e Zd ZdZdZdZdgZdgZdZde	e
jeejƒfde	e
jeejƒfd	e	ejeƒfd
e	eejee
jeƒfdejdfdefdefdejdfdejdfde	ejeejƒfdejfdefgdejfdejfdejdfgdejfdejfdejdfgdejfdejdfdejdfdejfgdœZdS ) r)   z
    Lexer for Augeas.
    ÚAugeaszhttp://augeas.netÚaugeasz*.augú2.4z(module)(\s*)([^\s=]+)z(let)(\s*)([^\s=]+)zV(del|store|value|counter|seq|key|label|autoload|incl|excl|transform|test|get|put)(\s+)z8(\()([^:]+)(\:)(unit|string|regexp|lens|tree|filter)(\))z\(\*rŽ   z[*+\-.;=?|]z
[()\[\]{}]r°   r±   z\/r  z([A-Z]\w*)(\.)(\w+)r¶   r3   rµ   z[^"]r7   z[^/]z[^*)]r·   z\*\)z[)*])r9   r±   r  rŽ   N)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   rb   r   r   r½   rl   rk   r   rº   r   r�  r   r   r«   rÚ  rt   rQ   rB   rB   rB   rC   r)   /  sD    


ô
ý
ý

ü
çr)   c                   @   s<  e Zd ZdZdZdgZg d¢ZdgZdZdZ	dZ
d	e
› d
�Zdefdejfedƒdeeeƒdfdedfgdefdejdfdejdfdefgdefdejdfdejdfdefdedfdefgeejdfe
ejdfdejdfdejdfdejdfdejdfdejdfd ejdfd!ejdfd"ejd#fdejd$fd%ejd&fdejd'fd(ejdfd)ed*fd+ed,fgdefdejfd-efd.edfe dƒgdefdejfedƒdeeeƒdfd-efd/edfgdejdfed0ƒd1ejfgd2ejdfgd"ejdfd3eej!eƒfed0ƒd1ejfdejfgd%ejdfd4ejfdejfgd5ej!fd6ej!fgd7œZ"d8S )9r*   z=
    Lexer for TOML, a simple language for config files.
    ÚTOMLÚtoml)z*.tomlÚPipfilezpoetry.lockzapplication/tomlzhttps://toml.ior£  z\d\d:\d\d(:\d\d(\.\d+)?)?zm(?x)
                  \d\d\d\d-\d\d-\d\d # date, e.g., 1988-10-27
                (
                  [Tt ] z™ # optional time
                  (
                    [Zz]|[+-]\d\d:\d\d # optional time offset
                  )?
                )?
              r3   rá  rq   z(=)(\s*)r6   z\[\[?ú	table-keyz[A-Za-z0-9_-]+r°   úbasic-stringú'úliteral-stringz\.z\]\]?r7   ú[ \t]+z [+-]?\d[0-9_]*[eE][+-]?\d[0-9_]*z.[+-]?\d[0-9_]*\.\d[0-9_]*([eE][+-]?\d[0-9_]*)?z[+-]?(inf|nan)z
-?0b[01_]+z-?0o[0-7_]+z-?0x[0-9a-fA-F_]+z[+-]?[0-9_]+z""")r7   úmultiline-basic-string)r7   r¨  z''')r7   úmultiline-literal-string)r7   rª  z
true|falseú\[)r7   ÚarrayrÖ  )r7   úinline-tabler¸   ú\]rÕ  rr   z[^"\\]+z.*?'r~  z[^']+z5\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}rµ   )r9   rq   r§  r6   r¯  r°  r¨  rª  r¬  r­  rr   N)#rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   Ú_timeÚ	_datetimer   r   rO   r   r   r   r   r   r   r«   r   r   ÚDater   r¾   ÚBinÚOctÚHexrª   rÐ  r   rt   rQ   rB   rB   rB   rC   r*   [  s¦    ýê

ù

ó


ÿ









ß&óñ
ý
ÿ
û
ýþ �
÷r*   c                   @   sr  e Zd ZdZdZdZddgZdgZdZde	e
eƒfd	e	e
eƒd
fde	e
eƒdfde	e
eƒfde	e
ee
ee
ƒfde	e
eƒfde	e
ee
ee
ƒfde	e
eƒfde	e
ee
eje
ƒfde	e
ejeƒfde	e
ejee
ee
ƒfgedƒdefedƒdefdedfdedfgedƒdejfdedfdedfdedfgedƒdefedƒdedfded fgedƒd!ed
fd"edfgd#e
fgd$œZd%S )&r+   zŠ
    Lexer for *NextedText*, a human-friendly data format.

    .. versionchanged:: 2.16
        Added support for *NextedText* v3.0.
    Ú
NestedTextzhttps://nestedtext.orgÚ
nestedtextÚntz*.ntz2.9z^([ ]*)(#.*)$z^([ ]*)(\{)Úinline_dictz^([ ]*)(\[)Úinline_listz^([ ]*)(>)$z^([ ]*)(>)( )(.*?)([ \t]*)$z^([ ]*)(-)$z^([ ]*)(-)( )(.*?)([ \t]*)$z^([ ]*)(:)$z^([ ]*)(:)( )([^\n]*?)([ \t]*)$z^([ ]*)([^\{\[\s].*?)(:)$z)^([ ]*)([^\{\[\s].*?)(:)( )(.*?)([ \t]*)$ry  z[^\{\}\[\],\s]+Úinline_valuer¸   r±  r7   rp   z[^\{\}\[\],:\s]+r’  Úinline_dict_valuerÕ  r‡   rÖ  r®  r«  )r9   r¼  r»  r¾  r½  ry  N)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   r   r   r
   r   rÆ   r   r   rQ   rB   rB   rB   rC   r+     sZ    à#ú	ûûýÿ
Âr+   c                   @   s¬   e Zd ZdZdZdZdgZddgZdZe	j
e	jB e	jB ZdZdZd	Zeeejeƒd
feeejeƒd
feeeeeƒfdefdefdefdefgdeeƒdfgdœZdd„ ZdS )r,   z1
    Lexer for Singularity definition files.
    ÚSingularityzAhttps://www.sylabs.io/guides/3.0/user-guide/definition_files.htmlÚsingularityz*.defz2.6zS^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)zT^(%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript))(\s*)z6^(%app(?:install|help|run|labels|env|test|files))(\s*)Úscriptz	\s*#.*?\nz"\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\br«  z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)r7   )r9   rÁ  c                 C   s>   d}t  d| t j¡r|d7 }t  tjdd… | ¡r|d7 }|S )zlThis is a quite simple script file, but there are a few keywords
        which seem unique to this language.r   z&\b(?:osversion|includecmd|mirrorurl)\bg      à?r=   Ng\�Âõ(\ß?)r]   r^   rÅ   r,   Ú_section)r@   ÚresultrB   rB   rC   rD   t  s   zSingularityLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r]   rÅ   r_   ÚDOTALLr©   Ú_headersrÂ  Ú_appsectr   r   ÚHeadingr   r   r
   r   r   r   r   rQ   rD   rB   rB   rB   rC   r,   U  s.    ù
ÿör,   c                   @   sT   e Zd ZdZdZddgZg ZdZdZdde	fd	e
fd
efdefdefdefgiZdS )r-   z�
    Lexer for Unix/Linux config files using colon-separated values, e.g.

    * ``/etc/group``
    * ``/etc/passwd``
    * ``/etc/shadow``
    zUnix/Linux config filesÚ
unixconfigÚlinuxconfigzUhttps://en.wikipedia.org/wiki/Configuration_file#Unix_and_Unix-like_operating_systemsz2.12r9   r�  rp   r’  rœ   z"((?!\n)[a-zA-Z0-9\_\-\s\(\),]){2,}z[^:\n]+N)rE   rF   rG   rH   rI   rJ   rK   rM   rN   r   r   r   r   r
   r   rQ   rB   rB   rB   rC   r-   �  s     úÿr-   )4rH   r]   Úpygments.lexerr   r   r   r   r   r   r   r	   Úpygments.tokenr
   r   r   r   r   r   r   r   r   r   r   r   Úpygments.lexers.shellr   Úpygments.lexers.datar   Ú__all__r   r   r   r   r   r~   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   rB   rB   rB   rC   Ú<module>   sB    
(86,*8N=+ .# *//99, )R,