+
    4Ssi\                     F   ^ RI HtHtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIHt ^ RIt^ RIHtHtHt ^ RIt^ R	IHtHt  ! R
 R]4      tRR ltR tR tR tR t ! R R]R7      t ! R R]4      t ! R R4      t ! R R]4      t ! R R]4      t  ! R R]4      t!R# )    )drsuapimiscdrsblobs)Net)
ndr_unpack)dsdb)werror)WERRORErrorN)DRSUAPI_ATTID_name(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8)DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10)ABCMetaabstractmethodc                   0   a  ] tR t^#t o RtR tR tRtV tR# )drsExceptionzBase element for drs errorsc                    Wn         R # Nvalue)selfr   s   &&1/usr/lib/python3/dist-packages/samba/drs_utils.py__init__drsException.__init__&   s    
    c                (    R V P                   ,           # )zdrsException: r   )r   s   &r   __str__drsException.__str__)   s    $**,,r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   #   s     %- -r   r   c                *   RpVP                  4       ^	8  d
   VR,          pVe   VRV  2,          pRV RV R2pMRV : RV: R2p \        P                  ! WQV4      p\        V4      w  rxYgT3#   \         d   p	\	        RT : R	T	: 24      hRp	?	ii ; i)
av  Make a DRSUAPI connection to the server.

:param server: the name of the server to connect to
:param lp: a samba line parameter object
:param creds: credential used for the connection
:param ip: Forced target server name
:return: A tuple with the drsuapi bind object, the drsuapi handle
            and the supported extensions.
:raise drsException: if the connection fails
sealz,printNz,target_hostname=zncacn_ip_tcp:[]zDRS connection to z	 failed: )	log_levelr   
drs_DsBind	Exceptionr   )
serverlpcredsipbinding_optionsbinding_stringdrsuapiBinddrsuapiHandlebindSupportedExtensionses
   &&&&      r   drsuapi_connectr8   -   s     O	||~8# 
