^cI@s}ddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z dZ i4ddQ6ddR6ddS6d dT6d!dU6d"dV6d#dW6d$dX6d%dY6d&dZ6d'd[6d(d\6d)d]6d*d^6d+d_6d,d`6d-da6d.db6d/dc6d0dd6d1de6d2df6d3dg6d4dh6d5di6d6dj6d7dk6d8dl6d9dm6d:dn6d;do6d<dp6d=dq6d>dr6d?ds6d@dt6dAdu6dBdv6dCdw6dDdx6dEdy6dFdz6dGd{6dHd|6dId}6dJd~6dKd6dLd6dMd6dOd6dNd6dPd6Z dZ dZ dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'da)da*da+da,e-a.ddZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZKdZLdZMdZNdZOdZPdZQdZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^dZ_dZ`dZadZbdZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqdardasdZtddeudZvdZwde-eudZxdS(iNi(taccess(tdefaults(tlex(t refpolicy(tyacctTICKtSQUOTEtOBRACEtCBRACEtSEMItCOLONtOPARENtCPARENtCOMMAtMINUStTILDEtASTERISKtAMPtBARtEXPLtEQUALtFILENAMEt IDENTIFIERtNUMBERtPATHt IPV6_ADDRtMODULEt POLICY_MODULEtREQUIREtSIDtGENFSCONt FS_USE_XATTRt FS_USE_TRANSt FS_USE_TASKtPORTCONtNODECONtNETIFCONtPIRQCONtIOMEMCONt IOPORTCONt PCIDEVICECONt DEVICETREECONtCLASSt TYPEATTRIBUTEt ROLEATTRIBUTEtTYPEt ATTRIBUTEtATTRIBUTE_ROLEtALIASt TYPEALIAStBOOLtTRUEtFALSEtIFtELSEtROLEtTYPEStALLOWt DONTAUDITt AUDITALLOWt NEVERALLOWt PERMISSIVEt TYPEBOUNDStTYPE_TRANSITIONt TYPE_CHANGEt TYPE_MEMBERtRANGE_TRANSITIONtROLE_TRANSITIONt OPT_POLICYt INTERFACEtTUNABLE_POLICYtGEN_REQtTEMPLATEt GEN_CONTEXTtIFELSEtIFDEFtIFNDEFtDEFINEtmodulet policy_moduletrequiretsidtgenfscont fs_use_xattrt fs_use_transt fs_use_tasktportcontnodecontnetifcontpirqcontiomemcont ioportcont pcidevicecont devicetreecontclasst typeattributet roleattributettypet attributetattribute_roletaliast typealiastboolttruetfalsetiftelsetrolettypestallowt dontauditt auditallowt neverallowt permissivet typeboundsttype_transitiont type_changet type_membertrange_transitiontrole_transitiontoptional_policyt interfacettunable_policyt gen_requirettemplatet gen_contexttifelsetifndeftifdeftdefines\`s\'s\{s\}s\;+s\:s\(s\)s\,s\-s\~s\*s\&s\|s\!s\=s[0-9\.]+s/[a-zA-Z0-9)_\.\*/\$]*s cCs|S(s2[a-fA-F0-9]{0,4}:[a-fA-F0-9]{0,4}:([a-fA-F0-9]|:)*((tt((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt t_IPV6_ADDRscCs|jjd7_dS(sdnl.*\niN(tlexertlineno(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt t_m4commentscCs|jddS(sdefine.*refpolicywarn\(.*\niN(tskip(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pytt_refpolicywarn1scCs|jjd7_dS(srefpolicywarn\(.*\niN(RR(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pytt_refpolicywarnscCstj|jd|_|S(s#[a-zA-Z_\$][a-zA-Z0-9_\-\+\.\$\*~]*R(treservedtgettvalueRa(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt t_IDENTIFIERscCstj|jd|_|S(s\"[a-zA-Z0-9_\-\+\.\$\*~ :]+\"R(RRRRa(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt t_FILENAMEscCs|jjd7_dS(s\#.*\niN(RR(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt t_comment scCs!d|jdGH|jddS(NsIllegal character '%s'ii(RR(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pytt_errorscCs|jjt|j7_dS(s\n+N(RRtlenR(R((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt t_newlinestcCs{|dkrdSxd|D]\}|dkr/qn||_|dk r`|jjd||fq|jjd|qWdS(Ni(tNonetparenttchildrentinsert(tstmtsRtvalts((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pytcollect-s     cCsJxC|D];}tj|r5|jtj|q|j|qWdS(N(tsptthas_keytupdatetby_nametadd(tidsRtid((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pytexpand9s cCsjt|dkr3|dr3tjj|dn3t|dkrf|drftjj|dndS(s^statements : statement | statements statement | empty iiN(RtmRtappend(tp((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt p_statementsAscCs|d|dR?s TYPE_CHANGEs TYPE_MEMBERRBRCRDRERFRGsTEMPLATERIRJRKRLRM(yRRZR]RSRRRRRRttokensRtt_TICKtt_SQUOTEtt_OBRACEtt_CBRACEtt_SEMItt_COLONtt_OPARENtt_CPARENtt_COMMAtt_MINUStt_TILDEt t_ASTERISKtt_AMPtt_BARtt_EXPLtt_EQUALtt_NUMBERtt_PATHtt_ignoreRRRRRRRRRRRRBRARRRCRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR RRRRRRR R$R&R*R,R.R1R2R3R5R8R9R:R;R<R>R?R@RERGRLRRPRRQRgR(((s8/usr/lib64/python2.7/site-packages/sepolgen/refparser.pyt s                         "