Warning, /frameworks/syntax-highlighting/data/syntax/selinux.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language
0003 [
0004         <!ENTITY identifier        "[a-zA-Z][\w\-]*(?:\.?[\w\-])*">
0005         <!ENTITY versionIdentifier "\d+(?:\.[\d_\.]*)?">
0006         <!-- Documentation -->
0007         <!ENTITY tagName           "(?:[a-zA-Z_](?:[\w\-\.]*\w)?\:)?[a-zA-Z_](?:[\w\-\.]*\w)?">
0008         <!-- PCRE 2 RegExp -->
0009         <!ENTITY specialChars      "*?.+">
0010         <!ENTITY capGroup          "\?(?:&lt;[\=!]|P?&lt;\w+&gt;|&apos;\w+&apos;|[\=!:&gt;\|R&amp;\-#])"> <!-- Capturing & Groups -->
0011         <!-- M4 Macros -->
0012         <!ENTITY m4Args            "\$(?:[1-9]\d*|0|[\#\*\@]|\{(?:[1-9]\d*|0)\})">
0013         <!ENTITY m4Quotes          "`'‘’“”"> <!-- Default Quotes (`') & Other Common Quotes -->
0014         <!-- For File Contexts -->
0015         <!ENTITY identifierWithArg "(?:[a-zA-Z]|&m4Args;)(?:\.?(?:[\w\-]|&m4Args;))*">
0016         <!ENTITY mlsLevel          "&identifierWithArg;(?:\:&identifierWithArg;(?:\s*,\s*&identifierWithArg;)*)?">
0017 
0018         <!ENTITY url               "\bhttps?://[^\s&lt;&gt;&quot;&apos;`]*[^\s&lt;&gt;&quot;&apos;`\}\)\]\.,;\|]">
0019         <!ENTITY email             "(?:(?:[^&lt;&gt;\(\)\[\]\\\.,;:\s@&quot;]+(?:\.[^&lt;&gt;\(\)\[\]\\\.,;:\s@&quot;]+)*)|(?:&quot;[^&quot;]+&quot;))@(?:(?:\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}])|(?:(?:[a-zA-Z\-\d]+\.)+[a-zA-Z]{2,}))\b">
0020 
0021         <!ENTITY ipv4              "\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b">
0022         <!-- IPv6 (Source: https://community.helpsystems.com/forums/intermapper/miscellaneous-topics/5acc4fcf-fa83-e511-80cf-0050568460e4 ) -->
0023         <!ENTITY ipv6              "(?:(?:\b(?:[0-9A-Fa-f]{1,4}\:){7}(?:[0-9A-Fa-f]{1,4}|\:))|(?:\b(?:[0-9A-Fa-f]{1,4}\:){6}(?:\:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|\:))|(?:\b(?:[0-9A-Fa-f]{1,4}\:){5}(?:(?:(?:\:[0-9A-Fa-f]{1,4}){1,2})|\:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|\:))|(?:\b(?:[0-9A-Fa-f]{1,4}\:){4}(?:(?:(?:\:[0-9A-Fa-f]{1,4}){1,3})|(?:(?:\:[0-9A-Fa-f]{1,4})?\:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|\:))|(?:\b(?:[0-9A-Fa-f]{1,4}\:){3}(?:(?:(?:\:[0-9A-Fa-f]{1,4}){1,4})|(?:(?:\:[0-9A-Fa-f]{1,4}){0,2}\:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|\:))|(?:\b(?:[0-9A-Fa-f]{1,4}\:){2}(?:(?:(?:\:[0-9A-Fa-f]{1,4}){1,5})|(?:(?:\:[0-9A-Fa-f]{1,4}){0,3}\:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|\:))|(?:\b(?:[0-9A-Fa-f]{1,4}\:){1}(?:(?:(?:\:[0-9A-Fa-f]{1,4}){1,6})|(?:(?:\:[0-9A-Fa-f]{1,4}){0,4}\:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|\:))|(?:\:(?:(?:(?:\:[0-9A-Fa-f]{1,4}){1,7})|(?:(?:\:[0-9A-Fa-f]{1,4}){0,5}\:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|\:)))"> <!-- End: (\%\w+\b)? -->
0024 
0025         <!-- Hexadecimal -->
0026         <!ENTITY escape1           "\\x(?:\{[\da-fA-F]+\}|[\da-fA-F]{2})">
0027         <!-- Octal. NOTE: only ASCII chars. for \ddd -->
0028         <!ENTITY escape2           "\\(?:o\{[0-7]+\}|[0-3][0-7]{0,2}|[4-7][0-7]?)">
0029         <!-- References -->
0030         <!ENTITY escape3           "\\[kg](?:&lt;\w+&gt;|&apos;\w+&apos;|\{\w+\})">
0031         <!ENTITY escape4           "\\g(?:&lt;[\+\-]?\d+&gt;|&apos;[\+\-]?\d+&apos;|\{[\+\-]?\d+\}|[\+\-]?\d)">
0032         <!-- Category Properties -->
0033         <!ENTITY escape5           "\\[pP](?:C[cfnos]?|L[lmotu&amp;]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?)">
0034         <!ENTITY escape6           "\\[pP]\{(?:Xan|Xps|Xsp|Xuc|Xwd|C[cfnos]?|L[lmotu&amp;]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?)\}">
0035         <!-- Script Names -->
0036         <!ENTITY escape7           "\\[pP]\{(?:Ahom|Anatolian_Hieroglyphs|Arabic|Armenian|Avestan|Balinese|Bamum|Bassa_Vah|Batak|Bengali|Bopomofo|Brahmi|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Caucasian_Albanian|Chakma|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Duployan|Egyptian_Hieroglyphs|Elbasan|Ethiopic|Georgian|Glagolitic|Gothic|Grantha|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hatran|Hebrew|Hiragana|Imperial_Aramaic|Inherited|Inscriptional_Pahlavi|Inscriptional_Parthian|Javanese|Kaithi|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Khojki|Khudawadi|Lao|Latin|Lepcha|Limbu|Linear_A|Linear_B|Lisu|Lycian|Lydian|Mahajani|Malayalam|Mandaic|Manichaean|Meetei_Mayek|Mende_Kikakui|Meroitic_Cursive|Meroitic_Hieroglyphs|Miao|Modi|Mongolian|Mro|Multani|Myanmar|Nabataean|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Hungarian|Old_Italic|Old_North_Arabian|Old_Permic|Old_Persian|Old_South_Arabian|Old_Turkic|Oriya|Osmanya|Pahawh_Hmong|Palmyrene|Pau_Cin_Hau|Phags_Pa|Phoenician|Psalter_Pahlavi|Rejang|Runic|Samaritan|Saurashtra|Sharada|Shavian|Siddham|SignWriting|Sinhala|Sora_Sompeng|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tai_Tham|Tai_Viet|Takri|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Tirhuta|Ugaritic|Vai|Warang_Citi|Yi)\}">
0037         <!-- Escaped Characters -->
0038         <!ENTITY escape8           "\\(?:Q.*\\E|c[a-zA-Z])">
0039         <!-- Reserved characters -->
0040         <!ENTITY escape9           "\\[\ssSdDwWbBAZcCtrnaefvxhGHKNQRVXpPz\d]">
0041         <!-- Punctuation Characters -->
0042         <!ENTITY escape10          "\\[[:punct:]]">
0043         <!ENTITY escape11          "\\[\041-\057\072-\100\133-\140\173-\176]">
0044 
0045         <!-- References & Option Settings -->
0046         <!ENTITY group_bracket1    "\?(?:&amp;|P[&gt;\=])\w+(?=\))">
0047         <!ENTITY group_bracket2    "\?(?:xx|[iJmnsUxR]|C\d*|C&quot;[^\s&quot;]*&quot;|[\-\+]?\d+)(?=\))">
0048         <!-- Conditional Patterns -->
0049         <!ENTITY group_bracket3    "\?\((?:Rn?|R&amp;\w+|[\+\-]?\d+|&lt;\w+&gt;|&apos;\w+&apos;|VERSION&gt;?\=\d+(?:\.\d+)*|\w+)\)">
0050         <!ENTITY group_bracket4    "\?(?=\()">
0051 
0052         <!ENTITY mls_level_range_ident "&identifierWithArg;(?:\s*\:\s*&identifierWithArg;(?:\s*,\s*&identifierWithArg;)*)?">
0053 ]>
0054 
0055 <!--
0056    SELinux Security Policies Syntax Highlighting Definition
0057   ===========================================================================
0058 
0059    This file is part of the KDE's KSyntaxHighlighting framework.
0060 
0061    SPDX-FileCopyrightText: 2018-2020 Nibaldo González S. <nibgonz@gmail.com>
0062 
0063    SPDX-License-Identifier: MIT
0064 
0065   ===========================================================================
0066 
0067   Last update: checkpolicy 3.0
0068   Obtained from the SELinux checkpolicy parser:
0069     https://github.com/SELinuxProject/selinux/blob/master/checkpolicy/policy_parse.y
0070     https://github.com/SELinuxProject/selinux/blob/master/checkpolicy/policy_scan.l
0071   More details:
0072     https://selinuxproject.org/page/PolicyLanguage#Kernel_Policy_Language
0073     https://selinuxproject.org/page/Category:Notebook
0074 
0075   NOTE:
0076   - This file is required by "selinux-cil.xml" and "selinux-fc.xml".
0077   - This file depends on "m4.xml" and "apparmor.xml" (used only to include keywords).
0078   - About file extensions: Only the most relevant policy build files and config. files
0079     are highlighted by default, since some have very generic names. Files with
0080     definition of file contexts are highlighted by "selinux-fc.xml".
0081 
0082   Change log:
0083    * Version 5 [30-Sep-2020]: Use include-keywods and other minor changes.
0084    * Version 4 [09-Feb-2020]: Use non-capturing groups in RegExpr.
0085    * Version 3 [10-Dec-2019]:
0086       - Add "glblub" keyword (default_range).
0087       - Update permissions list.
0088    * Version 2 [09-Sep-2018]:
0089       - Update itemData's style for the new Solarized color schemes.
0090    * Version 1 [28-Aug-2018, by Nibaldo González]:
0091       - Initial version. Syntax based on checkpolicy v2.8.
0092 -->
0093 
0094 <language name="SELinux Policy"
0095           version="9"
0096           kateversion="5.53"
0097           section="Sources"
0098           extensions="*.te;*.if;*.spt;policy.conf;access_vectors;mls;mcs;mls_macros;te_macros;policy_capabilities;seapp_contexts;port_contexts"
0099           priority="6"
0100           mimetype=""
0101           author="Nibaldo González (nibgonz@gmail.com)"
0102           license="MIT">
0103 
0104 <highlighting>
0105 
0106         <list name="self">
0107                 <item>SELF</item>
0108                 <item>self</item>
0109         </list>
0110         <list name="booleans">
0111                 <item>FALSE</item>
0112                 <item>false</item>
0113                 <item>TRUE</item>
0114                 <item>true</item>
0115         </list>
0116 
0117         <!-- Statements -->
0118         <list name="statements_access">
0119                 <item>ALLOW</item>
0120                 <item>allow</item>
0121                 <item>NEVERALLOW</item>
0122                 <item>neverallow</item>
0123                 <item>AUDITALLOW</item>
0124                 <item>auditallow</item>
0125                 <item>AUDITDENY</item>
0126                 <item>auditdeny</item>
0127                 <item>DONTAUDIT</item>
0128                 <item>dontaudit</item>
0129                 <item>ALLOWXPERM</item>
0130                 <item>allowxperm</item>
0131                 <item>AUDITALLOWXPERM</item>
0132                 <item>auditallowxperm</item>
0133                 <item>DONTAUDITXPERM</item>
0134                 <item>dontauditxperm</item>
0135                 <item>NEVERALLOWXPERM</item>
0136                 <item>neverallowxperm</item>
0137         </list>
0138         <list name="statements">
0139                 <item>ATTRIBUTE</item>
0140                 <item>attribute</item>
0141                 <item>ATTRIBUTE_ROLE</item>
0142                 <item>attribute_role</item>
0143                 <item>BOOL</item>
0144                 <item>bool</item>
0145                 <item>CATEGORY</item>
0146                 <item>category</item>
0147                 <item>COMMON</item>
0148                 <item>common</item>
0149                 <item>DOMINANCE</item>
0150                 <item>dominance</item>
0151                 <item>EXPANDATTRIBUTE</item>
0152                 <item>expandattribute</item>
0153                 <item>MODULE</item>
0154                 <item>module</item>
0155                 <item>PERMISSIVE</item>
0156                 <item>permissive</item>
0157                 <item>ROLE</item>
0158                 <item>role</item>
0159                 <item>ROLEATTRIBUTE</item>
0160                 <item>roleattribute</item>
0161                 <item>SENSITIVITY</item>
0162                 <item>sensitivity</item>
0163                 <item>TUNABLE</item>
0164                 <item>tunable</item>
0165                 <item>TYPE</item>
0166                 <item>type</item>
0167                 <item>TYPEALIAS</item>
0168                 <item>typealias</item>
0169                 <item>TYPEATTRIBUTE</item>
0170                 <item>typeattribute</item>
0171                 <item>TYPEBOUNDS</item>
0172                 <item>typebounds</item>
0173                 <item>USER</item>
0174                 <item>user</item>
0175                 <!-- Conditional -->
0176                 <item>IF</item>
0177                 <item>if</item>
0178                 <item>ELSE</item>
0179                 <item>else</item>
0180                 <item>require</item>
0181                 <item>REQUIRE</item>
0182                 <item>optional</item>
0183                 <item>OPTIONAL</item>
0184         </list>
0185         <!-- Statements that contain definition of file contexts -->
0186         <list name="statements_fc">
0187                 <item>DEVICETREECON</item>
0188                 <item>devicetreecon</item>
0189                 <item>FS_USE_TASK</item>
0190                 <item>fs_use_task</item>
0191                 <item>FS_USE_TRANS</item>
0192                 <item>fs_use_trans</item>
0193                 <item>FS_USE_XATTR</item>
0194                 <item>fs_use_xattr</item>
0195                 <item>FSCON</item>
0196                 <item>fscon</item>
0197                 <item>GENFSCON</item>
0198                 <item>genfscon</item>
0199                 <item>IBENDPORTCON</item>
0200                 <item>ibendportcon</item>
0201                 <item>IBPKEYCON</item>
0202                 <item>ibpkeycon</item>
0203                 <item>IOMEMCON</item>
0204                 <item>iomemcon</item>
0205                 <item>IOPORTCON</item>
0206                 <item>ioportcon</item>
0207                 <item>NETIFCON</item>
0208                 <item>netifcon</item>
0209                 <item>NODECON</item>
0210                 <item>nodecon</item>
0211                 <item>PCIDEVICECON</item>
0212                 <item>pcidevicecon</item>
0213                 <item>PIRQCON</item>
0214                 <item>pirqcon</item>
0215                 <item>PORTCON</item>
0216                 <item>portcon</item>
0217                 <item>SID</item>
0218                 <item>sid</item>
0219         </list>
0220         <list name="statements_def">
0221                 <item>CLASS</item>
0222                 <item>class</item>
0223         </list>
0224         <list name="statements_mls_level_def">
0225                 <item>LEVEL</item>
0226                 <item>level</item>
0227         </list>
0228         <!-- Statements with special contexts -->
0229         <list name="statements_policycap">
0230                 <item>POLICYCAP</item>
0231                 <item>policycap</item>
0232         </list>
0233         <list name="statements_type">
0234                 <item>TYPE_CHANGE</item>
0235                 <item>type_change</item>
0236                 <item>TYPE_MEMBER</item>
0237                 <item>type_member</item>
0238                 <item>TYPE_TRANSITION</item>
0239                 <item>type_transition</item>
0240         </list>
0241         <list name="statements_role_transition">
0242                 <item>ROLE_TRANSITION</item>
0243                 <item>role_transition</item>
0244         </list>
0245         <list name="statements_range_transition">
0246                 <item>RANGE_TRANSITION</item>
0247                 <item>range_transition</item>
0248         </list>
0249         <list name="statements_default">
0250                 <item>DEFAULT_USER</item>
0251                 <item>default_user</item>
0252                 <item>DEFAULT_ROLE</item>
0253                 <item>default_role</item>
0254                 <item>DEFAULT_TYPE</item>
0255                 <item>default_type</item>
0256         </list>
0257         <list name="statements_default_range">
0258                 <item>DEFAULT_RANGE</item>
0259                 <item>default_range</item>
0260         </list>
0261         <list name="statements_cexpr">
0262                 <item>CONSTRAIN</item>
0263                 <item>constrain</item>
0264                 <item>VALIDATETRANS</item>
0265                 <item>validatetrans</item>
0266                 <item>MLSCONSTRAIN</item>
0267                 <item>mlsconstrain</item>
0268                 <item>MLSVALIDATETRANS</item>
0269                 <item>mlsvalidatetrans</item>
0270         </list>
0271 
0272         <!-- Other reserved keywords -->
0273         <list name="keywords">
0274                 <item>ALIAS</item>
0275                 <item>alias</item>
0276                 <item>CLONE</item> <!-- Deprecated -->
0277                 <item>clone</item>
0278                 <item>INHERITS</item>
0279                 <item>inherits</item>
0280                 <item>ROLES</item>
0281                 <item>roles</item>
0282                 <item>TYPES</item>
0283                 <item>types</item>
0284         </list>
0285         <list name="mls_range_def">
0286                 <item>RANGE</item>
0287                 <item>range</item>
0288         </list>
0289 
0290         <list name="source_target">
0291                 <item>SOURCE</item>
0292                 <item>source</item>
0293                 <item>TARGET</item>
0294                 <item>target</item>
0295         </list>
0296         <list name="sameuser">
0297                 <item>SAMEUSER</item>
0298                 <item>sameuser</item>
0299         </list>
0300         <list name="range">
0301                 <item>low-high</item>
0302                 <item>LOW-HIGH</item>
0303                 <item>high</item>
0304                 <item>HIGH</item>
0305                 <item>low</item>
0306                 <item>LOW</item>
0307                 <item>glblub</item>
0308                 <item>GLBLUB</item>
0309         </list>
0310 
0311         <list name="cond_operators">
0312                 <item>OR</item>
0313                 <item>or</item>
0314                 <item>AND</item>
0315                 <item>and</item>
0316                 <item>NOT</item>
0317                 <item>not</item>
0318                 <item>xor</item>
0319                 <item>XOR</item>
0320                 <item>eq</item>
0321                 <item>EQ</item>
0322         </list>
0323         <list name="cexpr_operators">
0324                 <item>eq</item>
0325                 <item>EQ</item>
0326                 <item>dom</item>
0327                 <item>DOM</item>
0328                 <item>domby</item>
0329                 <item>DOMBY</item>
0330                 <item>INCOMP</item>
0331                 <item>incomp</item>
0332         </list>
0333         <list name="cexpr_keywords">
0334                 <item>r1</item>
0335                 <item>R1</item>
0336                 <item>r2</item>
0337                 <item>R2</item>
0338                 <item>r3</item>
0339                 <item>R3</item>
0340                 <item>u1</item>
0341                 <item>U1</item>
0342                 <item>u2</item>
0343                 <item>U2</item>
0344                 <item>u3</item>
0345                 <item>U3</item>
0346                 <item>t1</item>
0347                 <item>T1</item>
0348                 <item>t2</item>
0349                 <item>T2</item>
0350                 <item>t3</item>
0351                 <item>T3</item>
0352                 <item>l1</item>
0353                 <item>L1</item>
0354                 <item>l2</item>
0355                 <item>L2</item>
0356                 <item>h1</item>
0357                 <item>H1</item>
0358                 <item>h2</item>
0359                 <item>H2</item>
0360         </list>
0361 
0362         <!-- Policy Capabilities: /sys/fs/selinux/policy_capabilities/
0363              More details: https://selinuxproject.org/page/NB_LSM#SELinux_Filesystem -->
0364         <list name="policy_capabilities">
0365                 <item>always_check_network</item>
0366                 <item>always_use_network</item>
0367                 <item>cgroup_seclabel</item>
0368                 <item>extended_socket_class</item>
0369                 <item>network_peer_controls</item>
0370                 <item>nnp_nosuid_transition</item>
0371                 <item>open_perms</item>
0372                 <item>redhat1</item>
0373         </list>
0374 
0375         <!-- Access Vectors Permissions.
0376              More details:
0377                https://selinuxproject.org/page/ObjectClassesPerms
0378              Permissions & Classes:
0379                https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/security/selinux/include/classmap.h
0380                https://github.com/SELinuxProject/refpolicy/blob/master/policy/flask/access_vectors -->
0381         <list name="av_permissions">
0382                 <item>accept</item>
0383                 <item>acceptfrom</item>
0384                 <item>access</item>
0385                 <item>acquire_svc</item>
0386                 <item>add</item>
0387                 <item>add_child</item>
0388                 <item>add_color</item>
0389                 <item>add_glyph</item>
0390                 <item>add_name</item>
0391                 <item>admin</item>
0392                 <item>append</item>
0393                 <item>associate</item>
0394                 <item>association</item>
0395                 <item>attach_queue</item>
0396                 <item>audit_access</item>
0397                 <item>audit_control</item>
0398                 <item>audit_read</item>
0399                 <item>audit_write</item>
0400                 <item>bell</item>
0401                 <item>bind</item>
0402                 <item>blend</item>
0403                 <item>block_suspend</item>
0404                 <item>call</item>
0405                 <item>check_context</item>
0406                 <item>chfn</item>
0407                 <item>chown</item>
0408                 <item>chsh</item>
0409                 <item>compute_av</item>
0410                 <item>compute_create</item>
0411                 <item>compute_member</item>
0412                 <item>compute_relabel</item>
0413                 <item>compute_user</item>
0414                 <item>connect</item>
0415                 <item>connectto</item>
0416                 <item>contains</item>
0417                 <item>copy</item>
0418                 <item>create</item>
0419                 <item>create_files_as</item>
0420                 <item>crontab</item>
0421                 <item>dac_override</item>
0422                 <item>dac_read_search</item>
0423                 <item>dccp_recv</item>
0424                 <item>dccp_send</item>
0425                 <item>debug</item>
0426                 <item>delete</item>
0427                 <item>destroy</item>
0428                 <item>disable</item>
0429                 <item>drop</item>
0430                 <item>dyntransition</item>
0431                 <item>egress</item>
0432                 <item>enable</item>
0433                 <item>enforce_dest</item>
0434                 <item>enqueue</item>
0435                 <item>entrypoint</item>
0436                 <item>execheap</item>
0437                 <item>execmem</item>
0438                 <item>execmod</item>
0439                 <item>execstack</item>
0440                 <item>execute</item>
0441                 <item>execute_no_trans</item>
0442                 <item>expand</item>
0443                 <item>export</item>
0444                 <item>force_cursor</item>
0445                 <item>fork</item>
0446                 <item>forward_in</item>
0447                 <item>forward_out</item>
0448                 <item>fowner</item>
0449                 <item>freeze</item>
0450                 <item>fsetid</item>
0451                 <item>get_property</item>
0452                 <item>get_value</item>
0453                 <item>getattr</item>
0454                 <item>getcap</item>
0455                 <item>getfocus</item>
0456                 <item>getgrp</item>
0457                 <item>gethost</item>
0458                 <item>getopt</item>
0459                 <item>getpgid</item>
0460                 <item>getpwd</item>
0461                 <item>getrlimit</item>
0462                 <item>getsched</item>
0463                 <item>getserv</item>
0464                 <item>getsession</item>
0465                 <item>getstat</item>
0466                 <item>grab</item>
0467                 <item>halt</item>
0468                 <item>hide</item>
0469                 <item>hide_cursor</item>
0470                 <item>impersonate</item>
0471                 <item>implement</item>
0472                 <item>import</item>
0473                 <item>ingress</item>
0474                 <item>insert</item>
0475                 <item>install</item>
0476                 <item>install_module</item>
0477                 <item>ioctl</item>
0478                 <item>ipc_info</item>
0479                 <item>ipc_lock</item>
0480                 <item>ipc_owner</item>
0481                 <item>kill</item>
0482                 <item>lease</item>
0483                 <item>link</item>
0484                 <item>linux_immutable</item>
0485                 <item>list_child</item>
0486                 <item>list_property</item>
0487                 <item>listen</item>
0488                 <item>load_module</item>
0489                 <item>load_policy</item>
0490                 <item>lock</item>
0491                 <item>mac_admin</item>
0492                 <item>mac_override</item> <!-- Unused by SELinux -->
0493                 <item>manage</item>
0494                 <item>manage_subnet</item>
0495                 <item>map</item>
0496                 <item>map_create</item>
0497                 <item>map_read</item>
0498                 <item>map_write</item>
0499                 <item>mknod</item>
0500                 <item>mmap_zero</item>
0501                 <item>module_load</item>
0502                 <item>module_request</item>
0503                 <item>mount</item>
0504                 <item>mounton</item>
0505                 <item>name_bind</item>
0506                 <item>name_connect</item>
0507                 <item>net_admin</item>
0508                 <item>net_bind_service</item>
0509                 <item>net_broadcast</item>
0510                 <item>net_raw</item>
0511                 <item>newconn</item>
0512                 <item>next_value</item>
0513                 <item>nlmsg_read</item>
0514                 <item>nlmsg_readpriv</item>
0515                 <item>nlmsg_relay</item>
0516                 <item>nlmsg_tty_audit</item>
0517                 <item>nlmsg_write</item>
0518                 <item>nnp_transition</item>
0519                 <item>noatsecure</item>
0520                 <item>node_bind</item>
0521                 <item>nosuid_transition</item>
0522                 <item>open</item>
0523                 <item>override</item>
0524                 <item>passwd</item>
0525                 <item>paste</item>
0526                 <item>paste_after_confirm</item>
0527                 <item>polmatch</item>
0528                 <item>prog_load</item>
0529                 <item>prog_run</item>
0530                 <item>ptrace</item>
0531                 <item>query</item>
0532                 <item>quotaget</item>
0533                 <item>quotamod</item>
0534                 <item>quotaon</item>
0535                 <item>rawip_recv</item>
0536                 <item>rawip_send</item>
0537                 <item>read</item>
0538                 <item>read_policy</item>
0539                 <item>reboot</item>
0540                 <item>receive</item>
0541                 <item>record</item>
0542                 <item>recv</item>
0543                 <item>recv_msg</item>
0544                 <item>recvfrom</item>
0545                 <item>relabelfrom</item>
0546                 <item>relabelto</item>
0547                 <item>reload</item>
0548                 <item>remount</item>
0549                 <item>remove</item>
0550                 <item>remove_child</item>
0551                 <item>remove_color</item>
0552                 <item>remove_glyph</item>
0553                 <item>remove_name</item>
0554                 <item>rename</item>
0555                 <item>reparent</item>
0556                 <item>rlimitinh</item>
0557                 <item>rmdir</item>
0558                 <item>rootok</item>
0559                 <item>saver_getattr</item>
0560                 <item>saver_hide</item>
0561                 <item>saver_setattr</item>
0562                 <item>saver_show</item>
0563                 <item>search</item>
0564                 <item>select</item>
0565                 <item>send</item>
0566                 <item>send_msg</item>
0567                 <item>sendto</item>
0568                 <item>set_context_mgr</item>
0569                 <item>set_property</item>
0570                 <item>set_value</item>
0571                 <item>setattr</item>
0572                 <item>setbool</item>
0573                 <item>setcap</item>
0574                 <item>setcheckreqprot</item>
0575                 <item>setcontext</item>
0576                 <item>setcurrent</item>
0577                 <item>setenforce</item>
0578                 <item>setexec</item>
0579                 <item>setfcap</item>
0580                 <item>setfocus</item>
0581                 <item>setfscreate</item>
0582                 <item>setgid</item>
0583                 <item>setkeycreate</item>
0584                 <item>setopt</item>
0585                 <item>setpcap</item>
0586                 <item>setpgid</item>
0587                 <item>setrlimit</item>
0588                 <item>setsched</item>
0589                 <item>setsecparam</item>
0590                 <item>setsockcreate</item>
0591                 <item>setuid</item>
0592                 <item>share</item>
0593                 <item>shmemgrp</item>
0594                 <item>shmemhost</item>
0595                 <item>shmempwd</item>
0596                 <item>shmemserv</item>
0597                 <item>show</item>
0598                 <item>show_cursor</item>
0599                 <item>shutdown</item>
0600                 <item>sigchld</item>
0601                 <item>siginh</item>
0602                 <item>sigkill</item>
0603                 <item>signal</item>
0604                 <item>signull</item>
0605                 <item>sigstop</item>
0606                 <item>start</item>
0607                 <item>status</item>
0608                 <item>stop</item>
0609                 <item>swapon</item>
0610                 <item>sys_admin</item>
0611                 <item>sys_boot</item>
0612                 <item>sys_chroot</item>
0613                 <item>sys_module</item>
0614                 <item>sys_nice</item>
0615                 <item>sys_pacct</item>
0616                 <item>sys_ptrace</item>
0617                 <item>sys_rawio</item>
0618                 <item>sys_resource</item>
0619                 <item>sys_time</item>
0620                 <item>sys_tty_config</item>
0621                 <item>syslog</item>
0622                 <item>syslog_console</item>
0623                 <item>syslog_mod</item>
0624                 <item>syslog_read</item>
0625                 <item>tcp_recv</item>
0626                 <item>tcp_send</item>
0627                 <item>transfer</item>
0628                 <item>transition</item>
0629                 <item>udp_recv</item>
0630                 <item>udp_send</item>
0631                 <item>uninstall</item>
0632                 <item>unix_read</item>
0633                 <item>unix_write</item>
0634                 <item>unlink</item>
0635                 <item>unmount</item>
0636                 <item>unused_perm</item>
0637                 <item>update</item>
0638                 <item>use</item>
0639                 <item>use_as_override</item>
0640                 <item>validate_trans</item>
0641                 <item>view</item>
0642                 <item>wake_alarm</item>
0643                 <item>watch</item>
0644                 <item>watch_mount</item>
0645                 <item>watch_reads</item>
0646                 <item>watch_sb</item>
0647                 <item>watch_with_perm</item>
0648                 <item>write</item>
0649                 <!-- Deprecated: flow_in, flow_out, get_param, set_param -->
0650         </list>
0651 
0652         <!-- Additional AV Permissions for Android.
0653              Permissions & Classes:
0654                https://android.googlesource.com/platform/system/sepolicy/+/master/private/access_vectors
0655                https://android.googlesource.com/platform/system/security/+/master/keystore/permissions.cpp
0656              More details:
0657                https://selinuxproject.org/page/NB_SEforAndroid_1#Android_Classes_and_Permissions -->
0658         <list name="av_permissions_android">
0659                 <item>add_auth</item>
0660                 <item>clear_uid</item>
0661                 <item>closeDecryptSession</item>
0662                 <item>consumeRights</item>
0663                 <item>decrypt</item>
0664                 <item>duplicate</item>
0665                 <item>exist</item>
0666                 <item>finalizeDecryptUnit</item>
0667                 <item>find</item>
0668                 <item>gen_unique_id</item>
0669                 <item>get</item>
0670                 <item>get_state</item>
0671                 <item>grant</item>
0672                 <item>initializeDecryptUnit</item>
0673                 <item>is_empty</item>
0674                 <item>list</item>
0675                 <item>openDecryptSession</item>
0676                 <item>password</item>
0677                 <item>pread</item>
0678                 <item>reset</item>
0679                 <item>set</item>
0680                 <item>setPlaybackStatus</item>
0681                 <item>sign</item>
0682                 <item>unlock</item>
0683                 <item>user_changed</item>
0684                 <item>verify</item>
0685         </list>
0686 
0687         <!-- FS & VFS Types -->
0688         <list name="filesystem">
0689                 <include>rule_mount_fstypes##AppArmor Security Profile</include>
0690         </list>
0691 
0692         <!-- Keywords/Functions provided by SELinux Reference Policy -->
0693         <list name="refpolicy_keywords">
0694                 <item>policy_module</item>
0695                 <item>gen_require</item>
0696                 <item>template</item>
0697                 <item>interface</item>
0698                 <item>optional_policy</item>
0699                 <item>gen_tunable</item>
0700                 <item>tunable_policy</item>
0701                 <item>gen_user</item>
0702                 <item>gen_context</item>
0703                 <item>gen_bool</item>
0704                 <item>gen_cats</item>
0705                 <item>gen_sens</item>
0706                 <item>gen_levels</item>
0707                 <item>mls_systemlow</item>
0708                 <item>mls_systemhigh</item>
0709                 <item>mcs_systemlow</item>
0710                 <item>mcs_systemhigh</item>
0711                 <item>mcs_allcats</item>
0712                 <item>ifndef</item>
0713         </list>
0714 
0715         <!-- M4 Built-in Keywords (obtained from "m4.xml") -->
0716         <list name="m4_builtin">
0717                 <include>builtins##GNU M4</include>
0718                 <include>m4_builtins##GNU M4</include>
0719         </list>
0720         <list name="m4_builtin_regexp">
0721                 <item>regexp</item>
0722                 <item>patsubst</item>
0723                 <item>m4_regexp</item>
0724                 <item>m4_patsubst</item>
0725         </list>
0726 
0727         <contexts>
0728 
0729                 <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
0730                         <IncludeRules context="_m4_preprocessor"/>
0731                         <IncludeRules context="_find_all_comments"/>
0732                         <IncludeRules context="_m4_special_arguments"/>
0733 
0734                         <!-- Content Quoted (M4).
0735                              NOTE: The default quotes (`text') are highlighted,
0736                              but another type of quotation mark can be used. -->
0737                         <IncludeRules context="_m4_string_simple"/> <!-- `simple text' -->
0738                         <IncludeRules context="_m4_quotes"/> <!-- &m4Quotes; -->
0739 
0740                         <DetectChar context="_quoted" attribute="Text Quoted" char="&quot;"/>
0741                         <DetectChar context="_path" attribute="Path" char="/"/>
0742                         <RegExpr context="_input_sel" attribute="Input Selector" String="\b&identifier;(?=\s*\=\s*[^\s\=,;\}\)\]#!\^:])"/>
0743 
0744                         <!-- Keywords & Statements -->
0745                         <keyword context="#stay" attribute="Booleans" String="booleans"/>
0746                         <keyword context="#stay" attribute="Special Keys" String="self"/>
0747                         <keyword context="_statement_policycap" attribute="Policy Config. Statements" String="statements_policycap"/>
0748                         <!-- Highlight class -->
0749                         <keyword context="_statement_find_class" attribute="Access Keys" String="statements_access"/>
0750                         <keyword context="_statement_find_class" attribute="Statements" String="statements_type"/>
0751                         <keyword context="_statement_find_class" attribute="Statements" String="statements_role_transition"/>
0752                         <!-- Special contexts in statements -->
0753                         <keyword context="_statement_range_transition" attribute="Statements" String="statements_range_transition"/>
0754                         <keyword context="_statement_default" attribute="Statements" String="statements_default"/>
0755                         <keyword context="_statement_default_range" attribute="Statements" String="statements_default_range"/>
0756                         <keyword context="_statement_cexpr" attribute="Statements" String="statements_cexpr"/>
0757                         <!-- Detect identifier after statement -->
0758                         <keyword context="_find_identifier" attribute="Statements" String="statements_def"/>
0759                         <keyword context="_find_mls_level" attribute="Statements" String="statements_mls_level_def"/>
0760                         <keyword context="_find_mls_level_range" attribute="Statements" String="mls_range_def"/>
0761 
0762                         <keyword context="#stay" attribute="Statements" String="statements"/>
0763                         <keyword context="#stay" attribute="Statements" String="statements_fc"/>
0764                         <keyword context="#stay" attribute="Statements" String="keywords"/>
0765                         <keyword context="#stay" attribute="Expression Keys" String="cond_operators"/>
0766 
0767                         <!-- Keywords/Functions of M4 & Reference Policy -->
0768                         <WordDetect context="_function_gen_context" attribute="Refpolicy Keywords" String="gen_context"/>
0769                         <keyword context="#stay" attribute="Refpolicy Keywords" String="refpolicy_keywords"/>
0770                         <IncludeRules context="_m4_builtin_keywords"/>
0771                         <RegExpr context="#stay" attribute="Function" String="\b&identifier;(?=\()"/>
0772 
0773                         <!-- IP Addresses -->
0774                         <IncludeRules context="_ip_addr"/>
0775 
0776                         <!-- Keywords: Access Vectors Permissions & Filesystem -->
0777                         <IncludeRules context="_av_permissions"/>
0778                         <keyword context="#stay" attribute="Filesystem" String="filesystem"/>
0779 
0780                         <!-- Boolean Operators -->
0781                         <Detect2Chars context="#stay" attribute="Boolean Operators" char="=" char1="="/>
0782                         <Detect2Chars context="#stay" attribute="Boolean Operators" char="!" char1="="/>
0783                         <Detect2Chars context="#stay" attribute="Boolean Operators" char="&amp;" char1="&amp;"/>
0784                         <Detect2Chars context="#stay" attribute="Boolean Operators" char="|" char1="|"/>
0785                         <AnyChar context="#stay" attribute="Boolean Operators" String="!^"/>
0786 
0787                         <!-- Symbols/Operators -->
0788                         <DetectChar context="#stay" attribute="Operator" char="{" beginRegion="Bracket"/>
0789                         <DetectChar context="#stay" attribute="Operator" char="}" endRegion="Bracket"/>
0790                         <DetectChar context="#stay" char="(" beginRegion="ParenthesesBlock"/>
0791                         <DetectChar context="#stay" char=")" endRegion="ParenthesesBlock"/>
0792 
0793                         <Detect2Chars context="#stay" attribute="Operator" char="-" char1="&gt;"/>
0794                         <AnyChar context="#stay" attribute="Operator" String="~[]"/>
0795                         <AnyChar context="#stay" attribute="Symbol" String=",;:-"/>
0796 
0797                         <IncludeRules context="_common_special_char"/>
0798                         <IncludeRules context="_line_continue_escape"/>
0799 
0800                         <!-- File Contexts -->
0801                         <RegExpr context="_file_contexts" attribute="File Contexts" String="\b&identifierWithArg;(?:\:&identifierWithArg;){2}(?:\:&mlsLevel;(?:\s*\-\s*&mlsLevel;)?)?\b" lookAhead="true"/>
0802 
0803                         <!-- This avoids highlighting numbers in identifiers -->
0804                         <RegExpr context="#stay" String="&identifier;"/>
0805                         <!-- Numbers -->
0806                         <RegExpr context="#stay" attribute="Number" String="\b&versionIdentifier;"/>
0807                         <HlCHex context="#stay" attribute="Hexadecimal"/>
0808                         <Float context="#stay" attribute="Number"/>
0809                         <Int context="#stay" attribute="Number"/>
0810 
0811                         <RegExpr context="#stay" attribute="Reserved Keywords" String="(?:\s|^)\-[bcdpls\-](?=\s|$)"/>
0812                         <DetectChar context="#stay" attribute="Symbol" char="."/>
0813                 </context>
0814 
0815                 <!-- Statements -->
0816 
0817                 <!-- Highlight class after ":", in some statements -->
0818                 <context name="_statement_find_class" attribute="Normal Text" lineEndContext="#stay">
0819                         <DetectChar context="#pop!_class" attribute="Symbol" char=":"/>
0820                         <DetectChar context="#pop" attribute="Symbol" char=";" lookAhead="true"/> <!-- End rule -->
0821                         <IncludeRules context="_normal"/>
0822                 </context>
0823                 <context name="_class" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0824                         <!-- Class -->
0825                         <RegExpr context="#pop" attribute="Class" String="\s*&identifier;(?=[^:\w\-\.,]|$)"/>
0826                 </context>
0827 
0828                 <!-- Special keywords in some statements -->
0829                 <context name="_statement_default" attribute="Normal Text" lineEndContext="#stay">
0830                         <keyword context="#stay" attribute="Reserved Keywords" String="source_target"/>
0831                         <DetectChar context="#pop" attribute="Symbol" char=";" lookAhead="true"/>
0832                         <IncludeRules context="_normal"/>
0833                 </context>
0834                 <context name="_statement_default_range" attribute="Normal Text" lineEndContext="#stay">
0835                         <keyword context="#stay" attribute="Range" String="range"/>
0836                         <IncludeRules context="_statement_default"/>
0837                 </context>
0838                 <context name="_statement_cexpr" attribute="Normal Text" lineEndContext="#stay">
0839                         <keyword context="#stay" attribute="Expression Keys" String="cexpr_operators"/>
0840                         <keyword context="#stay" attribute="Special Keys" String="cexpr_keywords"/>
0841                         <keyword context="#stay" attribute="Reserved Keywords" String="source_target"/>
0842                         <keyword context="#stay" attribute="Reserved Keywords" String="sameuser"/>
0843                         <DetectChar context="#pop" attribute="Symbol" char=";" lookAhead="true"/>
0844                         <IncludeRules context="_normal"/>
0845                 </context>
0846                 <context name="_statement_policycap" attribute="Normal Text" lineEndContext="#stay">
0847                         <keyword context="#stay" attribute="Policy Capability" String="policy_capabilities"/>
0848                         <DetectChar context="#pop" attribute="Symbol" char=";" lookAhead="true"/>
0849                         <IncludeRules context="_normal"/>
0850                 </context>
0851 
0852                 <!-- RANGE_TRANSITION: Highlight level/range and fix class after ":" -->
0853                 <context name="_statement_range_transition" attribute="Normal Text" lineEndContext="#stay">
0854                         <DetectChar context="#pop" attribute="Symbol" char=";" lookAhead="true"/>
0855                         <RegExpr context="_class_range_transition_statement" String="&identifierWithArg;\s*:\s*&identifierWithArg;\s+[a-zA-Z\$]" lookAhead="true"/>
0856 
0857                         <RegExpr context="#pop!_mls_level_range" String="&mls_level_range_ident;\s+\-\s+&identifierWithArg;|&mls_level_range_ident;(?:\s*\-\s*&mls_level_range_ident;)?(?=\s*;)" lookAhead="true" minimal="1"/>
0858                         <IncludeRules context="_normal"/>
0859                 </context>
0860                 <context name="_class_range_transition_statement" attribute="Normal Text" lineEndContext="#pop">
0861                         <DetectChar context="#pop!_class" attribute="Symbol" char=":"/>
0862                         <IncludeRules context="_m4_special_arguments"/>
0863                         <keyword context="#stay" attribute="Special Keys" String="self"/>
0864                 </context>
0865 
0866                 <!-- Detect identifier (highlight it as "Normal Text") -->
0867                 <context name="_find_identifier" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0868                         <IncludeRules context="_default_find_identifier"/>
0869                         <RegExpr context="#pop" attribute="Normal Text" String="&identifier;"/>
0870                 </context>
0871                 <context name="_default_find_identifier" attribute="Normal Text" lineEndContext="#stay">
0872                         <DetectSpaces context="#stay"/>
0873                         <IncludeRules context="_m4_preprocessor"/>
0874                         <IncludeRules context="_find_all_comments"/>
0875                         <RegExpr context="#pop" attribute="Function" String="\b&identifier;(?=\()" lookAhead="true"/>
0876                 </context>
0877 
0878                 <!-- Detect MLS/MCS Level (s0.s1:c0,c1) -->
0879                 <context name="_find_mls_level" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0880                         <IncludeRules context="_default_find_identifier"/>
0881                         <RegExpr context="#pop!_mls_level" String="&identifierWithArg;" lookAhead="true" minimal="1"/>
0882                 </context>
0883                 <!-- Detect MLS/MCS Range (s0:c0 - s1:c1) -->
0884                 <context name="_find_mls_level_range" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0885                         <IncludeRules context="_default_find_identifier"/>
0886                         <RegExpr context="#pop!_mls_level_range" String="&identifierWithArg;" lookAhead="true" minimal="1"/>
0887                 </context>
0888                 <!-- MLS/MCS Range: Sensitivity:Category - Sensitivity:Category -->
0889                 <context name="_mls_level_range" attribute="MLS/MCS Level/Range" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0890                         <RegExpr context="#pop!_mls_level_range_cat" attribute="Symbol" String=":(?=&identifierWithArg;)"/> <!-- Find Category -->
0891                         <RegExpr context="#pop!_mls_level" attribute="Symbol" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
0892                         <RegExpr context="#stay" attribute="Symbol" String="\.(?=&identifierWithArg;)"/>
0893                         <IncludeRules context="_default_mls_level"/>
0894                 </context>
0895                 <context name="_mls_level_range_cat" attribute="MLS/MCS Level/Range" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0896                         <RegExpr context="#pop!_mls_level" attribute="Symbol" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
0897                         <RegExpr context="#stay" attribute="Symbol" String="(?:\.|\s*,\s*)(?=&identifierWithArg;)"/>
0898                         <IncludeRules context="_default_mls_level"/>
0899                 </context>
0900                 <!-- MLS/MCS Level: Sensitivity:Category -->
0901                 <context name="_mls_level" attribute="MLS/MCS Level/Range" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0902                         <RegExpr context="#pop!_mls_level_cat" attribute="Symbol" String=":(?=&identifierWithArg;)"/> <!-- Find Category -->
0903                         <RegExpr context="#stay" attribute="Symbol" String="\.(?=&identifierWithArg;)"/>
0904                         <IncludeRules context="_default_mls_level"/>
0905                 </context>
0906                 <context name="_mls_level_cat" attribute="MLS/MCS Level/Range" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0907                         <RegExpr context="#stay" attribute="Symbol" String="(?:\.|\s*,\s*)(?=&identifierWithArg;)"/>
0908                         <IncludeRules context="_default_mls_level"/>
0909                 </context>
0910                 <context name="_default_mls_level" attribute="MLS/MCS Level/Range" lineEndContext="#pop">
0911                         <RegExpr context="#stay" attribute="MLS/MCS Level/Range" String="\w+"/>
0912                         <DetectChar context="#stay" attribute="MLS/MCS Level/Range" char="-"/>
0913                         <IncludeRules context="_m4_special_arguments"/>
0914                 </context>
0915 
0916                 <!-- Double Quotes String (does not support line breaks and line continuation escape) -->
0917                 <context name="_quoted" attribute="Text Quoted"
0918                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_filename_quoted">
0919                         <RegExpr context="#pop!_path_quoted" attribute="Text Quoted" String="[^&quot;/]*/" lookAhead="true"/> <!-- Find path -->
0920                 </context>
0921                 <context name="_filename_quoted" attribute="Text Quoted" lineEndContext="#pop">
0922                         <DetectChar context="#pop" attribute="Text Quoted" char="&quot;"/>
0923                         <IncludeRules context="_m4_special_arguments"/>
0924                         <RegExpr context="#stay" attribute="Text Quoted Open" String="[^\s&quot;\\](?=\s*$)"/>
0925                 </context>
0926                 <context name="_path_quoted" attribute="Text Quoted" lineEndContext="#pop">
0927                         <DetectChar context="#pop" attribute="Text Quoted" char="&quot;"/>
0928                         <!-- Quote escaped is not allowed? (see line 260-261 in "selinux/checkpolicy/policy_scan.l") -->
0929                         <IncludeRules context="_m4_special_arguments"/>
0930                         <IncludeRules context="_regex_quoted"/>
0931                         <RegExpr context="#stay" attribute="Text Quoted Open" String="[^\s&quot;\[\(\\](?=\s*$)"/>
0932                 </context>
0933 
0934                 <!-- Path -->
0935                 <context name="_path" attribute="Path" lineEndContext="#pop">
0936                         <DetectSpaces context="#pop" lookAhead="true"/>
0937                         <IncludeRules context="_m4_special_arguments"/>
0938                         <IncludeRules context="_regex"/>
0939                 </context>
0940 
0941                 <!-- Input Selectors: selector=value
0942                      NOTE: "seapp_contexts" in the Android policy use this. -->
0943                 <context name="_input_sel" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0944                         <DetectSpaces context="#stay"/>
0945                         <DetectChar context="#stay" attribute="Symbol" char="="/>
0946                         <keyword context="#pop" attribute="Booleans" String="booleans"/>
0947                         <keyword context="#pop" attribute="Special Keys" String="self"/>
0948                         <DetectChar context="#pop" char="&quot;" lookAhead="true"/>
0949                         <RegExpr context="#pop" attribute="Normal Text" String="&identifier;(?=[,;]?(?:\s|$))"/>
0950                         <!-- Find RegExp -->
0951                         <AnyChar context="#pop!_path" String="[(" lookAhead="true"/>
0952                         <RegExpr context="#pop!_path" String="[^\=\s&quot;\{\}\[\]\(\);#]+[\{\[\(\*\+\?]|[^\=\s&quot;\{\}\[\]\(\);#\d]+\." lookAhead="true"/>
0953                 </context>
0954 
0955                 <!-- Special functions of Refpolicy -->
0956                 <context name="_function_gen_context" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0957                         <DetectChar context="#pop!_function_gen_context_find_fc" attribute="Normal Text" char="("  beginRegion="ParenthesesBlock"/>
0958                 </context>
0959                 <context name="_function_gen_context_find_fc" attribute="File Contexts"
0960                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_function_gen_context_content">
0961                         <RegExpr context="_file_contexts" String="&identifierWithArg;(?:\:&identifierWithArg;){2}\b" lookAhead="true"/>
0962                         <DetectSpaces context="#stay"/>
0963                 </context>
0964                 <context name="_function_gen_context_content" attribute="File Contexts" lineEndContext="#pop">
0965                         <DetectChar context="#pop" attribute="Normal Text" char=")" endRegion="ParenthesesBlock"/>
0966                         <AnyChar context="#stay" attribute="Normal Text" String=".:-"/>
0967                         <AnyChar context="#stay" attribute="Symbol" String=",;"/>
0968                         <IncludeRules context="_m4_special_arguments"/>
0969                         <IncludeRules context="_find_all_comments"/>
0970                         <IncludeRules context="_common_special_char"/>
0971                         <IncludeRules context="_line_continue_escape"/>
0972                 </context>
0973 
0974                 <!-- File Contexts.
0975                      NOTE: File contexts with spaces before and after each ":" are not highlighted. -->
0976                 <!-- user:role:type -->
0977                 <context name="_file_contexts" attribute="File Contexts" lineEndContext="#pop">
0978                         <DetectChar context="#pop!_fc_role" attribute="Symbol" char=":"/>
0979                         <IncludeRules context="_m4_special_arguments"/>
0980                 </context>
0981                 <context name="_fc_role" attribute="File Contexts" lineEndContext="#pop">
0982                         <DetectChar context="#pop!_fc_type" attribute="Symbol" char=":"/>
0983                         <IncludeRules context="_m4_special_arguments"/>
0984                 </context>
0985                 <context name="_fc_type" attribute="File Contexts (Type Enforcement)" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_after_fc">
0986                         <RegExpr context="#pop!_fc_level_range" attribute="Symbol" String=":(?=&mlsLevel;)"/> <!-- Find Level/Range -->
0987                         <RegExpr context="#stay" attribute="File Contexts (Type Enforcement)" String="\.?[\w\-]+|\.(?=\$)"/>
0988                         <IncludeRules context="_m4_special_arguments"/>
0989                 </context>
0990                 <!-- (MLS/MCS) user:role:type:level -->
0991                 <context name="_fc_level_range" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_after_fc">
0992                         <RegExpr context="#pop!_fc_level_range_cat" attribute="Symbol" String=":(?=&identifierWithArg;)"/> <!-- Find Category -->
0993                         <RegExpr context="#pop!_fc_level" attribute="Symbol" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
0994                         <RegExpr context="#stay" attribute="Symbol" String="\.(?=&identifierWithArg;)"/>
0995                         <IncludeRules context="_default_fc_level"/>
0996                 </context>
0997                 <context name="_fc_level_range_cat" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_after_fc">
0998                         <RegExpr context="#pop!_fc_level" attribute="Symbol" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
0999                         <RegExpr context="#stay" attribute="Symbol" String="(?:\.|\s*,\s*)(?=&identifierWithArg;)"/>
1000                         <IncludeRules context="_default_fc_level"/>
1001                 </context>
1002                 <!-- (MLS/MCS) user:role:type:level-level -->
1003                 <context name="_fc_level" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_after_fc">
1004                         <RegExpr context="#pop!_fc_level_cat" attribute="Symbol" String=":(?=&identifierWithArg;)"/> <!-- Find Category -->
1005                         <RegExpr context="#stay" attribute="Symbol" String="\.(?=&identifierWithArg;)"/>
1006                         <IncludeRules context="_default_fc_level"/>
1007                 </context>
1008                 <context name="_fc_level_cat" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_after_fc">
1009                         <RegExpr context="#stay" attribute="Symbol" String="(?:\.|\s*,\s*)(?=&identifierWithArg;)"/>
1010                         <IncludeRules context="_default_fc_level"/>
1011                 </context>
1012                 <context name="_default_fc_level" attribute="File Contexts" lineEndContext="#pop">
1013                         <RegExpr context="#stay" attribute="File Contexts" String="\w+"/>
1014                         <DetectChar context="#stay" attribute="File Contexts" char="-"/>
1015                         <IncludeRules context="_m4_special_arguments"/>
1016                 </context>
1017 
1018                 <context name="_after_fc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
1019                         <RegExpr context="#stay" attribute="Symbol" String=":(?=&identifierWithArg;)"/>
1020                         <RegExpr context="#stay" attribute="Normal Text" String="&identifier;"/>
1021                         <IncludeRules context="_m4_special_arguments"/>
1022                 </context>
1023 
1024                 <!--
1025                 ========================================
1026                         Comments & Documentation
1027                 ======================================== -->
1028 
1029                 <context name="_find_comments" attribute="Normal Text" lineEndContext="#stay">
1030                         <Detect2Chars context="_doc_comment" attribute="Documentation" char="#" char1="#"/>
1031                         <DetectChar context="_comment" attribute="Comment" char="#"/>
1032                 </context>
1033                 <context name="_find_all_comments" attribute="Normal Text" lineEndContext="#stay">
1034                         <IncludeRules context="_find_comments"/>
1035                         <!-- For Macros -->
1036                         <RegExpr context="_comment" attribute="Comment" String="\bdnl(?!\.?[\w\-])"/>
1037                 </context>
1038 
1039                 <context name="_comment" attribute="Comment" lineEndContext="#pop">
1040                         <DetectSpaces />
1041                         <LineContinue context="#pop" attribute="Comment"/>
1042                         <IncludeRules context="##Comments"/>
1043                         <IncludeRules context="_default_comment"/>
1044                 </context>
1045                 <context name="_doc_comment" attribute="Documentation" lineEndContext="#pop">
1046                         <IncludeRules context="_find_tags"/>
1047                         <IncludeRules context="_find_entityrefs"/>
1048                         <LineContinue context="#pop" attribute="Documentation"/>
1049                         <IncludeRules context="_comment"/>
1050                 </context>
1051 
1052                 <context name="_find_tags" attribute="Documentation" lineEndContext="#pop">
1053                         <RegExpr context="_element_tag" attribute="Doc. Element Tag" String="&lt;\s*&tagName;" beginRegion="DocElement"/>
1054                         <RegExpr context="#stay" attribute="Doc. Element Tag" String="&lt;/\s*&tagName;\s*&gt;" endRegion="DocElement"/>
1055                 </context>
1056                 <context name="_find_entityrefs" attribute="Documentation" lineEndContext="#pop">
1057                         <RegExpr context="#stay" attribute="Doc. EntityRef" String="&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|[a-zA-Z_](?:[\w\-]*\w)?);"/>
1058                 </context>
1059 
1060                 <context name="_element_tag" attribute="Documentation" lineEndContext="#pop">
1061                         <Detect2Chars context="#pop" attribute="Doc. Element Tag" char="/" char1="&gt;" endRegion="DocElement"/>
1062                         <DetectChar context="#pop" attribute="Doc. Element Tag" char="&gt;"/>
1063                         <RegExpr context="_attribute" attribute="Doc. Attribute" String="\s&tagName;"/>
1064                         <RegExpr context="#pop" attribute="Error" String="\S"/>
1065                 </context>
1066                 <context name="_attribute" attribute="Documentation" lineEndContext="#pop">
1067                         <DetectChar context="#pop!_value" attribute="Documentation" char="="/>
1068                         <RegExpr context="#stay" attribute="Doc. Attribute" String="\s&tagName;"/>
1069                         <RegExpr context="#pop" attribute="Error" String="\S"/>
1070                 </context>
1071                 <context name="_value" attribute="Documentation" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
1072                         <RegExpr context="#pop!_value_dq" attribute="Doc. Value" String="\s*&quot;"/>
1073                         <RegExpr context="#pop!_value_sq" attribute="Doc. Value" String="\s*&apos;"/>
1074                         <RegExpr context="#stay" attribute="Error" String="\s*\S+"/>
1075                 </context>
1076                 <context name="_value_dq" attribute="Doc. Value" lineEndContext="#pop">
1077                         <RegExpr context="#pop" attribute="Error" String="\S(?=\s*$)"/>
1078                         <DetectChar context="#pop" attribute="Doc. Value" char="&quot;"/>
1079                         <IncludeRules context="_find_entityrefs"/>
1080                 </context>
1081                 <context name="_value_sq" attribute="Doc. Value" lineEndContext="#pop">
1082                         <RegExpr context="#pop" attribute="Error" String="\S(?=\s*$)"/>
1083                         <DetectChar context="#pop" attribute="Doc. Value" char="&apos;"/>
1084                         <IncludeRules context="_find_entityrefs"/>
1085                 </context>
1086 
1087                 <!--
1088                 ====================================================================
1089                       Common Rules for Syntax Highlighting of SELinux Policies
1090                 ====================================================================
1091                 NOTE: The following contexts are also used by "selinux-fc.xml"
1092                 and "selinux-cil.xml". -->
1093 
1094                 <!-- Default Comment (only for single line comments!) -->
1095                 <context name="_default_comment" attribute="Normal Text" lineEndContext="#pop">
1096                         <RegExpr context="#stay" attribute="URL in Comment" String="&url;|&email;"/>
1097                 </context>
1098 
1099                 <!-- IP Addresses -->
1100                 <context name="_ip_addr" attribute="Normal Text" lineEndContext="#stay">
1101                         <RegExpr context="#stay" attribute="IP Address" String="&ipv4;|&ipv6;"/>
1102                         <!-- NOTE: IPv6 in the SELinux parser ("selinux/checkpolicy/policy_scan.l"): "(?:[\da-fA-F]{0,4}\:){2}[\da-fA-F:\.]*" -->
1103                 </context>
1104 
1105                 <!-- AV Permissions Keywords -->
1106                 <context name="_av_permissions" attribute="Normal Text" lineEndContext="#stay">
1107                         <keyword context="#stay" attribute="AV Permissions" String="av_permissions"/>
1108                         <keyword context="#stay" attribute="Android AV Permissions" String="av_permissions_android"/>
1109                 </context>
1110 
1111                 <!-- Special Characters -->
1112                 <context name="_common_special_char" attribute="Normal Text" lineEndContext="#stay">
1113                         <DetectChar context="#stay" attribute="Special Char" char="*"/>
1114                 </context>
1115                 <!-- Line-Continuation Escape -->
1116                 <context name="_line_continue_escape" attribute="Normal Text" lineEndContext="#stay">
1117                         <LineContinue context="#stay" attribute="Escape Char"/>
1118                 </context>
1119 
1120                 <!-- SELinux M4 Macros -->
1121 
1122                 <context name="_m4_special_arguments" attribute="Normal Text" lineEndContext="#stay">
1123                         <RegExpr context="#stay" attribute="M4 Special Arguments" String="&m4Args;"/>
1124                 </context>
1125                 <context name="_m4_quotes" attribute="Normal Text" lineEndContext="#stay">
1126                         <AnyChar context="#stay" attribute="Default M4 Quote" String="&m4Quotes;"/>
1127                 </context>
1128 
1129                 <context name="_m4_builtin_keywords" attribute="Normal Text" lineEndContext="#stay">
1130                         <keyword context="_function_regexp" attribute="M4 Built-in Keywords" String="m4_builtin_regexp"/>
1131                         <keyword context="#stay" attribute="M4 Built-in Keywords" String="m4_builtin"/>
1132                 </context>
1133 
1134                 <!-- #line -->
1135                 <context name="_m4_preprocessor" attribute="Normal Text" lineEndContext="#stay">
1136                         <RegExpr context="_m4_preprocessor_line_num" attribute="M4 Preprocessor" String="#line[ ](?=\d)"/>
1137                 </context>
1138                 <context name="_m4_preprocessor_line_num" attribute="M4 Preprocessor" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
1139                         <!-- #line 1 "source" -->
1140                         <Detect2Chars context="_m4_preprocessor_line_source_file" attribute="M4 Preprocessor" char="1" char1=" "/>
1141                         <Int context="#pop" attribute="M4 Preprocessor"/>
1142                 </context>
1143                 <context name="_m4_preprocessor_line_source_file" attribute="M4 Preprocessor"
1144                          lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
1145                         <RangeDetect context="#pop#pop" attribute="M4 Preprocessor" char="&quot;" char1="&quot;"/>
1146                 </context>
1147 
1148                 <!-- "regexp" function in M4 -->
1149                 <context name="_function_regexp" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
1150                         <DetectChar context="#pop!_function_regexp_content" attribute="Normal Text" char="(" beginRegion="ParenthesesBlock"/>
1151                 </context>
1152                 <context name="_function_regexp_content" attribute="Normal Text" lineEndContext="#stay">
1153                         <DetectChar context="#pop" attribute="Normal Text" char=")" endRegion="ParenthesesBlock"/>
1154                         <DetectChar context="#stay" attribute="Normal Text" char=","/>
1155                         <!-- Default Quote: `text' -->
1156                         <RegExpr context="_simple_string_regexp" attribute="Text Quoted" String="`(?=(?:&m4Args;|[\w\-\s])*')"/>
1157                         <IncludeRules context="_m4_quotes"/>
1158 
1159                         <IncludeRules context="_m4_special_arguments"/>
1160                         <IncludeRules context="_regex_general_otherquote"/>
1161                         <IncludeRules context="_find_all_comments"/>
1162                 </context>
1163                 <context name="_simple_string_regexp" attribute="Text Quoted" lineEndContext="#pop">
1164                         <DetectChar context="#pop" attribute="Text Quoted" char="&apos;"/>
1165                         <IncludeRules context="_m4_special_arguments"/>
1166                 </context>
1167 
1168                 <!-- Highlight simple string using the default quotes: `text' -->
1169                 <context name="_m4_string_simple" attribute="Normal Text" lineEndContext="#stay">
1170                         <DetectChar context="_find_m4_string_simple" char="`" lookAhead="true"/>
1171                 </context>
1172                 <context name="_find_m4_string_simple" attribute="Text Quoted" lineEndContext="#pop">
1173                         <RegExpr context="#pop!_block_quoted_simple" attribute="Text Quoted" String="`(?=(?:&m4Args;|[\w\-\.\s]|\(\))*&apos;)"/>
1174                         <DetectChar context="#pop" attribute="Default M4 Quote" char="`"/> <!-- &m4Quotes; -->
1175                 </context>
1176                 <context name="_block_quoted_simple" attribute="Text Quoted" lineEndContext="#pop">
1177                         <DetectChar context="#pop" attribute="Text Quoted" char="&apos;"/>
1178                         <IncludeRules context="_m4_special_arguments"/>
1179                 </context>
1180 
1181                 <!--
1182                 =================================
1183                           PCRE2 RegExp
1184                 ================================= -->
1185 
1186                 <context name="_default_regex" attribute="Normal Text" lineEndContext="#stay">
1187                         <IncludeRules context="_special_chars"/>
1188                         <IncludeRules context="_brackets_error"/>
1189                         <IncludeRules context="_quantification_brackets"/>
1190                 </context>
1191 
1192                 <!-- SELinux RegExp -->
1193                 <!-- For paths: not allow spaces & line breaks -->
1194                 <context name="_regex" attribute="Normal Text" lineEndContext="#stay">
1195                         <IncludeRules context="_default_regex"/>
1196                         <DetectChar context="_square_brackets" attribute="RegExp Brackets" char="["/>
1197                         <DetectChar context="_round_brackets" attribute="RegExp Brackets" char="("/>
1198                 </context>
1199                 <!-- For double quote string ("str"): allow spaces, but not line breaks -->
1200                 <context name="_regex_quoted" attribute="Normal Text" lineEndContext="#stay">
1201                         <IncludeRules context="_default_regex"/>
1202                         <DetectChar context="_square_brackets_quoted" attribute="RegExp Brackets" char="["/>
1203                         <DetectChar context="_round_brackets_quoted" attribute="RegExp Brackets" char="("/>
1204                 </context>
1205 
1206                 <!-- General RegExp:
1207                      - Allow escapes unsupported by SELinux.
1208                      - Do not end with a quote.
1209                      - Allow spaces & line breaks.
1210                      - Allow comments in round brackets. -->
1211                 <context name="_regex_general_otherquote" attribute="Normal Text" lineEndContext="#stay">
1212                         <IncludeRules context="_line_continue_escape"/>
1213                         <IncludeRules context="_fix_escape"/>
1214                         <IncludeRules context="_default_regex"/>
1215                         <DetectChar context="_square_brackets_otherquote" attribute="RegExp Brackets" char="["/>
1216                         <DetectChar context="_round_brackets_otherquote" attribute="RegExp Brackets" char="("/>
1217                 </context>
1218 
1219                 <context name="_special_chars" attribute="Normal Text" lineEndContext="#stay">
1220                         <AnyChar context="#stay" attribute="Special Char" String="&specialChars;"/>
1221                         <IncludeRules context="_escape"/>
1222                 </context>
1223 
1224                 <!-- Escapes -->
1225                 <context name="_escape" attribute="Normal Text" lineEndContext="#stay">
1226                         <!-- Escapes Not Supported by SELinux -->
1227                         <RegExpr context="#stay" attribute="Error" String="\\(?:[LlUu]|N\{\w+\})"/>
1228                         <RegExpr context="#stay" attribute="Escape Char" String="&escape1;|&escape2;|&escape3;|&escape4;|&escape5;|&escape6;|&escape7;|&escape8;|&escape9;|&escape10;|&escape11;"/>
1229                 </context>
1230                 <context name="_fix_escape" attribute="Normal Text" lineEndContext="#stay">
1231                         <AnyChar context="#stay" attribute="Special Char" String="^$"/>
1232                         <RegExpr context="#stay" attribute="Escape Char" String="\\(?:u[\da-fA-F]{4}|[LlUu]|N\{\w+\}|[0-7]{1,3})"/>
1233                 </context>
1234 
1235                 <!-- Special Characters in Groups: (?...). Also see: &capGroup; -->
1236                 <context name="_special_group_round_brackets" attribute="Normal Text" lineEndContext="#stay">
1237                         <RegExpr context="#stay" attribute="Special Char of Brackets" String="&group_bracket1;|&group_bracket2;|&group_bracket3;|&group_bracket4;"/>
1238                 </context>
1239 
1240                 <!-- {n} {min,} {,max} {min,max} -->
1241                 <context name="_quantification_brackets" attribute="Normal Text" lineEndContext="#stay">
1242                         <RegExpr context="_quantification_brackets_content" attribute="RegExp Brackets" String="\{(?=(?:\d+(?:,\d*)?|,\d+)\})"/>
1243                 </context>
1244                 <context name="_quantification_brackets_content" attribute="RegExp Brackets Content" lineEndContext="#pop">
1245                         <DetectChar context="#stay" attribute="Special Char of Brackets" char=","/>
1246                         <DetectChar context="#pop" attribute="RegExp Brackets" char="}"/>
1247                 </context>
1248 
1249                 <!-- Groups: [ ] and ( ) -->
1250                 <context name="_default_square_brackets" attribute="RegExp Brackets Content" lineEndContext="#stay">
1251                         <DetectChar context="#stay" attribute="Error" char="["/>
1252                         <IncludeRules context="_special_chars"/>
1253                 </context>
1254                 <context name="_default_round_brackets" attribute="RegExp Brackets Content" lineEndContext="#stay">
1255                         <DetectChar context="#stay" attribute="Special Char of Brackets" char="|"/>
1256                         <IncludeRules context="_default_regex"/>
1257                 </context>
1258                 <context name="_brackets_error" attribute="Normal Text" lineEndContext="#stay">
1259                         <Detect2Chars context="#stay" attribute="Error" char="[" char1="]"/>
1260                 </context>
1261 
1262                 <!-- Groups Brackets in Paths (do not allow spaces and line breaks) -->
1263                 <context name="_square_brackets" attribute="RegExp Brackets Content"
1264                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_square_brackets_content">
1265                         <!-- Negative Characters -->
1266                         <RegExpr context="#pop!_square_brackets_content" attribute="Special Char of Brackets" String="\^(?=[^\s\]])"/>
1267                 </context>
1268                 <context name="_square_brackets_content" attribute="RegExp Brackets Content" lineEndContext="#pop">
1269                         <DetectChar context="#pop" attribute="RegExp Brackets" char="]"/>
1270                         <DetectSpaces context="#pop" lookAhead="true"/>
1271                         <RegExpr context="#stay" attribute="Open RegExp Brackets" String="[^\s\[\]\\](?=\s|$)"/>
1272                         <IncludeRules context="_default_square_brackets"/>
1273                 </context>
1274 
1275                 <context name="_round_brackets" attribute="RegExp Brackets Content"
1276                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_round_brackets_content">
1277                         <IncludeRules context="_special_group_round_brackets"/>
1278                         <RegExpr context="#pop!_round_brackets_content" attribute="Special Char of Brackets" String="&capGroup;(?=[^\)\s])"/>
1279                         <DetectChar context="#pop!_round_brackets_content" char="?"/>
1280                 </context>
1281                 <context name="_round_brackets_content" attribute="RegExp Brackets Content" lineEndContext="#pop">
1282                         <DetectChar context="#pop" attribute="RegExp Brackets" char=")"/>
1283                         <DetectSpaces context="#pop" lookAhead="true"/>
1284                         <RegExpr context="#stay" attribute="Open RegExp Brackets" String="[^\s\[\(\)\\](?=\s|$)"/>
1285                         <IncludeRules context="_default_round_brackets"/>
1286                         <DetectChar context="_square_brackets" attribute="RegExp Brackets" char="["/>
1287                         <DetectChar context="_round_brackets" attribute="RegExp Brackets" char="("/>
1288                 </context>
1289 
1290                 <!-- Groups Brackets in Double Quoted Strings (allow spaces, but not line breaks) -->
1291                 <context name="_square_brackets_quoted" attribute="RegExp Brackets Content"
1292                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_square_brackets_quoted_content">
1293                         <RegExpr context="#pop!_square_brackets_quoted_content" attribute="Special Char of Brackets" String="\^(?=[^\]])"/>
1294                 </context>
1295                 <context name="_square_brackets_quoted_content" attribute="RegExp Brackets Content" lineEndContext="#pop">
1296                         <DetectChar context="#pop" attribute="RegExp Brackets" char="]"/>
1297                         <DetectChar context="#pop" char="&quot;" lookAhead="true"/>
1298                         <RegExpr context="#stay" attribute="Open RegExp Brackets" String="[^\s\[\]&quot;\\](?=\s*(?:&quot;|$))"/>
1299                         <IncludeRules context="_default_square_brackets"/>
1300                 </context>
1301 
1302                 <context name="_round_brackets_quoted" attribute="RegExp Brackets Content"
1303                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_round_brackets_quoted_content">
1304                         <IncludeRules context="_special_group_round_brackets"/>
1305                         <RegExpr context="#pop!_round_brackets_quoted_content" attribute="Special Char of Brackets" String="&capGroup;(?=[^\)])"/>
1306                         <DetectChar context="#pop!_round_brackets_quoted_content" char="?"/>
1307                 </context>
1308                 <context name="_round_brackets_quoted_content" attribute="RegExp Brackets Content" lineEndContext="#pop">
1309                         <DetectChar context="#pop" attribute="RegExp Brackets" char=")"/>
1310                         <DetectChar context="#pop" char="&quot;" lookAhead="true"/>
1311                         <RegExpr context="#stay" attribute="Open RegExp Brackets" String="[^\s\[\(\)&quot;\\](?=\s*(?:&quot;|$))"/>
1312                         <IncludeRules context="_default_round_brackets"/>
1313                         <DetectChar context="_square_brackets_quoted" attribute="RegExp Brackets" char="["/>
1314                         <DetectChar context="_round_brackets_quoted" attribute="RegExp Brackets" char="("/>
1315                 </context>
1316 
1317                 <!-- Groups Brackets in Unknown Quotes (allow spaces and line breaks) -->
1318                 <context name="_square_brackets_otherquote" attribute="RegExp Brackets Content"
1319                          lineEndContext="#pop!_square_brackets_otherquote_content" fallthrough="true" fallthroughContext="#pop!_square_brackets_otherquote_content">
1320                         <RegExpr context="#pop!_square_brackets_otherquote_content" attribute="Special Char of Brackets" String="\^(?=[^\]]|$)"/>
1321                 </context>
1322                 <context name="_square_brackets_otherquote_content" attribute="RegExp Brackets Content" lineEndContext="#stay">
1323                         <DetectChar context="#pop" attribute="RegExp Brackets" char="]"/>
1324                         <IncludeRules context="_default_square_brackets"/>
1325                 </context>
1326 
1327                 <context name="_round_brackets_otherquote" attribute="RegExp Brackets Content"
1328                          lineEndContext="#pop!_round_brackets_otherquote_content" fallthrough="true" fallthroughContext="#pop!_round_brackets_otherquote_content">
1329                         <IncludeRules context="_special_group_round_brackets"/>
1330                         <RegExpr context="#pop!_round_brackets_otherquote_content" attribute="Special Char of Brackets" String="&capGroup;(?=[^\)]|$)"/>
1331                         <DetectChar context="#pop!_round_brackets_otherquote_content" char="?"/>
1332                 </context>
1333                 <context name="_round_brackets_otherquote_content" attribute="RegExp Brackets Content" lineEndContext="#stay">
1334                         <DetectChar context="#pop" attribute="RegExp Brackets" char=")"/>
1335                         <IncludeRules context="_fix_escape"/>
1336                         <IncludeRules context="_default_round_brackets"/>
1337                         <IncludeRules context="_line_continue_escape"/>
1338                         <DetectChar context="_square_brackets_otherquote" attribute="RegExp Brackets" char="["/>
1339                         <DetectChar context="_round_brackets_otherquote" attribute="RegExp Brackets" char="("/>
1340                         <RegExpr context="_comment" attribute="Comment" String="(?:^|\s)\#"/>
1341                 </context>
1342 
1343         </contexts>
1344 
1345         <itemDatas>
1346                 <itemData name="Normal Text"    defStyleNum="dsNormal"  spellChecking="false"/>
1347                 <itemData name="Comment"        defStyleNum="dsComment"/>
1348                 <itemData name="URL in Comment" defStyleNum="dsComment" underline="1" spellChecking="false"/>
1349                 <itemData name="Path"           defStyleNum="dsNormal"  spellChecking="false"/>
1350                 <itemData name="Text Quoted"    defStyleNum="dsString"  spellChecking="false"/>
1351 
1352                 <itemData name="IP Address"             defStyleNum="dsFloat"          spellChecking="false"/>
1353                 <itemData name="AV Permissions"         defStyleNum="dsVerbatimString" spellChecking="false"/>
1354                 <itemData name="Android AV Permissions" defStyleNum="dsVerbatimString" italic="1" spellChecking="false"/>
1355                 <itemData name="Policy Capability"      defStyleNum="dsPreprocessor"   bold="0" italic="0" underline="0" spellChecking="false"/>
1356                 <itemData name="Filesystem"             defStyleNum="dsNormal"         italic="1" spellChecking="false"/>
1357 
1358                 <itemData name="Statements"        defStyleNum="dsKeyword"  bold="1" spellChecking="false"/>
1359                 <itemData name="Policy Config. Statements" defStyleNum="dsPreprocessor" bold="1" italic="0" underline="0" spellChecking="false"/>
1360                 <itemData name="Access Keys"       defStyleNum="dsWarning"  bold="1" italic="0" underline="0" spellChecking="false"/>
1361                 <itemData name="Expression Keys"   defStyleNum="dsVariable" bold="1" italic="0" underline="0" spellChecking="false"/>
1362                 <itemData name="Boolean Operators" defStyleNum="dsVariable" bold="1" italic="0" underline="0" spellChecking="false"/>
1363                 <itemData name="Special Keys"      defStyleNum="dsOthers"   spellChecking="false"/>
1364                 <itemData name="Reserved Keywords" defStyleNum="dsKeyword"  spellChecking="false"/>
1365 
1366                 <itemData name="Booleans"            defStyleNum="dsExtension"     bold="1" underline="0" spellChecking="false"/>
1367                 <itemData name="Range"               defStyleNum="dsDecVal"        bold="1" spellChecking="false"/>
1368                 <itemData name="Class"               defStyleNum="dsDataType"      bold="0" underline="0" spellChecking="false"/>
1369                 <itemData name="MLS/MCS Level/Range" defStyleNum="dsDocumentation" bold="0" italic="0" underline="0" spellChecking="false"/>
1370                 <itemData name="File Contexts"       defStyleNum="dsPreprocessor"  bold="0" italic="0" underline="0" spellChecking="false"/>
1371                 <itemData name="File Contexts (Type Enforcement)" defStyleNum="dsChar" bold="0" italic="0" underline="0" spellChecking="false"/>
1372                 <itemData name="Input Selector"      defStyleNum="dsAttribute"     spellChecking="false"/>
1373                 <itemData name="Operator"            defStyleNum="dsKeyword"       spellChecking="false"/>
1374                 <itemData name="Symbol"              defStyleNum="dsOperator"      spellChecking="false"/>
1375                 <itemData name="Number"              defStyleNum="dsDecVal"        spellChecking="false"/>
1376                 <itemData name="Hexadecimal"         defStyleNum="dsBaseN"         spellChecking="false"/>
1377 
1378                 <!-- Documentation -->
1379                 <itemData name="Documentation"    defStyleNum="dsComment"/>
1380                 <itemData name="Doc. Element Tag" defStyleNum="dsAnnotation"  bold="1" spellChecking="false"/>
1381                 <itemData name="Doc. EntityRef"   defStyleNum="dsInformation" spellChecking="false"/>
1382                 <itemData name="Doc. Attribute"   defStyleNum="dsAttribute"   spellChecking="false"/>
1383                 <itemData name="Doc. Value"       defStyleNum="dsString"      spellChecking="false"/>
1384 
1385                 <!-- Reference Policy -->
1386                 <itemData name="Function"             defStyleNum="dsFunction" spellChecking="false"/>
1387                 <itemData name="Refpolicy Keywords"   defStyleNum="dsFunction" italic="1" spellChecking="false"/>
1388                 <!-- M4 Macros -->
1389                 <itemData name="M4 Built-in Keywords" defStyleNum="dsBuiltIn"  spellChecking="false"/>
1390                 <itemData name="M4 Special Arguments" defStyleNum="dsVariable" spellChecking="false"/>
1391                 <itemData name="M4 Preprocessor"      defStyleNum="dsPreprocessor" spellChecking="false"/>
1392                 <itemData name="Default M4 Quote"     defStyleNum="dsString"   bold="1" spellChecking="false"/>
1393 
1394                 <!-- RegExp -->
1395                 <itemData name="Escape Char"              defStyleNum="dsChar"          spellChecking="false"/>
1396                 <itemData name="Special Char"             defStyleNum="dsSpecialChar"   spellChecking="false"/>
1397                 <itemData name="Special Char of Brackets" defStyleNum="dsAnnotation"    bold="0" italic="0" underline="0" spellChecking="false"/>
1398                 <itemData name="RegExp Brackets"          defStyleNum="dsSpecialString" spellChecking="false"/>
1399                 <itemData name="RegExp Brackets Content"  defStyleNum="dsSpecialString" spellChecking="false"/>
1400                 <itemData name="Open RegExp Brackets"     defStyleNum="dsSpecialString" underline="1" spellChecking="false"/>
1401                 <itemData name="Text Quoted Open"         defStyleNum="dsString"        underline="1" spellChecking="false"/>
1402 
1403                 <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
1404         </itemDatas>
1405 
1406 </highlighting>
1407 
1408 <general>
1409         <keywords casesensitive="true" additionalDeliminator="&quot;&apos;&#096;" weakDeliminator="-"/>
1410         <comments>
1411                 <comment name="singleLine" start="#"/>
1412         </comments>
1413 </general>
1414 
1415 </language>
1416 <!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->