~.vh77(Ao->a@  39/JLoon%@3=k3J0 (?@@  LJKKLs   $A/ /B:BBc                &   \         P                  ! 4       pW5n        \         P                  ! 4       pWVn        WFn        \        P                  ! V4      Vn         V P                  V^V4       R#   \         d   p\        RT,          4      hRp?ii ; i)a  Send DS replica sync request.

:param drsuapiBind: a drsuapi Bind object
:param drsuapi_handle: a drsuapi handle on the drsuapi connection
:param source_dsa_guid: the guid of the source dsa for the replication
:param naming_context: the DN of the naming context to replicate
:param req_options: replication options for the DsReplicaSync call
:raise drsException: if any error occur while sending and receiving the
    reply for the dsReplicaSync
zDsReplicaSync failed %sN)r   DsReplicaObjectIdentifierdnDsReplicaSyncRequest1naming_contextoptionsr   GUIDsource_dsa_guidDsReplicaSyncr-   r   )r4   drsuapi_handler@   r=   
req_optionncreq1estrs   &&&&&   r   sendDsReplicaSyncrG   M   sy     
	*	*	,BE((*DL99_5D=!!.!T: =4t;<<=s   A. .B9BBc                   \         P                  ! 4       p^Vn        \         P                  ! 4       Vn        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                   ,          un        VP                  ;P
                  \         P"                  ,          un        VP                  ;P
                  \         P$                  ,          un        VP                  ;P
                  \         P&                  ,          un        VP                  ;P
                  \         P(                  ,          un        VP                  ;P
                  \         P*                  ,          un        VP                  ;P
                  \         P,                  ,          un        VP                  ;P
                  \         P.                  ,          un        VP                  ;P
                  \         P0                  ,          un        VP                  ;P
                  \         P2                  ,          un        VP                  ;P
                  \         P4                  ,          un        VP                  ;P
                  \         P6                  ,          un        VP                  ;P
                  \         P8                  ,          un        VP                  ;P
                  \         P:                  ,          un        VP                  ;P
                  \         P<                  ,          un        VP                  ;P
                  \         P>                  ,          un        VP                  ;P
                  \         P@                  ,          un        VP                  ;P
                  \         PB                  ,          un        V PE                  \F        PH                  ! \         PJ                  4      V4      w  r#W2P                  P
                  3# )z0make a DsBind call, returning the binding handle)&r   DsBindInfoCtrlengthDsBindInfo28infosupported_extensions DRSUAPI_SUPPORTED_EXTENSION_BASE-DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION%DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI&DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2+DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS%DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V14DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION'DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE'DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V24DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION%DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V28DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD'DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND)DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO-DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V011DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP+DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY&DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3,DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6)DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCSr   *DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6,DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7)DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECTDsBindr   r?   DRSUAPI_DS_BIND_GUID)drs	bind_inforL   handles   &   r   r,   r,   h   sP   %%'II))+INNN''7+S+SS'NN''7+`+``'NN''7+X+XX'NN''7+Y+YY'NN''7+^+^^'NN''7+X+XX'NN''7+g+gg'NN''7+Z+ZZ'NN''7+Z+ZZ'NN''7+g+gg'NN''7+X+XX'NN''7+k+kk'NN''7+Z+ZZ'NN''7+\+\\'NN''7+`+``'NN''7+Y+YY'NN''7+d+dd'NN''7+^+^^'NN''7+Y+YY'NN''7+_+__'NN''7+[+[['NN''7+\+\\'NN''7+[+[['NN''7+]+]]'NN''7+]+]]'NN''7+_+__'NN''7+]+]]'NN''7+\+\\'ZZ		'*F*F GSNTII2233r   c                   \         P                  ! 4       p^Vn        . pV P                  4       pV P	                  V\
        P                  R. ROR7      pV F  p\        VR,          ^ ,          4      pRV9   dN   VR,          ^ ,          p\        V4      \        P                  \        P                  ,          ,          '       d   Kp  RV9   d9   VR,          ^ ,          p\        V4      \        P                  ,          '       d   K  V P                  V4      p	VP                  \        V	4      4       K  	  VP                  4        W!n        \#        V4      Vn        V# )z-get a list of attributes for RODC replicationzobjectClass=attributeSchemalDAPDisplayNamesystemFlagssearchFlags)basescope
expressionattrs)ro   rp   rq   )r   DsPartialAttributeSetversionget_schema_basednsearchldbSCOPE_SUBTREEstrintr   DS_FLAG_ATTR_NOT_REPLICATEDDS_FLAG_ATTR_IS_CONSTRUCTEDSEARCH_FLAG_RODC_ATTRIBUTEget_attid_from_lDAPDisplayNameappendsortattidslen
num_attids)
samdbpartial_attribute_setr   	schema_dnresrldap_display_namesystem_flagssearch_flagsattids
   &         r   "drs_get_rodc_partial_attribute_setr      s0   #99;$%!F
 '')I
,,IS->->"?-  .C
 "3 4Q 78A !- 0 3LL!T%E%E%)%E%E&F G GA]+A.L< 4#B#BBB445FGc%j!   KKM#) '*6{$  r   c                l    VP                   V n         VP                  V n        VP                  V n        R# )z
Copies the highwater mark by value, rather than by object reference. (This
avoids lingering talloc references to old GetNCChanges reply messages).
N)tmp_highest_usnreserved_usnhighest_usn)hwmnew_hwms   &&r   drs_copy_highwater_markr      s-    
 "11C++C))COr   c                   t   a  ] tR t^t o ]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tRtV t	R# )	drs_ReplicatorImplBasec                   < V ^8  d   QhRR/# )   returnN )formatr&   s   "r   __annotate__#drs_ReplicatorImplBase.__annotate__   s      	r   c                    R # r   r   r   r   levelctrschema	req_levelreqfirst_chunks   &&&&&&&&r   process_chunk$drs_ReplicatorImplBase.process_chunk   s     r   c                    < V ^8  d   QhRS[ /# r   r   bool)r   r&   s   "r   r   r      s    ,,4,r   c                    R # r   r   r   exts   &&r   supports_ext#drs_ReplicatorImplBase.supports_ext   s    ),r   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   r      s    999r   c                    R # r   r   r   r   r   s   &&&r   get_nc_changes%drs_ReplicatorImplBase.get_nc_changes   s    69r   r   N)
r   r   r    r!   r   r   r   r   r#   r$   r%   s   @r   r   r      s5       , ,9 9r   r   )	metaclassc                   P   a  ] tR t^t o R tR tV 3R lR ltV 3R lR ltRtV t	R# )	drs_ReplicatorImplc                   \         P                   ! WV4      V n        \        V P                  4      w  V n        V n        \        W2R 7      V n        \        V\        P                  4      '       g   \        R4      hV\        P                  ! R4      8X  d   \        R4      hV P                  P                  WBV P                  V4      V n        R# ))r0   r/   z"Must supply GUID for invocation_id$00000000-0000-0000-0000-000000000000zGMust not set GUID 00000000-0000-0000-0000-000000000000 as invocation_idN)r   rk   r,   
drs_handle_supports_extr   net
isinstancer   r?   RuntimeErrorreplicate_initreplication_state)r   r3   r/   r0   r   invocation_ids   &&&&&&r   r   drs_ReplicatorImpl.__init__   s    ??>u=0:4880D-$,U*-33CDDDII&LMMhii!%!8!8DHHm!\r   c           	     X    V P                   P                  V P                  W#WEVR7       R# )5Processes a single chunk of received replication data)r   r   r   N)r   replicate_chunkr   r   s   &&&&&&&&r   r    drs_ReplicatorImpl.process_chunk   s+     	  !7!7(. 	! 	Nr   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   drs_ReplicatorImpl.__annotate__   s     ( (4 (r   c                (    V P                   V,          # r   )r   r   s   &&r   r   drs_ReplicatorImpl.supports_ext   s    !!C''r   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   r      s     H H Hr   c                N    V P                   P                  V P                  W4      # r   )rk   DsGetNCChangesr   r   s   &&&r   r   !drs_ReplicatorImpl.get_nc_changes   s    xx&&t	GGr   )r   rk   r   r   r   N)
r   r   r    r!   r   r   r   r   r#   r$   r%   s   @r   r   r      s'     ]N( (H Hr   r   c                   z   a  ] tR t^t o RtR t]R 4       t]R 4       tR t	R]
P                  RRRR3R	 ltR
tV tR# )drs_ReplicatorzDRS replication implementationc                ,    W n         Wn        ^ V n        R# )r   N)r   repl
more_flags)r   r   r   s   &&&r   r   drs_Replicator.__init__   s    
	r   c                    V \         P                  8H  ;'       d9    \        VR 4      ;'       d%    VP                  \        P
                  ,          ^ 8H  # )r   )r	   WERR_DS_DRA_RECYCLED_TARGEThasattrr   r   DRSUAPI_DRS_GET_TGT
error_coder   s   &&r   _should_retry_with_get_tgt)drs_Replicator._should_retry_with_get_tgt   sQ     f@@@ D D\*D D'"="==!C	Er   c                    V \         P                  8H  ;'       d%    VP                  \        P                  ,          ^ 8g  # )r   )r	   WERR_DS_DRA_MISSING_PARENTreplica_flagsr   DRSUAPI_DRS_GET_ANCr   s   &&r   %_should_calculate_missing_anc_locally4drs_Replicator._should_calculate_missing_anc_locally   s=     v@@@ G G""W%@%@@QF	Hr   c                :   \        4       pVP                  pVEe    VP                  \        VP                  P
                  P                  4      4       VP                  e   VP                  \        P                  ! R4      8w  d   \        VP                  4      V9  dl   \        P                  ! V P                  VP                  P
                  P                  4      pVP                  4       p\        RV RVP                   R24       VP                   pEK  R # )Nr   zObject z with GUID z) was not sent by the server in this chunk)setfirst_objectaddr|   object
identifierguidparent_object_guidr   r?   rz   Dnr   r;   parentprintnext_object)r   r   
guids_seenobject_to_checkobj_dn	parent_dns   &&    r   _calculate_missing_anc_locally-drs_Replicator._calculate_missing_anc_locally  s    U

 **)NN355@@EEFG11="55))BCD99:*L

O,B,B,M,M,P,PQ"MMO		{ +-@@A BAA B .99O *r   FNTc
           	     `   V P                   P                  \        4      '       d*   ^
p
\        P                  ! 4       pV P
                  Vn        MTV P                   P                  \        4      '       d   ^p
\        P                  ! 4       pM^p
\        P                  ! 4       pW;n	        W+n
        \        P                  ! 4       Vn        WP                  n        Rp\        P                  ! 4       p^ Vn        ^ Vn        ^ Vn        V'       Egm   V P$                  P'                  V\(        P*                  R.R7      pRV^ ,          9   de   V^ ,          R,           FP  p\-        \.        P0                  V4      pVP2                  P                  V8X  g   K:  VP2                  P4                  pKR  	  \        P6                  ! 4       p^Vn        ^ Vn        ^ Vn        . p\>        P@                  ! V P$                  V P$                  PC                  4       4      pV FK  p\        PD                  ! 4       pVP                  Vn
        VP"                  Vn        VPG                  V4       KM  	  VVn$        \K        V4      Vn&        Wn        Wn'        Ve   W{n(        MV\        PR                  8X  d	   ^ Vn(        M\        PT                  \        PV                  ,          \        PX                  ,          \        PZ                  ,          \        P\                  ,          Vn(        V'       d)   V;PP                  \        P^                  ,          un(        M'V;PP                  \        P`                  ,          un(        V	'       d(   V;PP                  \        Pb                  ,          un(        RVn2        RVn3        W[n4        ^ Vn5        \m        VR4      '       d+   V'       g#   V'       d   \o        V P$                  4      Vn8        ^ p^ pRp V P                   Ps                  W4      w  ppVPt                  f.   VPv                  ^ 8w  d   \y        RVPv                  ,          4      h V P                   P{                  V P$                  VVWJVV4       RpTTPv                  ,          p TTP                  ,          pTP                  ^ 8X  d    TT3# \        TP4                  TP                  4       K    \|         d   pT P                  TP                  ^ ,          T4      '       d<   \        R	4       T;P
                  \        P                  ,          un        Rp Rp?EKU  T P                  TP                  ^ ,          T4      '       d   \        R
4       T P                  T4       ThRp?ii ; i  \         d     ELi ; i)zreplicate a single DNNrepsFrom)rr   rs   ru   i  i" r   Tz6DsGetNCChanges: NULL first_object with object_count=%uz1Missing target object - retrying with DRS_GET_TGTz;Missing parent object - calculating missing objects locallyF)Jr   r   r   r   DsGetNCChangesRequest10r   r   DsGetNCChangesRequest8DsGetNCChangesRequest5destination_dsa_guidsource_dsa_invocation_idr:   r=   r;   DsReplicaHighWaterMarkr   r   r   r   ry   rz   
SCOPE_BASEr   r   repsFromToBlobr   highwatermarkDsReplicaCursorCtrExrw   	reserved1	reserved2r   _dsdb_load_udv_v2get_default_basednDsReplicaCursorr   cursorsr   countuptodateness_vectorr   DRSUAPI_EXOP_REPL_SECRETDRSUAPI_DRS_INIT_SYNCDRSUAPI_DRS_PER_SYNCr   DRSUAPI_DRS_NEVER_SYNCED$DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP%DRSUAPI_DRS_SPECIAL_SECRET_PROCESSINGDRSUAPI_DRS_WRIT_REPDRSUAPI_DRS_SYNC_FORCEDmax_object_countmax_ndr_sizeextended_op	fsmo_infor   r   r   r   r   object_countr   r   r
   r   argsr   r   r   r   linked_attributes_countAttributeError	more_datar   new_highwatermark)r   r;   r   r   r   exoprodcr   	full_syncsync_forcedr   r   udvr   r   reps_from_packedreps_from_obj
cursors_v1
cursors_v2	cursor_v2	cursor_v1num_objects	num_linksr   r   r   r7   s   &&&&&&&&&&                 r   	replicatedrs_Replicator.replicate  s    99!!"KLLI113C!__CNYY##$LMMI002CI002C#7 '?$$>>@ " ,,.y**##3>>+5, $ 8CSV#(+Az(:(:$$.x/F/FHX$YM$((AAE]]+//== );
 ..0CCKCMCMJ//

04

0M0M0OQJ'	#335	5>5W5W	2(1(=(=	%!!),	 ( %CKJCI"%$ -W555 !C!(!>!>!(!=!=">!(!<!<"= ")!A!A"B ")!M!M	"NC
 !!W%R%RR!!!W%A%AA!!@!@@"!3/00D(J4::(VC%	9933ICLUC'C,<,<,A"#[_b_o_o#pqq		''JJsFsK(  K3+++KS888	 }}!
 Y'' $C$5$5s7L7LM=  22166!9cBBMNNNg&A&AAN #'K==affQiMMWX77<. " s7   *S  V  V+AV(V8VVV-,V-)r   r   r   )r   r   r    r!   r"   r   staticmethodr   r   r   r   DRSUAPI_EXOP_NONEr,  r#   r$   r%   s   @r   r   r      s`     (
 E E H H:2 W%>%>U $%A( A(r   r   c                   6   a a ] tR tRt oRtV 3R ltRtVtV ;t# )drs_Replicatei  zDRS replication callsc                @   < \        WW4V4      p\        SV `	  Wd4       R # r   )r   superr   )r   r3   r/   r0   r   r   r   	__class__s   &&&&&& r   r   drs_Replicate.__init__  s    !.eMR%r   r   )	r   r   r    r!   r"   r   r#   r$   __classcell__)r4  r&   s   @@r   r1  r1    s     & &r   r1  c                   p   a  ] tR tRt o RtR tR t]R 4       tR t	R t
V 3R lR	 ltV 3R
 lR ltRtV tR# )drs_ReplicateRenameri  z,Uses DRS replication to rename the entire DBc                T    Wn         W n        W0n        \        P                  V n        R # r   )r   old_base_dnnew_base_dnr   r   r   )r   r   r:  r;  s   &&&&r   r   drs_ReplicateRenamer.__init__  s"    	&& "55r   c                h    \         P                  ! RV P                  ,          V P                  V4      # )z/Uses string substitution to replace the base DNz%s$)resubr:  r;  )r   dn_strs   &&r   	rename_dndrs_ReplicateRenamer.rename_dn  s&    vved...0@0@&IIr   c                D   V P                   P                   F  pVP                  \        8X  g   K  \        P
                  ! WP                  P                  4      pVP                  4       pVP                  R4      VP                  P                  ^ ,          n        K  	  R# )z3Updates the 'name' attribute for the base DN objectz	utf-16-leN)attribute_ctr
attributesr   r   rz   r   r   r;   get_rdn_valueencode	value_ctrvaluesblob)base_objr   attrbase_dnnew_names   &&   r   update_name_attr%drs_ReplicateRenamer.update_name_attr  so     **55Dzz//&&(;(;(>(>?"002080L%%a(-	 6r   c                X   VP                   P                  pV P                  VP                   P                  4      VP                   n        \        RV: RVP                   P                  : 24       VP                   P                  V P                  8X  d   V P                  W4       R# R# )z1Renames the first/top-level object in a partitionzRenaming partition z --> N)r   r;   rA  r   r;  rO  )r   	first_objr   old_dns   &&& r   rename_top_level_object,drs_ReplicateRenamer.rename_top_level_object  s~    %%(("&..1E1E1H1H"I		8L8L8O8OPQ ""d&6&66!!)3 7r   c           	     L   VP                   '       d5   V P                  VP                   P                  4      VP                   n        V'       d8   VP                  ^ 8w  d'   V P	                  VP
                  P                  V4       V P                  P                  WW4WVV4       R# )r   N)	r=   rA  r;   r  rT  r   r   r   r   r   s   &&&&&&&&r   r   "drs_ReplicateRenamer.process_chunk  s{    
 $(NN33E3E3H3H$IC! 3++q0(()9)9)@)@%H 			c9;Wr   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   !drs_ReplicateRenamer.__annotate__       + +4 +r   c                8    V P                   P                  V4      # r   r   r   r   s   &&r   r   !drs_ReplicateRenamer.supports_ext      yy%%c**r   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   rY         8 8 8r   c                8    V P                   P                  W4      # r   r   r   r   s   &&&r   r   #drs_ReplicateRenamer.get_nc_changes      yy''	77r   )r   r;  r:  r   N)r   r   r    r!   r"   r   rA  r.  rO  rT  r   r   r   r#   r$   r%   s   @r   r8  r8    sH     6	6J M M	4X + +8 8r   r8  c                   X   a  ] tR tRt o 0 R
mtR tR tV 3R lR ltV 3R lR ltRt	V t
R	# )drs_SecretFilteri  c                    Wn         R # r   r   )r   r   s   &&r   r   drs_SecretFilter.__init__  s    	r   c           	       aa R V3R lloR V3R llpTp	VP                   p
RpV
Ee   Rp\        4       pV
P                  P                  P                   F  pVP
                  \        P                  8X  g   K$  VP                  P                  '       g   KB  SP                  \        P                  VP                  P                  ^ ,          P                  RR7      4      pSP                  V4      p M	  WP                   9   d>   V
P"                  p
V'       d   Wn         MWn        V;P$                  ^,          un        EK   \'        WP                  P                  P                  4       FI  pSP)                  VP
                  4      pW9   d   \+        R	V R
V R24       K8  ^ VP                  n	        KK  	  T
p	V
P"                  p
RpEK  V P,                  P/                  SW#WEWg4       R# )r   c                D    V ^8  d   QhR\         P                  R\        /# r   rL  r   )r   DsReplicaAttributer}   )r   s   "r   r   4drs_SecretFilter.process_chunk.<locals>.__annotate__  s$     	I 	I'"<"< 	I 	Ir   c                 \   < SP                  V P                  4      pSP                  V4      # r   )get_lDAPDisplayName_by_attidr   $get_searchFlags_from_lDAPDisplayName)rL  	attr_namer   s   & r   get_searchFlags7drs_SecretFilter.process_chunk.<locals>.get_searchFlags  s(    ::4::FI==iHHr   c                D    V ^8  d   QhR\         P                  R\        /# rl  )r   rm  r   )r   s   "r   r   rn    s$     	I 	I'"<"< 	I 	Ir   c                 >   < S! V 4      \         P                  ,          # r   )r   SEARCH_FLAG_CONFIDENTIAL)rL  rs  s   &r   is_confidential7drs_SecretFilter.process_chunk.<locals>.is_confidential  s    "4(4+H+HHHr   TNlittle)	byteorderz	Warning: z is a required attribute of u$    — not filtering with --no-secretsF)r   r   r   rD  rE  r   r   DRSUAPI_ATTID_objectClassrH  
num_values#get_lDAPDisplayName_by_governsID_idr}   
from_bytesrI  rJ  %get_must_contain_from_lDAPDisplayNameobject_classes_to_filter_outr   r  filterrp  r   r   r   )r   r   r   r   r   r   r   r   rx  prev_objobjfirstobject_classmust_containrL  rr  rs  s   &f&&&&&&        @r   r   drs_SecretFilter.process_chunk  s   	I 	I	I 	I oL5L

00;;JJ'"C"CC111#(#L#L NN11!499X ' $L
 $)#N#N$$L  < @@@oo,/)+.(  A% 

0H0H0S0ST!>>tzzJ	,#I;.J<. Y> ?
 12DNN- U H//CE 			u6cWr   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   drs_SecretFilter.__annotate__+  rZ  r   c                8    V P                   P                  V4      # r   r\  r   s   &&r   r   drs_SecretFilter.supports_ext+  r^  r   c                    < V ^8  d   QhRS[ /# r   r   )r   r&   s   "r   r   r  .  r`  r   c                8    V P                   P                  W4      # r   rb  r   s   &&&r   r   drs_SecretFilter.get_nc_changes.  rd  r   rh  N>   msKds-ProvRootKeymsTPM-InformationObjectmsFVE-RecoveryInformation)r   r   r    r!   r  r   r   r   r   r#   r$   r%   s   @r   rf  rf    s-     
$ 8Xt+ +8 8r   rf  r   )"samba.dcerpcr   r   r   	samba.netr   	samba.ndrr   sambar   r	   r
   rz   samba.dcerpc.drsuapir   r   r   r>  abcr   r   r-   r   r8   rG   r,   r   r   r   r   r   r1  r8  rf  r   r   r   <module>r     s   ( 1 0       
M M 
 '-9 -A@=6#4L#!L*
:w 
:H/ H0w( w(t&N &:81 :8zL8- L8r   