DonatShell
Server IP : 180.180.241.3  /  Your IP : 216.73.216.252
Web Server : Microsoft-IIS/7.5
System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586
User : IUSR ( 0)
PHP Version : 5.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Windows/SysWOW64/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /Windows/SysWOW64//azroles.dll
MZ@	!L!This program cannot be run in DOS mode.

$̏畈ƈƈƁƌƈƁƟƁƉƁ
ơƁ
ƒƁƉƁƉRichPELAL!	,|@@%@5DpHMd@ .text{*, `.data1@*0@.rsrcZ@@.reloc_p`D@BLpnL{&LLnL{oLrLLۈL3LLqLdLmsvcrt.dllntdll.dllUSER32.dllKERNEL32.dllole32.dllOLEAUT32.dllADVAPI32.dllpcwum.DLLAUTHZ.dllRPCRT4.dllNTDSAPI.dllODBC32.dll & !G$w!w|wHww1wFw@wFwwFwFwvwtHwDCw	wFw;AwwwNw6w~wfw$wAwYwx0wFw]FwH0wwEw.wqwFwAwwwEwvAw Fw^AwLwNDwCw$w2wCw,Cww:rm-m5mu5mRmmm~mmmYkm_mmB`mxmYmm(7wvw/wA#w=w8w1#ww`ww6wFwNw
wa8wGww|wwVw)wMw>wa>ww+Eww`www`wwIwŚwww<w3wM7ww&<wFwwuGwc3wEwdwwww%9wew;wwGwbwUwQ3www/ww='wbwdwuwCEwwTwww0@^@R@<R@@'@OoQopOoqLovOo?!Po(LojOo8No"OoLogPoZLoLo̪LoۚOoOo6ooEosoY>oFoBFo
ooo~fo'oo>o>oeo.2o1GoFooocoo]oHoܰoVowdwŻwZweTwwpwwwo?opoWo4oλooooo-oIo	o-oo
o'>ooaooQouooZoooJo.oqoRo)oEooo˪o^ooaoooooVooWojooonofoKoٿoW5oo,wєwYwwŚwgwe<wwIwuwRw`wwwwܥw@wwEMww6ww|wQw)w-w[xwhAw'wUwxwwwTwj,wLXr9WrAoYrXr"XrUrӆXr	XrUr<PVrRE%mE%E%?E%pE%E%E%6E%E%E%E%}E%:L$HdHXTypeLibSoftwareSYSTEMSECURITYSAMMimeHardwareInterfaceFileTypeComponent CategoriesCLSIDAppIDDeleteNoRemoveForceRemoveValBDMSbad allocation#FX@%T@%P@%L@%D@%,@%@%@%@%@%@%@%@%@%|@%t@%`@%P@%<@%,@%create database [%s]
alter database [%s] set recovery simple
drop database [%s]
SqlConnection::NeedsReConnect(): returned 0x%08X.
odbc code %i, State %S, Message: %S
FILEAA%%u.%u.%uMicrosoft SQL ServerSqlConnection::SetCurrentCatalog : Memory Allocation failed.
})?,({CALL {?=CALL SQLConnection::ReConnect(): m_pszDBName is NULL !
SqlConnection::Reconnect() : BindResult failed with 0x%08X.
SqlConnection::Reconnect() : BindParams failed with 0x%08X.
SqlConnection::Reconnect() : SQLAllocHandle failed with 0x%08X.
SQLConnection::ReConnect(): Database::SwitchDatabase returned 0x%08X.
SqlConnection::Reconnect() : Connect succeeded.
SqlConnection::Reconnect() : Connect failed with 0x%08X.
A%wA%E%DbServer::CreateDatabase(): ExecStatement(%S) failed with 0x%08X.
DbServer::CreateDatabase(): ::new failed with 0x%08X.킛jO0EUwsB	s
%Oqln{'Mk~hjI|Cmj`ŕJ BlOV^aMDě^NtI85.lJ6m㈫8LC
ŅӘ$E.}VESHx^m@kۦ5DXN6yjL<F慍
bA4]CM_/}`"HmF٤+ H!}^ERw_h]M'nS<(ADSo:=OKKm]O@Y'^q}J.^DAH[M̥̌%UPEz@ٙ%DXf1}dUZ
O+_իvsM;$}PjItHDMPsCpO@qOSH
ciB*y?NF[VH2H%e&0@:>2YWKio-\QKC<7̮w]:HpNܡMZ>X@%T@%P@%L@%D@%,@%@%@%-A%B%A%ؗA%A%A%@A%A%A%DA%A%A%GA%A%XA%A%ކA%A%܈A%A%A%ڊA%dA%A%ˊA%5A%uA%A%A%fA%UA%͈A%A%&A%A%φA%TA%A%A%A%A%߅A%ЅA%HA%	A%eA%A%A%A%qA%9A%A%A%A%EA%FA%A%A%A%IA%A%A%A%/A%LA%A%B%A%ؗA%A%A%A%A%VA%6A%bA%A%A%A%A%A%*A%SA%݇A%WA%A%A%A%A%A%'A%A%ۉA%A%A%A%·A%A%A%A%A%7A%sA%A%A%A%CA%4A%vA%
A%)A%%A%A%rA%cA%gA%̉A%RA%A%(A%tA%A%8A%B%%B%A%րB%
A%ؗA%>A%_A%A%A%A%$A%KA%MA%tA%A%A%A%A%7A%aA%A%GB%GB%HB%>HB%wHB%!IB%IB%IJB%JB%EKB%A%pA%A%KB%B%B%A%B%iB%B%9A%sA%KB%mLB%LB%rA%A%A%HB%vIB%
JB%JB%KB%KB%LB%LB%*MB%A%A%ħA%%A%A%ؗA%UA%vA%A%B%B%B%B%̜A%A%%A%XA%ؗA%A%A%)A%"A%|A%A%rA%TA%6A%ؗA%A%A%@A%A%A%DA%A%A%GA%A%XA%A%ކA%A%܈A%A%A%ڊA%dA%A%ˊA%5A%uA%A%A%fA%UA%͈A%A%&A%A%φA%TA%A%A%A%A%߅A%ЅA%HA%	A%eA%A%A%A%qA%9A%A%A%A%EA%FA%A%A%A%IA%A%A%A%/A%LA%cA%EA%'A%ؗA%A%A%A%A%VA%6A%bA%A%A%A%A%A%*A%SA%݇A%WA%A%A%A%A%A%'A%A%ۉA%A%A%A%·A%A%A%A%A%7A%sA%A%A%A%CA%4A%vA%
A%)A%%A%A%rA%cA%gA%̉A%RA%A%(A%tA%A%8A%B%%B%xA%DA%^A%ؗA%>A%_A%A%A%A%$A%KA%MA%tA%A%A%A%A%7A%aA%A%GB%GB%HB%>HB%wHB%!IB%IB%IJB%JB%EKB%A%pA%A%KB%B%B%A%B%iB%B%9A%sA%KB%mLB%LB%rA%A%A%HB%vIB%
JB%JB%KB%KB%LB%LB%*MB%A%A%A%A%ؗA%UA%vA%A%B%B%B%B%A%A%A%ؗA%A%A%)A%"A%|A%RegDeleteKeyWadvapi32.dllRegDeleteKeyExWAPI-MS-Win-Core-LocalRegistry-L1-1-0.dll$@%$@%$@%$@%%@%%@%%@%(%@%L%@%p%@%%@%%@%%@%%@%HKCRHKCUHKLMHKUHKPDHKDDHKCCHKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERSHKEY_PERFORMANCE_DATAHKEY_DYN_DATAHKEY_CURRENT_CONFIGD&@%T&@%}PjItHDFT&@%&@%&@%&@%킛jO0EUwsB	s
%Oqln&@%T&@%}^ERwF.tlb@E%@E%@E%A%^A%FtA%%A%@A%A%hA%%A%@A%ҩA%\A%%A%@A%A%ݪA%<A%LA%A%\A%A%A%A%kA%[A%FFAPPIDEA%bA%mA%A%A%wA%\Implemented Categories\Required CategoriesCLSID\FFA%%A%
A%A%^A%(@%FREGISTRYModule_RawModule%s leaves myGetLongProperty: return HRESULT value=0x%lx *plProp=%d
%s leaves myGetLongProperty: return HRESULT value=0x%lx plProp=NULL
%s calls myGetLongProperty: lPropId=%d
%s leaves mySetLongProperty: return HRESULT value=0x%lx
%s calls mySetLongProperty: lPropId=%d lProp=%d
%s leaves myGetBoolProperty: return HRESULT value=0x%lx *plProp=%d
%s leaves myGetBoolProperty: return HRESULT value=0x%lx plProp=NULL
%s calls myGetBoolProperty: lPropId=%d
%s leaves mySetBoolProperty: return HRESULT value=0x%lx
%s calls mySetBoolProperty: lPropId=%d fProp=%d
CAzAuthorizationStore::get_DomainTimeoutCAzAuthorizationStore::put_DomainTimeoutCAzAuthorizationStore::get_ScriptEngineTimeoutCAzAuthorizationStore::put_ScriptEngineTimeoutCAzAuthorizationStore::get_MaxScriptEnginesCAzAuthorizationStore::put_MaxScriptEnginesCAzAuthorizationStore::get_GenerateAuditsCAzAuthorizationStore::put_GenerateAuditsCAzAuthorizationStore::get_WritableLeave CAzAuthorizationStore::IsUpdateNeeded: return HRESULT value=0x%lx *pbIsUpdateNeeded=%d
Leave CAzAuthorizationStore::IsUpdateNeeded: return HRESULT value=0x%lx pbIsUpdateNeeded == NULL
Enter CAzAuthorizationStore::IsUpdateNeeded
CAzAuthorizationStore::put_ApplyStoreSaclCAzAuthorizationStore::get_ApplyStoreSaclCAzApplication::get_GenerateAuditsCAzApplication::put_GenerateAuditsCAzApplication::get_BizruleEnabledCAzApplication::get_ApplyStoreSaclCAzApplication::put_ApplyStoreSaclCAzApplication::get_WritableA%E%jA%Leave CAzApplication::InitializeClientContextFromToken2: return HRESULT value=0x%lx
+ H!Enter CAzApplication::InitializeClientContextFromToken2 ulTokenHandleLowPart=%d ulTokenHandleHighPart=%d
CAzOperation::get_WritableCAzOperation::get_OperationIDCAzOperation::put_OperationIDLeave CAzOperations::_Init: return HRESULT value=0x%lx
Enter CAzOperations::_Init hOwnerApp=%d
CAzTask::get_IsRoleDefinitionCAzTask::put_IsRoleDefinitionget_WritableLeave CAzTasks::_Init: return HRESULT value=0x%lx
Enter CAzTasks::_Init
CAzScope::get_WritableCAzScope::get_CanBeDelegatedCAzScope::get_BizrulesWritableCAzApplicationGroup::get_TypeCAzApplicationGroup::put_TypeCAzApplicationGroup::get_WritableCAzRole::get_Writable":B%Leave CAzRoleDefinitions::_Init: return HRESULT value=0x%lx
Enter CAzRoleDefinitions::_Init
MPsCpO@qOSH
ciB*ysM;$%UPEz@$E.}VE_h]M'nS<(ADSo:=:B%%A%B%ؗA%{B%B%×B%`C%#ZC%KC%%aC%
UC%=C%B%2@%T&@%:B%%A%B%ؗA%ؗB%B% B%[C%[C%LC%?bC%UC%=C% B%2@%T&@%%s leaves myAzDeleteObject: return HRESULT value=0x%lx
%s calls myAzDeleteObject bstrObjectName=%s
%s leaves myAzCloseObject: return HRESULT value=0x%lx
%s calls myAzCloseObject bstrObjectName=%s
%s leaves myAzNextObject: return HRESULT value=0x%lx
%s leaves myAzNextObject: no more results.
Enumeration completed.
%s calls myAzNextObject
%s leaves myGetBstrProperty: return HRESULT value=0x%lx *pbstrProp=%s
%s leaves myGetBstrProperty: return HRESULT value=0x%lx pbstrProp=NULL
%s calls myGetBstrProperty: lPropId=%d
%s leaves mySetBstrProperty: return HRESULT value=0x%lx
%s calls mySetBstrProperty: lPropId=%d bstrProp=%s
CAzPrincipalLocator destructor called.Leave CAzPrincipalLocator::get_NameResolver: return HRESULT value=0x%lx
Enter CAzPrincipalLocator::get_NameResolver
Leave CAzPrincipalLocator::get_ObjectPicker: return HRESULT value=0x%lx
Enter CAzPrincipalLocator::get_ObjectPicker
CAzAuthorizationStore::get_DescriptionCAzAuthorizationStore::put_DescriptionCAzAuthorizationStore::get_ApplicationDataCAzAuthorizationStore::put_ApplicationDataCAzAuthorizationStore::get_TargetMachineLeave CAzAuthorizationStore::Initialize: return HRESULT value=0x%lx
Enter CAzAuthorizationStore::Initialize: lFlag=0x%lx bstrPolicyURL=[%s]
Leave CAzAuthorizationStore::UpdateCache: return HRESULT value=0x%lx
Enter CAzAuthorizationStore::UpdateCache
Leave CAzAuthorizationStore::Delete: return HRESULT value=0x%lx
Enter CAzAuthorizationStore::Delete
CAzAuthorizationStore::CloseApplicationCAzAuthorizationStore::DeleteApplicationCAzAuthorizationStore::DeleteApplicationGroupLeave CAzAuthorizationStore::Submit: return HRESULT value=0x%lx
Enter CAzAuthorizationStore::Submit lFlags=%d
Leave CAzApplication::_Init: return HRESULT value=0x%lx
Enter CAzApplication::_Init hHandle=0x%lx
CAzApplication::get_DescriptionCAzApplication::put_DescriptionCAzApplication::get_NameCAzApplication::put_NameCAzApplication::get_ApplicationDataCAzApplication::put_ApplicationDataCAzApplication::get_AuthzInterfaceClsidCAzApplication::put_AuthzInterfaceClsidCAzApplication::get_VersionCAzApplication::put_VersionCAzApplication::DeleteScopeCAzApplication::DeleteOperationCAzApplication::DeleteTaskCAzApplication::DeleteApplicationGroupCAzApplication::DeleteRoleLeave CAzApplication::Submit: return HRESULT value=0x%lx
Enter CAzApplication::Submit lFlags=%d
Leave CAzApplication::ScopeExists: return HRESULT value=0x%lx
Bad Param: %d , %d
Enter CAzApplication::ScopeExists bstrScopeName=%s
Leave CAzApplication::DeleteScope2: return HRESULT value=0x%lx
Enter CAzApplication::DeleteScope2 bstrScopeName=%s
Leave CAzApplication::DeleteRoleAssignment: return HRESULT value=0x%lx
Enter CAzApplication::DeleteRoleAssignment bstrRoleAssignmentName=%s
Leave CAzOperation::_Init: return HRESULT value=0x%lx
Enter: CAzOperation::_Init hOwnerApp=%d hHandle=%d.
CAzOperation::get_DescriptionCAzOperation::put_DescriptionCAzOperation::get_NameCAzOperation::put_NameCAzOperation::get_ApplicationDataCAzOperation::put_ApplicationDataLeave CAzOperation::Submit: return HRESULT value=0x%lx
Enter CAzOperation::Submit lFlags=%d
Leave CAzTask::_Init: return HRESULT value=0x%lx
Enter CAzTask::_Init hOwnerApp=%d hHandle=%d
CAzTask::get_DescriptionCAzTask::put_DescriptionCAzTask::get_NameCAzTask::put_NameCAzTask::get_ApplicationDataCAzTask::put_ApplicationDataCAzTask::get_BizRuleCAzTask::put_BizRuleCAzTask::get_BizRuleLanguageCAzTask::put_BizRuleLanguageCAzTask::get_BizRuleImportedPathCAzTask::put_BizRuleImportedPathLeave CAzTask::Submit: return HRESULT value=0x%lx
Enter CAzTask::Submit lFlags=%d
Leave CAzScope::_Init: return HRESULT value=0x%lx
Enter CAzScope::_Init
CAzScope::get_DescriptionCAzScope::put_DescriptionCAzScope::get_NameCAzScope::put_NameCAzScope::get_ApplicationDataCAzScope::put_ApplicationDataCAzScope::DeleteApplicationGroupCAzScope::DeleteRoleCAzScope::DeleteTaskLeave CAzScope::Submit: return HRESULT value=0x%lx
Enter CAzScope::Submit: lFlags=%d
Leave CAzScope::DeleteRoleAssignment: return HRESULT value=0x%lx
Enter CAzScope::DeleteRoleAssignment bstrRoleAssignmentName=%s
Leave CAzApplicationGroup::_Init: return HRESULT value=0x%lx
Enter CAzApplicationGroup::_Init
CAzApplicationGroup::get_LdapQueryCAzApplicationGroup::put_LdapQueryCAzApplicationGroup::get_DescriptionCAzApplicationGroup::put_DescriptionCAzApplicationGroup::get_NameCAzApplicationGroup::put_NameCAzApplicationGroup::get_BizRuleCAzApplicationGroup::put_BizRuleCAzApplicationGroup::get_BizRuleLanguageCAzApplicationGroup::put_BizRuleLanguageCAzApplicationGroup::get_BizRuleImportedPathCAzApplicationGroup::put_BizRuleImportedPathLeave CAzApplicationGroup::Submit: return HRESULT value=0x%lx
Enter CAzApplicationGroup::Submit: lFlags=%d
Leave CAzRole::_Init: return HRESULT value=0x%lx
Enter CAzRole::_Init
CAzRole::get_DescriptionCAzRole::put_DescriptionCAzRole::get_NameCAzRole::put_NameCAzRole::get_ApplicationDataCAzRole::put_ApplicationDataLeave CAzRole::Submit: return HRESULT value=0x%lx
Enter CAzRole::Submit lFlags=%d
Leave CAzClientContext::AccessCheck2: return HRESULT value=0x%lx *plResult=%d
Leave CAzClientContext::AccessCheck2: return HRESULT value=0x%lx plResult=NULL
CAzClientContext::AccessCheck2 receives NULL plResult parameter.
Enter CAzClientContext::AccessCheck2 bstrObjectName=%s, bstrScopeName=%s lOperation=%d
Leave CAzClientContext::GetOperations: return HRESULT value=0x%lx
Enter CAzClientContext::GetOperations bstrScopeName=%s
Leave CAzClientContext::GetTasks: return HRESULT value=0x%lx
Enter CAzClientContext::GetTasks bstrScopeName=%s
Leave CAzClientContext::IsInRoleAssignment: return HRESULT value=0x%lx *pbIsInRole=%d
Leave CAzClientContext::IsInRoleAssignment: return HRESULT value=0x%lx pbIsInRole=NULL
Enter CAzClientContext::IsInRoleAssignment bstrScopeName=%s bstrRoleName=%s
Leave CAzClientContext::GetRoles: return HRESULT value=0x%lx
Enter CAzClientContext::GetRoles bstrScopeName=%s
Leave CAzClientContext::GetBusinessRuleString: return HRESULT value=0x%lx pbstrBusinessRuleString=NULL
Leave CAzClientContext::GetBusinessRuleString: return HRESULT value=0x%lx *pbstrBusinessRuleString=%s
Enter CAzClientContext::GetBusinessRuleString
CAzClientContext::get_UserDnCAzClientContext::get_UserSamCompatCAzClientContext::get_UserDisplayCAzClientContext::get_UserGuidCAzClientContext::get_UserCanonicalCAzClientContext::get_UserUpnCAzClientContext::get_UserDnsSamCompatCAzClientContext::get_RoleForAccessCheckCAzClientContext::put_RoleForAccessCheckLeave CAzClientContext::AddApplicationGroups: return HRESULT value=0x%lx
Enter CAzClientContext::AddApplicationGroups
Leave CAzClientContext::AddRoles: return HRESULT value=0x%lx
Enter CAzClientContext::AddRoles bstrScopeName=%s
Leave CAzClientContext::AddStringSids: return HRESULT value=0x%lx
Enter CAzClientContext::AddStringSids
CAzClientContext::get_LDAPQueryDNCAzClientContext::put_LDAPQueryDNLeave CAzClientContext::_Init: return HRESULT value=0x%lx
Enter CAzClientContext::_Init
Leave CAzClientContext::GetGroups: return HRESULT value=0x%lx
Enter CAzClientContext::GetGroups bstrScopeName=%s
Leave CAzClientContext::get_Sids: return HRESULT value=0x%lx
Enter CAzClientContext::get_Sids.
[other value],[I2=%d],[I4=%d],<NULL>[BSTR=%s],Count=%d vt=VT_ARRAY,elementType=VT_I2 vt=VT_ARRAY,elementType=VT_I4 vt=VT_ARRAY,elementType=VT_BSTR vt=VT_ARRAY,elementType=VT_DISPATCH vt=VT_ARRAY,elementType=VT_VARIANT vt=VT_ARRAY,elementType=[other value][other value]vt=VT_DISPATCHvt=VT_BSTR,%svt=VT_I2,%dvt=VT_I4,%dvt=VT_EMPTY%s%s\%sCAzAuthorizationStore destructor called.
CAzApplication destructor calledLeave CAzApplication::OpenScope2: return HRESULT value=0x%lx
Enter CAzApplication::OpenScope2 bstrScopeName=%s
Leave CAzApplication::CreateScope2: return HRESULT value=0x%lx
Enter CAzApplication::CreateScope2 bstrScopeName=%s
Leave CAzApplication::CreateRoleDefinition: return HRESULT value=0x%lx
Enter CAzApplication::CreateRoleDefinition bstrRoleDefinitionName=%s
Leave CAzApplication::OpenRoleDefinition: return HRESULT value=0x%lx
Enter CAzApplication::OpenRoleDefinition bstrRoleDefinitionName=%s
Leave CAzApplication::DeleteRoleDefinition: return HRESULT value=0x%lx
Enter CAzApplication::DeleteRoleDefinition bstrRoleDefinitionName=%s
Leave CAzApplication::CreateRoleAssignment: return HRESULT value=0x%lx
Enter CAzApplication::CreateRoleAssignment bstrRoleAssignmentName=%s
Leave CAzApplication::OpenRoleAssignment: return HRESULT value=0x%lx
Enter CAzApplication::OpenRoleAssignment bstrRoleAssignmentName=%s
CAzOperation destructor called.
CAzTask destructor called.
Enter CAzScope destructor called.
Leave CAzScope::CreateRoleDefinition: return HRESULT value=0x%lx
CAzScope::CreateRoleDefinition: NULL IAzRoleDefinition parameter.Enter CAzScope::CreateRoleDefinition bstrRoleDefinitionName=%s
Leave CAzScope::OpenRoleDefinition: return HRESULT value=0x%lx
CAzScope::OpenRoleDefinition: NULL IAzRoleDefinition parameter.Enter CAzScope::OpenRoleDefinition bstrRoleDefinitionName=%s
Leave CAzScope::DeleteRoleDefinition: return HRESULT value=0x%lx
Enter CAzScope::DeleteRoleDefinition bstrRoleDefinitionName=%s
Leave CAzScope::CreateRoleAssignment: return HRESULT value=0x%lx
Enter CAzScope::CreateRoleAssignment bstrRoleAssignmentName=%s
Leave CAzScope::OpenRoleAssignment: return HRESULT value=0x%lx
Enter CAzScope::OpenRoleAssignment bstrRoleAssignmentName=%s
CAzApplicationGroup destructor called.
CAzRole destructor called
CAzClientContext destructor called.
Leave CAzClientContext::get_BizRuleParameters: return HRESULT value=0x%lx
Enter get_BizRuleParameters::_Init
Leave CAzClientContext::get_BizRuleInterfaces: return HRESULT value=0x%lx
Enter get_BizRuleInterfaces::_Init
%s leaves myAzGetProperty: return HRESULT value=0x%lx pvarProp=NULL
%s leaves myAzGetProperty: return HRESULT value=0x%lx pvarProp=%s
Can't DS bind. Will just return non-UPN names
%s calls myAzGetProperty: lPropId=%d
%s calls %s: lPropId=%d pvarProp=NULL
%s calls %s: lPropId=%d pvarProp=%s
%s leaves myAzSetProperty: return HRESULT value=0x%lx
myAzSetProperty%s leaves myAzAddOrDeletePropertyItem: return HRESULT value=0x%lx
myAzAddOrDeletePropertyItemCAzAuthorizationStore constructor called.
CAzAuthorizationStore::GetPropertyCAzAuthorizationStore::SetPropertyCAzAuthorizationStore::AddPropertyItemCAzAuthorizationStore::DeletePropertyItemCAzAuthorizationStore::get_PolicyAdministratorsCAzAuthorizationStore::get_PolicyAdministratorsNameCAzAuthorizationStore::get_PolicyReadersCAzAuthorizationStore::get_PolicyReadersNameCAzAuthorizationStore::AddPolicyAdministratorCAzAuthorizationStore::AddPolicyAdministratorNameCAzAuthorizationStore::DeletePolicyAdministratorCAzAuthorizationStore::DeletePolicyAdministratorNameCAzAuthorizationStore::AddPolicyReaderCAzAuthorizationStore::AddPolicyReaderNameCAzAuthorizationStore::DeletePolicyReaderCAzAuthorizationStore::DeletePolicyReaderNameCAzAuthorizationStore::get_DelegatedPolicyUsersCAzAuthorizationStore::get_DelegatedPolicyUsersNameCAzAuthorizationStore::AddDelegatedPolicyUserCAzAuthorizationStore::AddDelegatedPolicyUserNameCAzAuthorizationStore::DeleteDelegatedPolicyUserCAzAuthorizationStore::DeleteDelegatedPolicyUserNameCAzApplication constructor calledCAzApplication::GetPropertyCAzApplication::SetPropertyCAzApplication::get_PolicyAdministratorsCAzApplication::get_PolicyAdministratorsNameCAzApplication::get_PolicyReadersCAzApplication::get_PolicyReadersNameCAzApplication::AddPolicyAdministratorCAzApplication::AddPolicyAdministratorNameCAzApplication::DeletePolicyAdministratorCAzApplication::DeletePolicyAdministratorNameCAzApplication::AddPolicyReaderCAzApplication::AddPolicyReaderNameCAzApplication::DeletePolicyReaderCAzApplication::DeletePolicyReaderNameCAzApplication::AddPropertyItemCAzApplication::DeletePropertyItemget_DelegatedPolicyUsersget_DelegatedPolicyUsersNameCAzApplication::AddDelegatedPolicyUserCAzApplication::AddDelegatedPolicyUserNameCAzApplication::DeleteDelegatedPolicyUserCAzApplication::DeleteDelegatedPolicyUserNameCAzOperation constructor called.
CAzOperation::GetPropertyCAzOperation::SetPropertyCAzTask constructor called.
CAzTask::get_OperationsCAzTask::get_TasksCAzTask::AddOperationCAzTask::DeleteOperationCAzTask::AddTaskCAzTask::DeleteTaskCAzTask::GetPropertyCAzTask::SetPropertyCAzTask::AddPropertyItemCAzTask::DeletePropertyItemEnter CAzScope constructor called.
CAzScope::GetPropertyCAzScope::AddPropertyItemCAzScope::DeletePropertyItemCAzScope::get_PolicyAdministratorsCAzScope::get_PolicyAdministratorsNameCAzScope::get_PolicyReadersCAzScope::get_PolicyReadersNameCAzScope::AddPolicyAdministratorCAzScope::AddPolicyAdministratorNameCAzScope::DeletePolicyAdministratorCAzScope::DeletePolicyAdministratorNameCAzScope::AddPolicyReaderCAzScope::AddPolicyReaderNameCAzScope::DeletePolicyReaderCAzScope::DeletePolicyReaderNameCAzScope::SetPropertyCAzApplicationGroup constructor called.
CAzApplicationGroup::get_AppMembersCAzApplicationGroup::get_AppNonMembersCAzApplicationGroup::get_MembersCAzApplicationGroup::get_MembersNameCAzApplicationGroup::get_NonMembersCAzApplicationGroup::get_NonMembersNameCAzApplicationGroup::AddAppMemberCAzApplicationGroup::DeleteAppMemberCAzApplicationGroup::AddAppNonMemberCAzApplicationGroup::DeleteAppNonMemberCAzApplicationGroup::AddMemberCAzApplicationGroup::DeleteMemberCAzApplicationGroup::AddMemberNameCAzApplicationGroup::DeleteMemberNameCAzApplicationGroup::AddNonMemberCAzApplicationGroup::DeleteNonMemberCAzApplicationGroup::AddNonMemberNameCAzApplicationGroup::DeleteNonMemberNameCAzApplicationGroup::GetPropertyCAzApplicationGroup::SetPropertyCAzApplicationGroup::AddPropertyItemCAzApplicationGroup::DeletePropertyItemCAzRole constructor called
CAzRole::get_AppMembersCAzRole::get_MembersCAzRole::get_MembersNameCAzRole::get_OperationsCAzRole::get_TasksCAzRole::AddAppMemberCAzRole::DeleteAppMemberCAzRole::AddTaskCAzRole::DeleteTaskCAzRole::AddOperationCAzRole::DeleteOperationCAzRole::AddMemberCAzRole::DeleteMemberCAzRole::AddMemberNameCAzRole::DeleteMemberNameCAzRole::GetPropertyCAzRole::SetPropertyCAzRole::AddPropertyItemCAzRole::DeletePropertyItemCAzClientContext constructor called.
Leave CAzClientContext::AccessCheck: return HRESULT value=0x%lx *pvarResults=NULL
Leave CAzClientContext::AccessCheck: return HRESULT value=0x%lx *pvarResults=%s
Enter CAzClientContext::AccessCheck bstrObjectName=%s, bstrScopeNames=%s varOperations=%s
Leave CAzClientContext::GetAssignedScopesPage: return HRESULT value=0x%lx pvarScopeNames=NULL
Leave CAzClientContext::GetAssignedScopesPage: return HRESULT value=0x%lx *pvarScopeNames=%s
Enter CAzClientContext::GetAssignedScopesPage lOptions=%d PageSize=%d
CAzClientContext::GetPropertyvB%B%tB%ؗA%B%B%,B%:uB%tB%JtB%uB%YtB%tB%+uB%uB%tB%uB%1sB%sB%^sB%sB%|sB%;B%\B%MB%B%,B%>B%B%B%B%0B%]B%,tB%NB%B%B%tB%|B%B%B%uB%B%B%B%tB%B%MB%B%uB%>B%WB%KB%uB% B%B%B%mB%B%B%B%҈B%/B%ÈB%B%B%HB%B%OsB%B%{A%+B%,B%A%.B%g-B%9.B%/B%B%
0B%0B%A%AA%A%vB%B%wtB%ؗA%B%B%ϒB%
uB%uB%uB%uB%tB%htB%tB%guB%tB%IuB%"sB%sB%@sB%sB%msB%xB%?B%0B%|B%iB%!B%JB%ZB%B%B%B%uB%B%?B%zB%tB%B%B%B%vuB%B%B%\B%;tB%B%B%{B%XuB%B%vB%B%tB%B%B%B%B%lB%B%B%B%B%B%B%B%gB%B%eA%^B%DvB%րB%sB%ؗA%*B%KB%rB%A%FA%A%A%nA%A%A%A%A%?A%A%A%`A%A%A%MB%MB%NB%NB%oOB%OB%oPB%PB%cB%B%B%A%6B%B%B%A%	B%\B%B%A%B%/B%oB%@A%B%B%BB%{A%B%oQB%QB%A%B%QB%RB%SB%B%mNB%OB%OB%/PB%PB%/QB%9RB%RB%OSB%`vB%0u@%@u@%T&@%Pu@%{'Mk~hjI|Cmj`^q}J.?xB%I~B%cwB%ؗA%dB%B%B%wB%wB%vB%vB%wB%TwB%B%B%B%-B%wB%rwB%B%jB%[B%B%B%1B%B%ņB%vB%9B%hB%LB%IB%wB%B%]B%+B%uB%B%
B%B%B%B%3B%_B%B%B%wB%o}B%vB%ؗA%B%(B%OB%]B%B%A%A%
B%
B%[B%/\B%\B%4]B%B%4B%]B%^B%Z^B%^B%^B%1_B%_B%!`B%A%`B%aB%JaB%aB%B%m_B%_B%]`B%`B%\B%]B%xB%v@%T&@%v@%DXN6y?NF[VyB%I~B%yB%ؗA%B%B%B%UyB%xB%
yB%dyB%7yB%(yB%xB%xB%{xB%wB%B%FyB%=B%yB%o}B%xB%ؗA%AB%bB%B%UB%~B%B%,B%B%B%/A%[A%A%SB%TB%B%yB%w@%T&@%w@%OV^aMDě^Nt^DAH[M̌}B%B%{B%ؗA%B%֔B%B%_|B%B{B%o{B%`{B%{B%{B%|B%{B%~{B%n|B%${B%2|B%8zB%GzB%B% B%OB%B%ՅB%@B%ezB%B%B%B%B%A|B%B%B%B%B%|B%B%zB%ؗA%XB%yB%B%#|B%zB%3{B%{B%{B%{B%{B%{B%Q{B%P|B%zB%{B%tzB%)zB%ӇB%B%ߊB%ćB%B%ЊB%VzB%:B%B%^B%B%|B%B%|B%րB%zB%ؗA%B%B%CB%B%B%JB%sB%B%B%@B%lB%B%B%B%B%A%A%zTB%TB%(UB%dUB%UB%UB%HA%VB%RVB%VB%VB%HB%|B%y@%y@%T&@%y@%.lJ6mH2H%e&ٙ%DXfB%I~B%+~B%ؗA%B%˕B%B%g~B%}B%}B%}B%
~B%:~B%`}B%B%B%B%<B%B%ԆB%B%B%XB%B%B%!B%B%~B%B%/B%B%v~B%B%mB%kB%~B%X~B%Q}B%B}B%ƅB%B%‰B%yB%B%lB%CB%3B%3B%4B%B%5B%6B%	B%~B%o}B%}B%ؗA%MB%nB%B%bB%B%B%B%B%B%A%>WB%b[B%xWB%WB%WB%XB%JYB%YB%VZB%ZB%bB%B%B%*B%8B%B%B%fB%mB%B%B%B%B%aA%A%EXB%XB%YB%ZB%ZB%[B%~B%T&@%2@%{@%@Y'B%I~B%B%ؗA%B%?B%fB%B%B%B%B%B%B%B%=B%B%B%քB%B%B%"B%CB%*B%YB%{B%B%B%B%.B%щB%B%B%fB%DŽB%B%|B%B%XB%QB%o}B%RB%ؗA%B%B%	B%VB%B%B%-B%B%B%cB%cB%&dB%bdB%dB% eB%eB%eB%:A%ofB%fB%aB%RbB%cB%WcB%fB%gB%B%eB%3fB%bB%mB%4}@%T&@%D}@%
bA4]C1}dUZ
O+_իvB%B%RB%ؗA%B%B%7B%B%DB%B%CB%pB%bB%ʂB%B%SB%zB%B%B%B%kB%B%B%ˁB%aB%B%B%B%sB%}B%8B%9B%B%B%B%B%B%ؗA%B%B%ژB%B%B%ځB%B%%B%B%B%qB%قB%NB%4B%B%B%oB%IB%B%B%B%B%MB%րB%B%ؗA%5B%VB%}B%gB%=B%B%3B%_B%B%B%B%,B%|rB%B%XB%B%iB%~@%H/@%T&@%~@%HmF٤OKKm]OCAzPrincipalLocator::CAzPrincipalLocator RegOpenKeyEx failed.CAzPrincipalLocator::CAzPrincipalLocator, registered object picker doesn't implement IAzNameResolverCAzPrincipalLocator::CAzPrincipalLocator, registered object picker doesn't implement IAzObjectPickerCAzPrincipalLocator::CAzPrincipalLocator, failed to query value for ObjectPicker CLSIDSoftware\Microsoft\AzMan\ObjectPickerCAzPrincipalLocator constructor called.B%ڍB%B%Leave CAzRole::get_Scope: return HRESULT value=0x%lx
Enter CAzRole::get_Scope
}B%ڍB%B%ۜB%ڍB%B%invalid map/set<T> iteratormap/set<T> too longObject with the same name exist%09uLeave CAzApplications::_Init: return HRESULT value=0x%lx
CAzApplications::_InitEnter CAzApplications::_Init
CAzOperations::_InitEnter CAzOperations::_Init hOwnerApp=%d hParent=%d
CAzTasks::_InitLeave CAzScopes::_Init: return HRESULT value=0x%lx
CAzScopes::_InitEnter CAzScopes::_Init
Leave CAzApplicationGroups::_Init: return HRESULT value=0x%lx
CAzApplicationGroups::_InitEnter CAzApplicationGroups::_Init
Leave CAzRoles::_Init: return HRESULT value=0x%lx
CAzRoles::_InitEnter CAzRoles::_Init
CAzRoleDefinitions::_InitLeave CAzRoleAssignments::_Init: return HRESULT value=0x%lx
CAzRoleAssignments::_InitEnter CAzRoleAssignments::_Init
@E%@E%@E%@E%@E%@E%@E%B%AB%^B%B%pB%òB%B%B%yB%ʱB%ݯB%bA%CAzRoleAssignments constructor called.
tB%pB%B%ؗA%B%B%صB%B%AB%^B%ɼB%<@%T&@%ŕJ Bl2B%pB%B%ؗA%NB%oB%B%B%AB%^B%B%@%T&@%jL<FB%pB%B%ؗA%B%-B%TB%B%AB%^B%B%@%T&@%I85B%pB%B%ؗA%ʷB%B%B%B%AB%^B%;B%\@%T&@%8LC
ŅӘlB%pB%B%ؗA%B%B%иB%B%AB%^B%aB%2@%T&@%^B%pB%B%ؗA%zB%B%¹B%B%AB%^B%B%2@%T&@%lB%pB%B%ؗA%B%B%кB%B%AB%^B%B%\@%T&@%SHx^m@kۦ5*B%pB%B%ؗA%FB%gB%B%B%AB%^B%B%@%T&@%M_/}`"%s leaves myAzNewObject: return HRESULT value=0x%lx
%s calls myAzNewObject enumObject=%d
%s leaves myAzCreateObject: return HRESULT value=0x%lx
%s calls myAzCreateObject bstrObjectName=%s
%s leave myAzOpenObject: return HRESULT value=0x%lx
%s calls myAzOpenObject bstrObjectName=%s
CAzAuthorizationStore::get_ApplicationsCAzAuthorizationStore::OpenApplicationCAzAuthorizationStore::CreateApplicationCAzAuthorizationStore::get_ApplicationGroupsCAzAuthorizationStore::CreateApplicationGroupCAzAuthorizationStore::OpenApplicationGroupCAzAuthorizationStore::OpenApplication2CAzAuthorizationStore::CreateApplication2CAzApplication::get_ScopesCAzApplication::OpenScopeCAzApplication::CreateScopeCAzApplication::get_OperationsCAzApplication::OpenOperationCAzApplication::CreateOperationCAzApplication::get_TasksCAzApplication::OpenTaskCAzApplication::CreateTaskCAzApplication::get_ApplicationGroupsCAzApplication::OpenApplicationGroupCAzApplication::CreateApplicationGroupCAzApplication::get_RolesCAzApplication::OpenRoleCAzApplication::CreateRoleLeave CAzApplication::InitializeClientContextFromToken: return HRESULT value=0x%lx
CAzApplication::InitializeClientContextFromTokenEnter CAzApplication::InitializeClientContextFromToken ullTokenHandle=%d
Enter CAzApplication::InitializeClientContextFromToken ullTokenHandle=0x%8lx%8lx
Leave CAzApplication::InitializeClientContextFromName: return HRESULT value=0x%lx
CAzApplication::InitializeClientContextFromNameEnter CAzApplication::InitializeClientContextFromName ClientName=%s DomainName=%s
Leave CAzApplication::InitializeClientContextFromStringSid: return HRESULT value=0x%lx
CAzApplication::InitializeClientContextFromStringSidEnter CAzApplication::InitializeClientContextFromStringSid SidString=%s
Leave CAzApplication::get_RoleDefinitions: return HRESULT value=0x%lx
CAzApplication::get_RoleDefinitionsEnter CAzApplication::get_RoleDefinitions
Leave CAzApplication::get_RoleAssignments: return HRESULT value=0x%lx
CAzApplication::get_RoleAssignmentsEnter CAzApplication::get_RoleAssignments
Leave CAzApplication::InitializeClientContext2: return HRESULT value=0x%lx
CAzApplication::InitializeClientContext2Enter CAzApplication::InitializeClientContext2 IdentifyingString=%s
Leave CAzOperations::_AddOperation: return HRESULT value=0x%lx
CAzOperations::_AddOperationEnter CAzOperations::_AddOperation pOperation=%d
Leave CAzOperations::_AddOperationFromTaskObj: return HRESULT value=0x%lx
Enter CAzOperations::_AddOperationFromTaskObj hParent=%d
Leave CAzTasks::_AddTask: return HRESULT value=0x%lx
CAzTasks::_AddTaskEnter CAzTasks::_AddTask
Leave CAzTasks::_AddTaskFrom: return HRESULT value=0x%lx
Enter CAzTasks::_AddTaskFrom
CAzScope::get_ApplicationGroupsCAzScope::OpenApplicationGroupCAzScope::CreateApplicationGroupLeave get_Roles: return HRESULT value=0x%lx
CAzScope::get_RolesEnter CAzScope::get_Roles
Leave CAzScope::OpenRole: return HRESULT value=0x%lx
CAzScope::OpenRoleEnter CAzScope::OpenRole: bstrRoleName=%s
Leave CAzScope::CreateRole: return HRESULT value=0x%lx
CAzScope::CreateRoleEnter CAzScope::CreateRole: bstrRoleName=%s
CAzScope::get_TasksCAzScope::OpenTaskCAzScope::CreateTaskLeave CAzScope::get_RoleDefinitions: return HRESULT value=0x%lx
CAzScope::get_RoleDefinitionsEnter CAzScope::get_RoleDefinitions
Leave CAzScope::get_RoleAssignments: return HRESULT value=0x%lx
CAzScope::get_RoleAssignmentsEnter CAzScope::get_RoleAssignments
Leave CAzRoleAssignments::GetRoleAssigmentObj: return HRESULT value=0x%lx
CAzRoleAssignments::GetRoleAssigmentObjEnter CAzRoleAssignments::GetRoleAssigmentObj bstrScopeName=%s ScopeFlags=%d
Leave CAzRoleDefinitions::CollectTaskAsRoleDefinition: return HRESULT value=0x%lx
CAzRoleDefinitions::CollectTaskAsRoleDefinitionEnter CAzRoleDefinitions::CollectTaskAsRoleDefinition
Leave CAzRoleDefinitions::CollectNamedRoleDefinitions: return HRESULT value=0x%lx
AZ_PROP_ROLE_TASKS returns bogus task object %s
Enter CAzRoleDefinitions::CollectNamedRoleDefinitions
Leave CAzTask::AddRoleDefinition: return HRESULT value=0x%lx
CAzTask::AddRoleDefinitionEnter CAzTask::AddRoleDefinition bstrRoleDefinition=%s
Leave CAzTask::DeleteRoleDefinition: return HRESULT value=0x%lx
CAzTask::DeleteRoleDefinitionEnter CAzTask::DeleteRoleDefinition bstrRoleDefinition=%s
Leave CAzTask::get_RoleDefinitions: return HRESULT value=0x%lx
CAzTask::get_RoleDefinitionsEnter CAzTask::get_RoleDefinitions
CAzRole::AddRoleDefinitionCAzRole::DeleteRoleDefinitionLeave CAzRole::get_RoleDefinitions: return HRESULT value=0x%lx
CAzRole::get_RoleDefinitionsEnter CAzRole::get_RoleDefinitions
Leave CAzRoleAssignments::_InitRolesForGivenObj: return HRESULT value=0x%lx
Enter CAzRoleAssignments::_InitRolesForGivenObj: bstrScopeName=%s bRecursive=%d
Leave CAzOperation::RoleAssignments: return HRESULT value=0x%lx
Enter CAzOperation::RoleAssignments bstrScopeName=%s bRecursive=%d
Leave CAzTask::RoleAssignments: return HRESULT value=0x%lx
Enter CAzTask::RoleAssignments bstrScopeName=%s
Leave CAzApplicationGroup::RoleAssignments: return HRESULT value=0x%lx
Enter CAzApplicationGroup::RoleAssignments: bstrScopeName=%s bRecusive=%d
CAzBizRuleContext::put_BusinessRuleResult: %ld
CAzBizRuleContext::put_BusinessRuleString: %ws
CAzBizRuleContext::get_BusinessRuleString: %ws
CAzBizRuleContext::GetParameter: %ls: Parameter not passed in.
CAzBizRuleContext::GetParameter: %ls
CAzBizRuleContext::SetAccessCheckContext
~CAzBizRuleContext
CAzBizRuleContext
UTILWSIDUseStrongLockingSYSTEM\CurrentControlSet\Control\LSA\AzRolesFlagsSoftware\Microsoft\AzMan\LoggingAzpAzStoreGetProperty: invalid prop id %ld
AzAuthorizationStoreDelete: Reserved != 0
AzAuthorizationStore in AzCloseHandle refAzCloseHandle: Reserved != 0
AzpAzStoreManagerSetProperty: domain timeout too small %ld
SetProperty: Object doesn't support dirty bit 0x%lx
AzpAzStoreManagerSetProperty: script engine timeout too small %ld
AzpAzStoreManagerSetProperty: max script engines too small %ld
IsRefreshFlags(_Flags) = TRUE
(_GenericObject->DirtyBits & _DirtyBit) = 0
IsNormalFlags(_Flags) = TRUE
AzpAzStoreManagerSetProperty: invalid prop id %ld
%02u/%02u/%02u %02u:%02u:%02u

Current System Time: Current User Name: 
AzMan log file
Process Name: AzManDebug_%d.log\Microsoft\AzMan\APPDATAS-1-3-4vector<T> too longAzpAddObjectToGuidMap: objects already in mapAzInitialize: Failed to Initialize Audit system: %ld
AzInitialize: Invalid flags 0x%lx
AzInitialize: Reserved != 0
AzApplicationGetProperty: invalid prop id %ld
AzpApplicationSetProperty: cannot convert CLSID %ws %ld
AzpApplicationSetProperty: invalid prop id %ld
AzApplicationClose: Cannot reload children on unload failure: %ld
AzApplicationClose: Cannot reference application %ws: %ld
AzApplicationClose: Failed to capture application name: %ld
SOFTWARE\Microsoft\AzMan\BizRuleEnabledApplications%s:%dPerfProviderName1C%x2C%<C%2C%MC%2C%3C%)3C%3C%X4C%s4C%_A%~CScriptEngine
Exception: %s: 0x%lx
IActiveScript::InterruptScriptThread()CScriptEngine::InterruptScript
Failed to SetScriptState(INITIALIZED): 0x%lx
IActiveScript::SetScriptState()IActiveScriptParse::Release()CScriptEngine::ResetToUninitialized
Engine doesn't support IActiveScriptParse: 0x%lx
IActiveScript::QueryInterface()Error calling SetScriptSite: 0x%lx
IActiveScript::SetScriptSite()Changed ThreadId to: 0x%lx 0x%lx
Failed to SetScriptState(UNINITIALIZED): 0x%lx
Error calling GetCurrentScriptThreadID: 0x%lx
IActiveScript::GetCurrentScriptThreadID()Failed to GetScriptState: 0x%lx
IActiveScript::GetScriptState()CScriptEngine::ReuseEngine
CScriptEngine::IsBaseThread
IActiveScript::Release()Cannot CloseEngine: 0x%lx
IActiveScript::Close()CScriptEngine::FinalRelease
CScriptEngine::InsertHeadList
CScriptEngine::RemoveListEntry
CScriptEngine::InsertHeadLruList
CScriptEngine::RemoveLruListEntry

Unsupported Interface: IActiveScriptSite
IUnknown
CScriptEngine::QueryInterface->CScriptEngine::AddRef %ld
CScriptEngine::GetLCID
CScriptEngine::GetDocVersionString
CScriptEngine::OnScriptTerminate
State: Uninitialized.
State: Started.
State: Connected.
State: Disconnected.
State: Closed.
State: Initialized.
CScriptEngine::OnStateChange:Script Error: Code: 0x%lx %ld
              Src:  %ws
              File: %ws
              Desc: %ws
CScriptEngine::OnScriptError
CScriptEngine::OnEnterScript
CScriptEngine::OnLeaveScript
Script changed while engine was running
Script LRU'ed out: %ld
Engine doesn't support reset: 0x%lx
Script Freed from free script list
Script Timed out.
Remap error to: 0x%lx
Failed to ParseScriptText: 0x%lx
IActiveScriptParse::ParseScriptText()Failed to AddNamedItem: 0x%lx
IActiveScript::AddNamedItem()AzBizRuleContextError calling InitNew: 0x%lx
IActiveScriptParse::InitNew()Set ThreadId to: 0x%lx 0x%lx
Failed to create AzBizRuleContext instance: 0x%lx
Failed to create scripting engine: 0x%lx
Failed to get scripting engine CLSID: 0x%lx
CScriptEngine::InitializeScriptEngine
CScriptEngine::Release %ld
L?C%CScriptEngine
Using new script engine.
ScriptEngine->Init failed: 0x%lx
new CScriptEngine failed: 0x%lx
Using clone of running script engine.
Using free script engine.
ReuseEngine failed: 0x%lx
Using free script engine from non-base thread.
Avoided script engine in non-base thread.
AzpGetScriptEngine failed: 0x%lx, %ld
CoInitializeEx failed: 0x%lx, %ld
Cannot DeleteTimerQueurTimer: %ld
Return script error to caller: 0x%lx
Script from access check to caller: 0x%lx
Failed to SetScriptState(STARTED): 0x%lx
Script took an exception: 0x%lx
RunScript took an exception: 0x%lx
CScriptEngine::RunScript
RunScript failed: 0x%lx, %ld
GetItemInfo took an exception: 0x%lx
CScriptEngine::GetItemInfo: %ws
CAzBizRuleParamInternal::AddParameters: Array bounds don't match %ld %ld %ld %ld
CAzBizRuleParameters::AddParameters: Parameter %ld isn't a VT_BSTR
CAzBizRuleParameters::AddParameters: Parameter %ws should have an interface value
CAzBizRuleParamInternal::AddParameters: Can't access ParameterValues 0x%lx
CAzBizRuleParamInternal::AddParameters: Can't access ParameterNames 0x%lx
CAzBizRuleParamInternal::AddParameters: Can't get value ubound 0x%lx
CAzBizRuleParamInternal::AddParameters: Can't get name ubound 0x%lx
CAzBizRuleParamInternal::AddParameters: Can't get value lbound 0x%lx
CAzBizRuleParamInternal::AddParameters: Can't get name lbound 0x%lx
AzpCaptureBizRuleInterfaces: Array bounds don't match %ld %ld %ld %ld %ld %ld
AzpCaptureBizRuleInterfaces::AddInterfaces: Can't access Interfaces 0x%lx
AzpCaptureBizRuleInterfaces::AddInterfaces: Can't access Flags 0x%lx
AzpCaptureBizRuleInterfaces::AddInterfaces: Can't access ParameterNames 0x%lx
AzpCaptureBizRuleInterfaces: Can't get interfaces ubound 0x%lx
AzpCaptureBizRuleInterfaces: Can't get value ubound 0x%lx
AzpCaptureBizRuleInterfaces: Can't get name ubound 0x%lx
AzpCaptureBizRuleInterfaces: Can't get interfaces lbound 0x%lx
AzpCaptureBizRuleInterfaces: Can't get value lbound 0x%lx
AzpCaptureBizRuleInterfaces: Can't get name lbound 0x%lx
icC%cC%RoleGroup-AzpGetUserNameEx: Cannot SetThreadToken (revert) %ld
CNGUSERAzpGetUserNameEx: Cannot GetUserNameExW %ld
AzpGetUserNameEx: Cannot SetThreadToken %ld
AzpGetUserNameEx: Cannot GetThreadToken %ld
AzpGetUserNameEx: Cannot get token statistics: %ld
AzpGetUserNameEx: no cached token handle
AzpClientContextGetProperty: invalid opcode %ld
AzpClientContextGetProperty: Cannot translate name: %ld
CLNTNAM%ws\%wsUSRNAMEAzpClientContextGetProperty: Cannot get token statistics: %ld
AzpClientContextSetProperty: invalid prop id %ld
<Sid=AzpComputeAccountDn: AzpAllocateHeap failed %ld
CNACCDNAzpComputeAccountDn: SafeAllocaAllocate failed %ld
AzpComputeAccountDn: AuthzGetInformationFromContext failed %ld
distinguishedName(objectClass=user)AzpQueryUserDN: ClientContext (AZP_CONTEXT_CREATED_FROM_SID) is missing LdapQueryDN.
AzpQueryUserDN: ClientContext is missing LdapQueryDN from a standalone machine.
AzpCheckGroupMembershipLdap: %ws: ldap_search worked on %ws: Membership is %ld
AzpCheckGroupMembershipLdap: %ws: ldap_count_entries failed on %ws: %ld: %s
AzpCheckGroupMembershipLdap: %ws: ldap_search failed on %ws: %ld: %s
(objectClass=*)ATTRIBUTESAzpCheckGroupMembershipLdapForLdapUrl: ldap_bind failed on %ws: %ld: %s
AzpCheckGroupMembershipLdapForLdapUrl: AzpADSetLdapEncryptionOption failed on %ws: %ld
AzpCheckGroupMembershipLdapForLdapUrl: ldap_connect failed on %ws: %ld
AzpCheckGroupMembershipLdapForLdapUrl: AzpADSetDefaultLdapOptions failed on %ws: %ld
AzpCheckGroupMembershipLdapForLdapUrl: ldap_init failed on %ws: %ld: %s
    AzpCheckGroupMembershipLdapForLdapUrl:invalid LDAP query syntax    AzpQueryUserDN failed.AzpCheckGroupMembershipLdapForLdapUrl: %ws
AzpCaptureBizRuleInterfaces: Flags or Interfaces is NULL but Names isn't
AzpCaptureBizRuleInterfaces: Names is NULL but Flags or Interfaces isn't
AzpWalkOpsAndTasks: %ws: %ws: All operations have been processed %ld.
AzpWalkOpsAndTasks: %ws: %ws: %ws: Operation granted
AzpWalkOpsAndTasks: %ws: %ws: %ws: Operation extended failure %ld
AzRoles KerberosAzManAPIAzpClientContextFree:  AzpClientContextGenerateDeleteAudit failed with %ld
Task referenceCTXSIDSAzpGenerateContextCreateAudit: Cannot ObCommonCreateObject %ld
AzInitializeContextFromToken: Cannot AuthzInitializeContextFromToken %ld
AzInitializeContextFromToken:  GetTokenInformation failed with %ld
AzInitializeContextFromToken: Cannot DuplicateTokenEx %ld
AzInitializeContextFromToken: Cannot OpenThreadToken %ld
AzInitializeContextFromToken: Cannot OpenProcessToken %ld
AzInitializeContextFromToken: Cannot ObCommonCreateObject %ld
AzInitializeContextFromToken: Cannot initialize context since store is in manage mode %ld
CNCLNTNMCNDOMNMAzInitializeContextFromName: Invalid user type - expected SIdTypeUser, got %ld
AzInitializeContextFromName: LookupAccoutName failed with %ld
TCLNTNAMAzInitializeContextFromName: Cannot allocate LUID %ld
AzInitializeContextFromName: Cannot ObCommonCreateObject %ld
AzInitializeContextFromName: Cannot AzInitializeFromToken %ld
AzInitializeContextFromName: Cannot initialize context since store is in manage mode %ld
PRPNMSAzpCheckGroupMembershipLdap: %ws: DsGetDcName failed %ld
ObjectClassAzpCheckGroupMembershipLdap: ClientContext is missing LdapQueryDN.
ACCTDNAzpCheckGroupMembershipLdap: %ws: AzpGetUserNameEx failed %ld
AzpCheckGroupMembershipLdap: %ws: User is in NT 4 domain or local account: Membership is %ld
AzpCheckGroupMembershipLdap: %ws
AzpCheckGroupMembershipOne: %ws: Is an invalid group type
AzpCheckGroupMembershipOne: %ws: Is an ldapquery group
AzpCheckGroupMembershipOne: ClientContext is missing LdapQueryDNAzpCheckGroupMembershipOne: %ws: Avoid ldapquery group
AzpCheckGroupMembershipOne: %ws: %ld: %ld: Answer computed
AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (non member) extended status: %ld
AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (member) extended status: %ld
AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (member) %ld
AzpCheckGroupMembershipOne: %ws: Is non member via app group
AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (non member) %ld
AzpCheckGroupMembershipOne: %ws: Is non member via NT Sid
AzpCheckGroupMembershipOne: %ws: Cannot AzptCheckObjecSidMembership (non member) %ld
AzpCheckGroupMembershipOne: %ws: Is a basic group
AzpCheckGroupMembershipOne: %ws: %ld: %ld: Answer found in cache
AzpCheckGroupMembershipOne: %ws: Create cache entry
CNMEMEVLAzpCheckGroupMembershipOne: %ws
AzInitializeContextFromStringSid: Cannot AuthzInitializeContextFromStringSid %ld
AzInitializeContextFromStringSid: CopySid failed with %ld
AzInitializeContextFromStringSid: Cannot allocate LUID %ld
AzInitializeContextFromStringSid: Cannot ObCommonCreateObject %ld
AzInitializeContextFromStringSid: Invalid user type - expected SIdTypeUser, got %ld
AzInitializeContextFromStringSid: LookupAccountSid failed with %ld
AzInitializeContextFromStringSid: ConvertSidStringToSid failed with %ld
AzInitializeContextFromStringSid: Cannot initialize context since store is in manage mode %ld
AzInitializeContext: Cannot AuthzInitializeContext %ld
AzInitializeContext: CopySid for null SID failed with %ld
AzInitializeContext: Cannot allocate LUID %ld
AzInitializeContext: Cannot ObCommonCreateObject %ld
AzInitializeContext: ConvertSidStringToSid for null SID failed with %ld
AzInitializeContext: Cannot initialize context with null audit identifying string %ld
S-1-0-0AzInitializeContext: Cannot initialize context since store is in manage mode %ld
AzpCheckGroupMembershipOne failed.
Role/Group referenceAzAccessCheck: %ws: AzpAccessCheckGenerateAudit failed with %ld
AzAccessCheck: %ws: %ws: AzpWalkOpsAndTasks failed %ld
AzAccessCheck: %ws: %ws: CheckGroupMembership failed %ld
AzAccessCheck: %ws: %ws: CheckSidMembership failed %ld
AzAccessCheck: %ws: %ws: All roles have been processed %ld.
AzAccessCheck: %ws: %ws: All operations have been processed %ld.
AzAccessCheck: %ws: %ws: Role finished being processed due to ACCESS_DENIED
AzAccessCheck: %ws: %ws: Role finished being processed
AzAccessCheck: %ws: %ws: CheckGroupMembership is %ld
AzAccessCheck: %ws: %ws: CheckGroupMembership extended status %ld
AzAccessCheck: %ws: %ws: CheckGroupMembership of role
AzAccessCheck: %ws: %ws: CheckSidMembership is %ld
AzAccessCheck: %ws: %ws: CheckSidMembership of role
AzAccessCheck: %ws: %ws: Process role
AzContextAccessCheck: Starting Access Check loops
AzAccessCheck: %ws: %ws: No roles have applicable operations %ld.
AzAccessCheck: %ws: %ws: No operations for this role apply
AzAccessCheck: This role %ws is not the requested role %ws 
Role referenceAzAccessCheck: %ws: %ws: There are no roles for this scope
AzAccessCheck: %ws: invalid OperationCount %ld
AzAccessCheck: Failed to load children for %ws: %ldAzAccessCheck: %ws: GroupEvalSerialNumber changed from %ld to %ld
ASNSCPAzpCheckRolesMembersip: %ws: CheckGroupMembership failed %ld
AzpCheckRolesMembersip: %ws: CheckSidMembership failed %ld
AzpCheckRolesMembersip: %ws: Role finished being processed 
AzpCheckRolesMembersip: %ws: CheckGroupMembership extended status %ld
AzpCheckRolesMembersip: %ws: CheckGroupMembership is %ld
AzpCheckRolesMembersip: %ws: CheckGroupMembership of role
AzpCheckRolesMembersip: %ws: CheckSidMembership is %ld
AzpCheckRolesMembersip: %ws: CheckSidMembership of role
GETROLES/GROUPS0x%lx %ws (%ld): DC deref
0x%lx %ws (%ld): Domain ref
DMDOM0x%lx %ws (%ld): Domain deref
0x%lx %ws (%ld): DC Allocaote
DMDCAzpAllocateDc: ldap_bind failed on %ws: %ld: %s
AzpAllocateDc: AzpADSetLdapEncryptionOption failed on %ws: %ld
AzpAllocateDc: ldap_connect failed on %ws: %ld
AzpAllocateDc: AzpADSetDefaultLdapOptions failed on %ws: %ld
AzpAllocateDc: ldap_init failed on %ws: %ld: %s
0x%lx %ws (%ld): DC ref
Authorization Store Handle ref0x%lx %ld (%ld): Open Handle
Handle refChild handle ref0x%lx: AV accessing handle
0x%lx %ld: Sequence number doesn't match parent.
0x%lx %ld: Object type doesn't match parent.
0x%lx %ld: Object is deleted.
0x%lx %ld: Handle has no ParentGenericObjectHead.
0x%lx %ld: Handle has no handle reference count.
0x%lx %ld: Handle Object type is too large.
0x%lx: NULL handle is invalid
Ref by nameObReferenceObjectByName (by guid): 0x%lx %ld: Handle not in list.
Ref by Handle0x%lx %ld: Object Type not local object type
0x%lx: NULL handle not allowed.
"*/:<>?\|	

	

GNGUIDNMGEDELTA0x%lx: 0x%lx: %ld: ObFreeDeltaArray
0x%lx: 0x%lx: ObInitObjectList
GEGUIDARReference from NewNameGENAMEAzpGetTokenUserGroupsFromAuthzContext: NULL ppTokenUser or NULL ppTokenGroups not allowed %ld
TokenGroupAzpGetTokenUserGroupsFromAuthzContext: SafeAllocaAllocate failed %ld
TokenUserAzpGetTokenUserGroupsFromAuthzContext: AuthzGetInformationFromContext failed %ld
AzpGetSidsFromUserGroups: null pSidList or pdwListSize
AzpGetSidsFromUserGroups: out of memory.
AzpAuthzCheckSid: pSid must not be NULL.
AzpAuthzCheckSid: pbIsGood must not be NULL.
AzpAuthzCheckSid: hAuthzHandle must not be NULL.
AzpGetClientContextSids: failed.
Allocate objectGENOBJObRemoveObjectListLink: OpCacheSerialNumber set to %ld
GEGETITM0x%lx: 0x%lx: Free array
0x%lx: 0x%lx: ObFreeObjectList
ObCommonGetProperty:Object has no apply-store-sacl data
ObCommonGetProperty: Object has no apply-store-sacl data
ObCommonGetProperty: Object has no generate-audits data
ObCommonGetProperty: No get property routine.
ObCommonGetProperty: Object has no name
ObCommonGetProperty: Object has no description
ObCommonGetProperty:Object has no application data
0x%lx: 0x%lx: %ld: ObRemoveObjectListLinks
DerefObCommonOpenObject: Reserved != 0
ObCommonEnumObjects: Reserved != 0
ObCommonGetProperty: Reserved != 0
ObSetProperty: OpCacheSerialNumber set to %ld
ObSetProperty: no set property routine: %ld %ld
AzAuthorizationStore in ObCloseHandle refObDecrHandleRefCount: Cannot reload children on failure of unload: %ld
Child handle derefHandle derefAuthorization Store Handle deref0x%lx %ld (%ld): Close Handle
AzpIsSidInList: sidListFlag can only be SID_MEMBER_LIST(1) or SID_NON_MEMBER_LIST(2) .
AzpIsSidInList: Role does not have non-member SID list.
AzpIsSidInList: hObject is not Role or Group.
AzpIsSidInList: pbAnswer must not be NULL.
AzpSidsImplyObjectMembership: both pbAnswer and pbIsNonMember must not be NULL.
AzpIsUserAuthzMember: pbAnswer must not be NULL.
ObCreateObject: %ws ObCommonCreateObject: Reserved != 0
ObClearObjectList PropertyID %d
ObRemovePropertyItem: GroupEvalSerialNumber set to %ld
AzpeAddPropertyItemSid: set::insert failed %ld
AzpeAddPropertyItemSid: duplicate SIDAzpeAddPropertyItemSid: AzpAllocateHeap failed %ld
UTILSIDObAddPropertyItem: OpCacheSerialNumber set to %ld
ObAddPropertyItem: GroupEvalSerialNumber set to %ld
Reference to self
ObAddPropertyItem: Cannot set creator group sid
ObAddPropertyItem: Cannot set creator owner sid
ObAddPropertyItem (by guid): AzAddPropertyItem: invalid prop id %ld
AzAddPropertyItem: Reserved != 0
AzRemovePropertyItem: invalid prop id %ld
AzRemovePropertyItem: Reserved != 0 && Reserved != 1
ObCommonDeleteObject: Reserved != 0
AzpGroupGetProperty: invalid opcode %ld
AzpGroupGetProperty: invalid grouptype %ld
AzpGroupGetProperty: cannot set group type to ldap query if group has membership.
AzpGroupGetProperty: cannot set group type to bizrule if group has ldap query string.
AzpGroupGetProperty: This version of the store doesn't support creating bizrule group.
AzpGroupGetProperty: cannot set group type to basic if group has ldap query string.
AzpGroupGetProperty: cannot set group type to basic if group has bizrule string.
AzpGroupSetProperty: GroupEvalSerialNumber set to %ld
invalid LDAP query syntaxldap://AzpGroupSetProperty: can't set ldap query before group type
AzpGroupSetProperty: Must set language before bizrule
AzpGroupSetProperty: can't set Bizrule before group type
AzpGroupSetProperty: invalid language %ws
JScriptVBScriptAzpGroupSetProperty: can't set Bizrule type before group type
AzpGroupSetProperty: can't set Bizrule Path before group type
AzpGroupSetProperty: invalid propid %ld
AzpGroupAddPropertyItem: invalid group type %ld
AzpGroupInit: memory allocation failed %ld
AzpRoleGetProperty: invalid prop id %ld
AzpRoleInit: memory allocation failed %ld
AzAdminManagerNonMemberMemberGroupTypeAppNonMemberLinkAppMemberLinkBizRuleBizRuleLanguageRoleDefinitionBizRuleImportedPathTaskLinkOperationIDOperationLinkAzRoleAzScopeAzTaskAzOperationApplicationVersionApplicationCLSIDAzApplicationGroupAzApplicationMinorVersionMajorVersionApplicationDataAuditsMaxScriptsScriptTimeoutDomainTimeoutMSXMLBizruleLdapQueryBasicFalseTrueP@%D@%8@%$@%@%\@%0@%@%x@%@%@%$@%(myXmlSetNodeAttribute)pNode = 0x%lx
 XPathdefault SelectionLanguage=%ws
SelectionLanguageNot found %s under tag %ws
xml file %ws doesn't exist.
xml file %ws exists.
XMPATH::$dataAzpChangeSinglePrivilege failed to reset to original. Error code: %dXMNAMECoCreating IXMLDOMDocument2 failed. HRESULT = %dIXMLDOMDocument2::load failed. HRESULT = %dIXMLDOMDocument2::load failed. HRESULT = %d. Intepreted as 'file not found'.XmlCheckSecurityPrivilege: path is too long '%ws'
XmlCheckSecurityPrivilege: invalid full path '%ws'
XMVAL%d(myXmlSubmitObjectAttribute)pNode = 0x%lx
DescriptionGuidName%s error occured: 0x%lx
%s error occured: 0x%lx(%ws)
pDoc->loadXML<?xml version="1.0" encoding="utf-8" ?>
<AzAdminManager MajorVersion="%d" MinorVersion="%d" Guid="%s">
</AzAdminManager>XMCTXTfileXPath query(link delete)=%ws
//%s[.="%s"]XMQRYpObjectNode, 0x%lx, is released
A new element node, 0x%lx, is added for %s
hr = 0x%lx, pObjectNode(from myXmlGetNamedGuidNode) = 0x%lx
XPath query(refresh)=%ws
//*/%s[@%s="%s"]XMQRY2MSLDAP(objectClass=msDS-AzOperation)(objectClass=msDS-AzTask)(objectClass=msDS-AzRole)(objectClass=group)(objectClass=msDS-AzScope)AzRoleObjectContainer-AzGroupObjectContainer-AzTaskObjectContainer-AzOpObjectContainer-containermsDS-AzRolegroupmsDS-AzScopemsDS-AzTaskmsDS-AzOperationmsDS-AzApplicationmsDS-AzAdminManagermsDS-NonMembersmembermsDS-AzLDAPQuerygroupTypemsDS-TasksForAzRolemsDS-OperationsForAzRolemsDS-MembersForAzRolemsDS-AzTaskIsRoleDefinitionmsDS-TasksForAzTaskmsDS-OperationsForAzTaskmsDS-AzLastImportedBizRulePathmsDS-AzBizRuleLanguagemsDS-AzBizRulemsDS-AzOperationIDmsDS-AzApplicationVersionmsDS-AzClassIdobjectGUIDallowedChildClassesEffectiveallowedAttributesEffectivemsDS-AzMinorVersionmsDS-AzMajorVersionmsDS-AzScriptTimeoutmsDS-AzScriptEngineCacheMaxmsDS-AzDomainTimeoutmsDS-AzGenerateAuditsmsDS-AzApplicationDatadescriptionnamemsDS-AzScopeNamecnmsDS-AzApplicationName1.2.840.113556.1.4.5291.2.840.113556.1.4.14131.2.840.113556.1.4.805@%@%P@% @%@%@%@%@%@%z
0IAzpADSetObjectOptions: AzpeSetObjectOptions failed: %ld
<SID=><GUID=objectVersionmsDS-Behavior-VersionAzpADStampSD: Failed to update security descriptor on %ws: %ld ldap Error:%ld Extended Error: %ws
NTSecurityDescriptor1.2.840.113556.1.4.801ATRSTRATRMODATRLSTuSNChanged(&(objectClass=msds-azscope)(msds-azscopename=%s))(&(objectClass=msds-azapplication)(msds-azapplicationname=%s))AzpADPersistWritable: Error calling AzpADPersistChildCreate: %ld
AzpADPersistWritable: %ws attribute isn't writable
AzpADParseLinkedAttributeValue: Failed to run search for group type for %ws: %ld
AzpADParseLinkedAttributeValue: ldap_set_option LDAP_OPT_REFERRALS failed: %ld
CN=FOREIGNSECURITYPRINCIPALS,CN=AZGROUPOBJECTCONTAINER-AzpUpdateADObject: Read writable failed: %ld
1.2.840.113556.1.4.1851supportedCapabilitiesschemaNamingContextdefaultNamingContext(objectClass=msDS-AzAdminManager)AzpCreateADObject: Failed to add object %ws: %ld %ld
objectClassMODVALilMODVALBLDCN2,CN=BLDCN3AzpGetCNForDN: Failed to quote RDN for object %ws: %ld
QTRDNBLDCNCONTRDNADPARDNGroup DNsystemMayContainmayContainAzpHandleSubmitLinkedAttribute: UuidToString failed: %ld
AzpHandleSubmitLinkedAttribute: ConvertSidToStringSid failed: %ld
AzpADHandleSubmitLinkedAttribute: AzpeGetDeltaArray failed for %ws: %ld
AzpHandleSubmitLinkedAttribute: AzpeGetDeltaArray failed for %ws: %ld
<Unknown>AzpADBuildDN: AzpGetCNForDN failed: %ld
TMPCNBLDDNAzpADBuildDN: AzpADObjectContainerRDN failed for %ws: %ld
AzpADBuildDN: AzpADGetCNForDN failed: %ld
AzpGetSpecificProperty: AzpADHandleSubmitLinkedAttribute failed for %s: %ld
FALSETRUEAzpADGetSpecificProperty: Get Property failed: %ld
URLDNAzpADBuildDN: AzpADBuildChildObjectDN failed for %s: %ld
AzpADBuildDN: AzpADObjectContainerRDN failed:%ld
AzpADBuildDN: AzpADBuildDNForBuiltinObject failed:%ld
ADSDAzpADReadNTSecurityDescriptor: Failed to perform search on %ws: %ld
AzpADReadNTSecurityDescriptor: AzpADBuildDN failed: %ld
1AzpADReadHasChildrenObject: Reading of Child container objectfailed: %ld
AzpADPersistUpdateChildrenCache: failed to read paged results: %ld
AzpADPersistUpdateChildrenCache: failed to init paged search handle: %ld
AzpADPersistUpdateChildrenCache: AzpADBuildDN failed: %ld
AdCheckSecurityPrivilege: AzpADReadNTSecurityDescriptor failed: %ld
AzpADReadAttributeAndSetProperty:AzpeAddPropertyItemGuid failed on: %ld
AzpReadLinkedAttribute:AzpADParseLinkedAttributeValue failed for %ws: %ld
AzpReadAttributeAndSetProperty: AzpeAddPropertyItem failed: %ld
%s;range=%d-*RNGATTR%s;range=%d-%dAzpADApplyPolicyAcls: AzpeSetSecurityDescriptorIntoCache failed:: %ld
AzpApplyPolicyAcls: AzpADReadNTSecurityDescriptor failed :%ld
AzpADUpdateCommonAttrs: Get property failed : %ld
AzpADUpdateCommonAttrs: Failed to rename %ws: %ld
NEWRDNAzpUpdateADCommonAttrs: AzpeGetProperty failed for object name: %ld
GUIDCNAzpADUpdateObjectAcls: AzpApplyPolicyAcls failed with DACL: %ld
AzpADUpdateObjectAcls: AzpADStampSD failed with SACL/DACL: %ld
AzpADUpdateObjectAcls: AzpeGetSecurityDescriptorFromCache failed: %ld
AzpADUpdateObjectAcls: AzpADReadNTSecurityDescriptor failed :%ld
AzpReadAttributeAndSetProperty:AzpADReadLinkedAttribute failed for attribute %ws of %ws: %ld
AzpUpdateADObject: AzpADUpdateObjectAcls failed for %ws: %ld
AzpUpdateADObject: AzpSetGuidAndOptions failed  for %s: %ld
AzpUpdateADObject: Failed to search object %s: %ld
AzpUpdateADObject: UuidCreate failed  for %s: %ld
AzpUpdateADObject: Failed to add/modify %ws : %ld %ld
AzpUpdateADObject: Get property failed  for %s: %ld
CNstrAzpUpdateADObject: AzpGetADCommonAttrs failed: %ld
AzpUpdateADObject: AzpGetAttrsForCreateObject failed for %ws: %ld
AzpADPersistSubmit: Update failed for object %ws: %ld
AzpADPersistSubmit: Failed to delete object %ws: %ld
AzpADPersistSubmit: AzpADBuildDN failed: %ld
Submitting a new object with name that has been submitted by other instances of azstore objectAzpADPersistSubmit: AzpADBuildNameSearchFilter failed:%ld
AzpADPersistSubmit: AzpADBuildDN failed:%ld
AzpADPersistSubmit: AzpADStoreHasUpdate failed: %ld
AzpReadADStoreForCommonData: Read description failed: %ld
AzpReadADStoreForCommonData: AzpADCreateGuidCN failed for %ws: %ld
AzpReadADStoreForCommonData: AzpeCreateObject failed: %ld
AzpReadADStoreForCommonData: AzpInitializeObjectName failed: %ld
AzpUpdateObjectGuid: Failed to allocate memoryUTILSTRAzpADSetObjectOptions failed: %ld
AzpReadADStoreObject: AzpADPersistWritable failed: %ld
BLDCN4AzpReadADStoreObject: Failed to apply policy ACLs: %ld
AzpReadAttributeAndSetProperty failed: %ld
AzpReadADStoreObject: Object creation and common data read failed: %ld
AzpADPersistRefresh: AzpReadADStoreObject failedfor %s: %ld
AzpADPersistRefresh: Search on object failed:%ld
AzpADPersistRefresh: AzpADBuildDN failed: %ld
AzpADReadPagedResult: Updating children failed: %ld
AzpADReadPagedResult: Reading of child objectfailed: %ld
AzpADReadPagedResult: Failed to read paged LDAP result: %ld
AzpReadADObjectContainer: Reading of child objectfailed: %ld
CONTDNAzpADReadAzStoreChildren: AzpADReadPagedResult failed: %ld
AzpADReadAzStoreChildren: Failed to create paged result handle: %ld
(objectClass=msDS-AzApplication)AzpADReadAzStoreChildren: Failed to read Application Groups: %ld
AzpReadADStore: AzpADReadAzStoreChildren failed: %ld
AzpReadADStoreObject failed: %ld
AzpADPersistOpenEx: AzpCheckVersions failed with error: %ld
BizRule group not supported, please update the schema
AzpADPersistOpenEx: AzpReadADStore failed: %ld
AzpADPersistOpenEx: ldap_get_option failed : %ld
AdCtxInAzpADPersistOpenEx: AzpCheckDomainVersion failed on %ws: %ldAzpADPersistOpenEx: ldap_bind failed on %ws: %ld
AzpADPersistOpenEx: AzpADSetLdapEncryptionOption failed on %ws: %ld
AzpADPersistOpenEx: ldap_connect failed on %ws: %ld
AzpADPersistOpenEx: AzpADSetDefaultLdapOptions failed on %ws: %ld
AzpADPersistOpenEx: ldap_init failed on %ws: %ld: %s
AzpADPersistOpenEx: AzpLdapCrackUrl failed on %ws: %ld
AdLdapCtAdPlCtxtAzScopeGetProperty: invalid prop id %ld
AzTaskGetProperty: scope is delegated - bizrule not allowed %ld
AzTaskGetProperty: invalid prop id %ld
AzpTaskSetProperty: Must set language before bizrule
AzpTaskSetProperty: invalid language %ws
AzpTaskSetProperty: invalid prop id %ld
AzpOperationGetProperty: invalid prop id %ld
Ref by operation idlist<T> too longOperationHash: objects already in hashAzpOperationSetProperty: Operation ID %ld is already used.
AzpOperationSetProperty: Operation Id too small %ld
AzpOperationSetProperty: invalid prop id %ld
AzpCheckOperationCache: '%ws/%ws' found in operation cache
AzpCheckOperationCache: Parameter changed from previous call
AzpCheckOperationCache: Parameter count changed from previous call %ld %ld
AzpCheckOperationCache: OpCacheSerialNumber changed from %ld to %ld
AzpCheckOperationCache: Operation cache avoided since interfaces passed in
Operation CacheScope CacheAzpUpdateOperationCache: Added '%ws/%ws' %ld to operation cache
AzpUpdateOperationCache: No operations to cache
MSSQLPEENUMCXAzpPersistReconcileOne: ObAddPropertyItem failed %ld
AzpPersistReconcileOne (by guid): AzpPersistReconcile: Cannot refresh object: %ws %ld
AzpPersistReconcileOne: %ws %ld 0x%lx 0x%lx
AzpPersistReconcile: Cannot reconcile object: %ws %ld
AzpeCreateObject: Cannot find Object Head: %ld: %ld
AzpeSetProperty: Property ID for non-scalar: %ld
AzpeSetObjectOptions: bad options mask 0x%lx
AzpeGetProperty: Property ID for non-scalar: %ld
AzpeGetDeltaArray: invalid prop id %ld
AzpeAddPropertyItemSid: SID not valid
AzpeAddPropertyItemSid: called from submit: %ld %ld %ld
AzpeAddPropertyItemSid: invalid prop id %ld
AzpeAddPropertyItemGuid: invalid prop id %ld
AZPEALOCAzpGetChildGenericHead cannot find the child list head for type=%d.
AzpeGetObjectByGuid receives NULL parameter pFoundObjectHandle.
AzpPersistReconcile: Cannot reconcile object: %ws %ld %ld
AzpPersistDetermineProvider: libary '%ws' does not export '%s': %ld
AzPersistProviderInitializeAzpPersistDetermineProvider: Cannot load libary '%ws' %ld
AzpPersistDetermineProvider: Cannot open Provider reg value at 'HKLM\%ws\%ws' %ld
ProviderDllAzpPersistDetermineProvider: Cannot open Provider reg key at 'HKLM\%ws' %ld
AzpPersistDetermineProvider: Open Provider reg key at 'HKLM\%ws'
SYSTEM\CurrentControlSet\Control\LSA\AzRoles\ProvidersUTILSAFEUTILAVLUTILDUPUTILGSTRUTILGLNGUTILSD2%s[%s] OBJLISTOBJREFDOMREFUNKNOWNHANDLESQLPERSISTACCESSSCRIPTADDISPATCHXMLCRITICALINVPARMFUNCALL%02u/%02u %02u:%02u:%02u [AZROLES] Failed to create log entry: StringCchVPrintfA failureError Message:
WideCharToMultiByte failed
AzpUnEscapeString: InternetCanonicalizeUrl NULL Param
AzpUnEscapeString: First call to UrlUnescape failed with %x
AzpUnEscapeString: UrlUnescape failed with %x
UnEscapeReAllocAzpUnEscapeString: Out of memory
UnEscapeAzpGetCurrentUserSid failed: Status = %x
AzpCaptureString: string too long %ld %ld %ws
AzpCaptureString: zero length not ok
AzpCaptureString: NULL not ok
AzpCaptureString: SID not valid
0x%lx: 0x%lx: Allocate array
0x%lx: 0x%lx: Free old array
UTILADDAzpSafeArrayPointerFromVariant: Array isn't array of VARIANT 0x%lx %lx
AzpSafeArrayPointerFromVariant: Array %lx isn't single dimension array
AzpSafeArrayPointerFromVariant: parameter is not an array 0x%lx.
AzpADSetDefaultLdapOptions: ldap_set_option LDAP_OPT_DNSDOMAIN_NAME failed: %ld
AzpADSetDefaultLdapOptions: ldap_set_option LDAP_OPT_AREC_EXCLUSIVE failed: %ld
AzpADSetDefaultLdapOptions: ldap_set_option LDAP_OPT_REFERRALS failed: %ld
AzpADSetLdapEncryptionOption: ldap_set_option LDAP_OPT_ENCRYPT failed: %ld
AzpADPersistOpenEx: ldap_get_option for LDAP_OPT_SSL failed
(null)0x%lx %ld (%ld) %ws: %s
<Invalid Sid>AzpLdapCrackUrl%AZ_CLIENT_DN%AzpParseLDAPUrl: NULL Pointer
AzpParseLDAPUrl: url doesn't begin with ldap://
AzpParseLDAPUrl: missing DN
suboneAzpParseLDAPUrl: missing Attribute
base*Error unescaping DN:<%ws>
Error unescaping host name: %ws
AzpParseLDAPUrl: Host name missing
Error allocating memory
AzpParseLDAPUrlAzpParseLDAPUrl: URL is %ws
|SELECT count(*) FROM sysobjects WHERE name = 'AzMan_AzAuthorizationStore' and type = 'U'
H&E%wA%!HE%RE%AzManSQLProvider::NeedsReconnect(): SqlConnection::NeedsReconnect returned %d.
master&E%LE%#E%%E%%E%E%%E%%E%AzMultiSidBuffer::NextPage is out of memory.
NE%k*E%E%rE%wE%E%E%f'E%:E%Fails to set property (id is %d) to value %wsFails to set property (id is %d) to value %dAzObjectRecord::PopulateObject failed.
AzObjectRecord::PopulateObject receives NULL objectHandle.
GE%_A%#E%D%#E%D%#E%#E%@E%@E%#E%E%E%E%(#E%GE%_A%#E%D%#E%D%#E%#E%\#E%\#E%#E%E%E%E%(#E%GE%_A%#E%D%#E%D%#E%#E%#E%#E%#E%E%E%E%(#E%GE%_A%#E%D%#E%D%#E%#E%#E%#E%#E%E%E%E%(#E%GE%_A%#E%D%#E%D%#E%#E%$E%
$E%#E%E%E%E%(#E%GE%_A%#E%D%#E%D%#E%#E%%E%F$E%#E%O$E%E%O$E%(#E%GE%_A%#E%D%#E%D%#E%#E%$E%$E%#E%O$E%E%O$E%(#E%GE%$E%C%E%D%$%E%D%#E%#E%@E%@E%$E%$E%E%$E%%E%GE%$E%C%E%D%$%E%D%#E%#E%%E%%E%$E%$E%E%$E%%E%AzObjectRecord::Initialize failed.
AzpeGetProperty failed.
UuidCreate failed.
PE%F.E%E%E%wE%E%E%UE%^E%QE%11E%qE%E%wE%E%E%VE%E%RE%2E%E%E%wE%E%E%*XE%E%.RE%4E%E%E%wE%E%E%XE%^E%TRE%5E%WE%E%wE%E%E%$6E%zE%RE%P7E%+E%rE%wE%9E%E%9E%E%RoleRecord::Initialize fails to allocate memory for SID.
RE%;E%%E%JE%E%?E%&E%y=E%E%TaskRecord::Initialize fails to allocate memory for Bizrule Path 
TaskRecord::Initialize fails to allocate memory for Bizrule language 
RE%%AE%E%U!E%"E%FGE%!E%zDE% E%GroupRecord::Initialize fails to allocate memory for SID.
GroupRecord::Initialize fails to allocate memory for Bizrule Path 
GroupRecord::Initialize fails to allocate memory for Bizrule language 
CryptGetHashParam FAILED Error 0x%08X.
CryptHashData FAILED Error 0x%08X.
FAILED to initialize SHA256 hash algorithm Error 0x%08X.
No object can be found for the given guid.
No object can be found for guid=[%ws] in the visible tree.
=%d%wsAzMultiValuePropertyBuffer::NextPage is out of memory.
AzManSQLProvider::Initialize(): FAILED to initialize AES crypto provider Error 0x%08X.
AzManSQLProvider::Initialize SqlConnection::DriverConnect returns 0x%08X.
AzManSQLProvider::Initialize(): SqlConnection::DriverConnect() returned 0x%08X.
AzManSQLProvider::Initialize(): Not enough memory for db connection.
AzManSQLProvider::Initialize(): Database::Open() returned 0x%08X.
AzManSQLProvider::Initialize: Not enough memory for db instance.
AzManSQLProvider::Initialize: NULL pwszConnStr.
ContainerRecord::Initialize failed.
ZE%HE%@E%Leave PopulateObjectSingleValueProperties. return value: 0.
AzManSproc is invalid: No AzObjectRecord object.
PopulateObjectSingleValueProperties: pSproc = NULL is invalid.
Leave PopulateObjectSingleValueProperties. return value: %d.
PopulateObjectSingleValueProperties: objectHandle = NULL is invalid.
Enter PopulateObjectSingleValueProperties.
Leave PopulateObjectOptionalValueProperties. return value: 0.
PopulateObjectOptionalValueProperties: pSproc = NULL is invalid.
Leave PopulateObjectOptionalValueProperties. return value: %d.
PopulateObjectOptionalValueProperties: objectHandle = NULL is invalid.
Enter PopulateObjectOptionalValueProperties.
SqlProviderInitialize receives NULL parameters: %d.
SqlProviderInitialize receives lower version number in AzrolesInfo: %d.
BeginTransaction returns: %d.
CommitTransaction returns: %d.
RollbackTransaction returns: %d.
SqlExecuteQueryForObject receives NULL sqlPersistContext or NULL ppSproc.
AzManSproc::Execute failed with error: %d.
AzManSproc::Execute failed.
Object of type = %d does not support action %d.
PopulateObjectOptionalValueProperties failed with error: %d.
AzManSproc::Fetch failed with error: %d.
SqlLoadMultiValues failed.Fails to set property (id is %d).
AzpeClearPropertyItemList fails for property (id is %d).
AzpeClearPropertyItemList failed: propID=%d, ObjectType=%d, ObjectName=%s.
SqlCreateChildFromRecord failed.AzpeCreateObject fails.
AzpeGetObjectByGuid fails.
Fetch fails.
AzManSproc does not have AzObjectRecord.
SqlCreateChildFromRecord receives NULL ppObject or NULL pSproc parameter.
QueryObjectUpdateTimeStamp failed.
QueryObjectUpdateTimeStamp has NULL parameter pRowTimeStamp.SqlStoreHasUpdate has NULL pPersistContext or pbNeedUpdate parameter.
AddAccessAllowedAceEx fails.
There are too many policy users for an ACL to hold.
Error reading users of type %d
AddAuditAccessAceEx fails.
Object of type %d does not support the action %d.
Policy user type is not supported %d.
PACL parameter for SqlLoadPolicyUser is NULL.
SqlGetObjectSecurityDescriptor failed.
SetSecurityDescriptorDacl failed.
InitializeSecurityDescriptor failed.
SqlGetObjectSecurityDescriptor has NULL PSECURITY_DESCRIPTOR.
SqlUpdatePolicyUser failed.
AzManSproc::Execute failed with sqlStatus: %d.
AzManSproc::Execute failed
SqlPersistIsUpdateNeeded called with pbIsUpdateNeeded = NULL or pSqlPersistContext = NULL.
AzDatabaseSproc::Execute (AzMan_SPD_SQLRole_ForObject) fails with SqlStatus=%d.
AzDatabaseSproc::Create fails with SqlStatus=%d.
SqlRemoveSqlRoles receives NULL SqlConnection.
GetStoreProcedure fails.
SqlCreateObject receives NULL sqlPersistContext.
SqlExecuteNonQueryForObject failed with error: %d.
SqlCreateObject receives NULL sqlPersistContext or NULL ppSproc.
AzManSproc::Execute partially succeeded. Check Sproc %ws
SqlUpdateStoreStateInfo failed.
AzpeSetObjectOptions failed.
SqlLoadAcls failed.
AzpeSetSecurityDescriptorIntoCache failed %d.
SqlGetObjectSecurityDescriptor failed %d.
SqlPersistDelete failed.
PopulateObjectSingleValueProperties failed with error: %d.
SqlUpdatePolicyUsersByAcl failed.
SqlUpdatePolicyUsersByAcl failed to allocate memory.
GetAclInformation failed.
QueryChildrenUpdateTimeStamps failed.
Invalid Stored Procedure Object: no ObjectRecord.
QueryChildrenUpdateTimeStamps failed to allocate memory.
QueryChildrenUpdateTimeStamps has NULL parameter pTSMap.CollectSids: set::insert failed.
CollectSids: duplicate SID.
ObjectTimeStamp::GetUpdateInformation failed.
QueryChildrenUpdateTimeStamps fails for action=%d and objectType=%d.
StoreTimeStamp::GetUpdateInformation failed.
AzpeAddPropertyItemSid: set::insert failed.
SqlCreateChildListShallow failed.SqlCreateChildListShallow failed with error: %d.
SqlLoadChildren failed with error: %d.
SqlLoadObjectOptionalData failed with error: %d.
SqlLoadMultiValues failed with error: %d.
SqlLoadSpecificChildObjectShallow failed with error: %d.
Failed to allocate memory for object list.
SqlLoadChildren failed.Child object of type %d starts recursive loading.
SqlLoadChildren (Type being loaded: %d.)
SqlLoadChildren (Loading type: %d.)
E%"E%1[E%E%HE%W[E%'E%HE%[E%SqlPersistUpdateChildrenCache failed.
SqlPersistUpdateChildrenCache called.
SqlLoadChild failed.SqlUpdatePolicyUsers failed.
AzpeGetSecurityDescriptorFromCache failed.
GetSecurityDescriptorDacl failed.
SqlPersistSubmit failed.
SqlRemoveSqlRoles failed.
SqlSubmitMultiValueProperties failed.
SqlSubmitOptionalProperties failed.
SqlSubmitShallowProperties failed.
SqlPersistSubmit receives NULL PersistContext.
SqlRefreshObjectsByTimeStamp failed.
AzpeGetObjectByGuid failed.
ObjectTimeStamp allocation failed.
SqlLoadChild failed.
SqlLoadPolicyStore succeeded.
SqlLoadPolicyStore failed.
Error to open database %ws that does not exist.
Error setting default options.
Error setting MinorVersion.
Error setting MajorVersion.
Error to create a database %ws that already exists.
SqlLoadPolicyStore receives NULL pSqlPersistContext.
SqlLoadPolicyStore
AzmanSQLLayer::Initialize failed.
Out of memory when allocating AzmanSQLLayer.
Out of memory when allocating PAZP_SQL_CONTEXT.
Out of memory when allocating connection string.
SQLCTXTSQL URL does is not valid: it does not contain a database name information.
Both OldSqlContext and sqlUrl being NULL is invalid.
SQL provider URL is missing %ws.
://SQL provider is invoked without mssql prefix "mssql".
SqlPersistUpdateCache failed.
SqlPersistUpdateCache has no updates.
SqlPersistUpdateCache has updates.
SqlPersistIsUpdateNeeded failed.
AdvanceDataBuffer fails.
AzManSproc::AdvanceDataBuffer called without AzObjectRecord member.
AzObjectRecord::NextPage fails.
YE%wA%yA%zA%={A%ǯE%EE%yA%zA%={A%@E%AzManSproc::Initialize receives NULL objectHandle.
Negative SQL return code 0x%x is interpreted made positive.
PE%EE%yA%zA%={A%E%|E%EE%yA%zA%={A%E%E%EE%yA%zA%={A%WE%ԳE%EE%yA%zA%={A%E%E%EE%yA%zA%={A%E%,E%EE%yA%zA%={A%7E%XE%EE%yA%zA%={A%E%AzMan_SP_Grant_PermissionAzMan_SPD_SQLRole_ForObjectYE%E%yA%zA%={A%AzManSproc::GetStoreProcedure receives NULL pSproc parameter.
Stored Procedure %ws does not support result parameter of ID=0x%x.
Stored Procedure %ws does not support parameter of ID=0x%x.
AzManSproc::BindParameters for action=%d and childType=%d.
AzDatabaseSproc::PrepareParameters failed.
AzDatabaseSproc::Create failed.
AzMan_SPS_Get_ObjectSecurityOptionAzMan_SPS_Get_AzApplicationAzMan_SPS_Get_AzScopeAzMan_SPS_Get_AzTaskAzMan_SPS_Get_AzOperationAzMan_SPS_Get_AzRoleAssignmentAzMan_SPS_Get_AzApplicationGroupAzMan_SPD_AzApplicationGroupAzMan_SPD_AzApplicationAzMan_SPD_AzScopeAzMan_SPD_AzTaskAzMan_SPD_AzRoleAssignmentAzMan_SPD_User_From_RoleAzMan_SPI_AzApplicationAzMan_SPI_AzTaskAzMan_SPI_AzScopeAzMan_SPI_AzRoleAssignmentAzMan_SPI_AzApplicationGroupAzMan_SPI_Add_User_To_RoleAzMan_SPS_Enum_AzApplicationGroupAzMan_SPS_Enum_AzScopeAzMan_SPS_Enum_AzTaskAzMan_SPS_Enum_AzRoleAssignmentAzMan_SPS_Get_Role_For_ObjectAzMan_SPS_Get_DBOwnersAzMan_SPS_Enum_AzApplicationGroupUpdateTimeStampAzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStampAzMan_SPS_Enum_AzTaskUpdateTimeStampAzMan_SPI_Create_SqlRole_For_ObjectAzMan_SPS_Get_AzAuthorizationStoreByNameAzMan_SPS_Get_StoreIDByNameAzMan_SPS_Enum_AzApplicationsAzMan_SPI_AzAuthorizationStoreAzMan_SPU_AzAuthorizationStoreAzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStampAzMan_SPS_Enum_AzApplicationUpdateTimeStampAzMan_SPD_AzAuthorizationStoreAzMan_SPS_Enum_AzOperationAzMan_SPI_AzOperationAzMan_SPU_AzApplicationAzMan_SPD_AzOperationAzMan_SPS_Enum_AzScopeUpdateTimeStampAzMan_SPS_Enum_AzOperationUpdateTimeStampAzMan_SPU_AzScopeAzMan_SPU_AzRoleAssignmentAzMan_SPI_AzRoleAssignment_Multi_AppMembersAzMan_SPI_AzRoleAssignment_Multi_SidMembersAzMan_SPI_AzRoleAssignment_Multi_OperationsAzMan_SPI_AzRoleAssignment_Multi_TasksAzMan_SPS_Enum_AzRoleAssignment_AppMembersAzMan_SPS_Enum_AzRoleAssignment_SIDMembersAzMan_SPS_Enum_AzRoleAssignment_OperationsAzMan_SPS_Enum_AzRoleAssignment_TasksAzMan_SPS_Get_AzApplicationGroup_LDAPQueryAzMan_SPU_AzApplicationGroupAzMan_SPI_AzApplicationGroup_Multi_AppMembersAzMan_SPI_AzApplicationGroup_Multi_AppNonMembersAzMan_SPI_AzApplicationGroup_Multi_SidMembersAzMan_SPI_AzApplicationGroup_Multi_SidNonMembersAzMan_SPIU_AzApplicationGroup_LDAPQueryAzMan_SPS_Get_AzApplicationGroup_BizruleInfoAzMan_SPIU_AzApplicationGroup_BizruleAzMan_SPS_Enum_AzApplicationGroup_AppMembersAzMan_SPS_Enum_AzApplicationGroup_AppNonMembersAzMan_SPS_Enum_AzApplicationGroup_SIDMembersAzMan_SPS_Enum_AzApplicationGroup_SIDNonMembersAzMan_SPU_AzTaskAzMan_SPS_Enum_AzTask_OperationsAzMan_SPS_Enum_AzTask_TasksAzMan_SPI_AzTask_Multi_OperationsAzMan_SPI_AzTask_Multi_TasksAzMan_SPS_Get_AzTask_BizruleInfoAzMan_SPIU_AzTask_BizruleAzMan_SPU_AzOperationY/(e

=L9o<{OyzDeleteNoRemoveForceRemoveValBDMSaA%aA%aA%aA%aA%aA%aA%aA%string too longinvalid string position9E%Invalid parameter passed to C runtime function.
0nF%nF%FFF+ _,d* _,d* _,d3)6{O>`` 7
ʩSetThreadStackGuaranteekernel32.dllkernelbase.dllWLDAP32.dllnetutils.dlldsrole.dlldfscli.dlllogoncli.dllSecur32.dlls.O3)6{O>`MPR.dllSHLWAPI.dllH4hF%pdA%}RSDSiVqO$vDMazroles.pdbAl>h cT2R4Tt
=,Ll,T|$T&Ff/_%m
=mHs2Z.n^nFnF!uGoUEVt%WhL6C%~7jVzZEtWTY_6@%EtVTY^]̋U3@}t9Et}t3]̋U3@9Et}t3]̋VtP&f^̋VFW3;t
PzSY~F;t
PiSY~F;t
PXSY~F;t
PGSY~~_3^̋UQjjEPhqiw3}Pht@%h@裔3@̋U(4hF%3ʼnESVW}j[@%PhPPEPWuhfE@F%M@F%M@F%M@F%M@F%	wC9u=EQ=GF=%;QMQP/9uC
PEPVjV;u;u3M_^3[8X̋3ɉHH̃!a̋UEAEA]̋UE|~=t=uj
j
3jX]̋UQSVW}3E;t\u;tUEh@%Pu@%؅tSu@%Su|@%up@%EPx@%t
eEWE_^[̋UVh$nF%jUWYYt$`NNtAFMFFH^]̋UEt7VtprPQPt02QIpPOY^]̋V~tWFxPOY~u_ff^̋V~t!WFpxOvOYY~u_ff^̋UyUtuA@t@3]̋USVW؋33t!9EtftfAACCNMGuuIIOz3fMt9_^[]D̋UVuV3t1jRuu3F^]̋UQSVuW3V]t#wjPEtu}Slu	}tuu3F_^[̋VFW3t,PdPovjdPXf_^̋U4hF%3ʼnEVWxPW|PjvUdPQ#@%|ff;
uftfHf;Jufu3xPW|PjvcPQA|Pf@@fu+
f}.f}.uztPpPlP|h@%PT@%uKl;w<9pw4tw(ptȁɁ@@M_3^)S̋VjjjfvbP^̋UVjujmvbPy^]̋VWjvjbPRjjjfvbP7_^̋VWjvjubPjjjfvNbP_^̋UQSVuW3V]u;t$wj~PEt
uOSRu	}tuu3F_^[̋UuIQuQ3]̋UU3tvW|EMhjp]̋UU3Wtv|%}vU3f
uEMj!]̋UUS3Wt;vW}|0e3V;tf9t@@Nu;u	EW+΋E^3Ʌ|ES+jO_[]̋UM3tvW|9SVW}EPuqVW3P@%|;wu
z3fw_^[]̋US3VVSj^^^^^^^;`PnP_uE;tWPf@@f;uW+h$nF%x3jZQOYYF;uh @%h@謊YY
uWP_^[]̋VKtPjM_P&vtVHY^̋VgN@%^̋UQQESVW3M;f98q9>t$EVPj!_MPSBEPf@@fu+h$nF%3jZEQNYYul3fEPEPuWSuu6^MPSt.jjjl6D^MPSt	3	tWtGYSwuM)_^[̋U}VutVu@FFt
Pf3^]̋UQQVW3VGPjwuu]PJQuS(qEP8PP,PP(PP0PP4PP$PP PPPuwO]PQYtEPz[_^Ë̋UQQVW3VGPjwuu\PgQuS<,rEP$ftUftOftIP8PP,PP(PP Puw\PQuLJ<EPy[_^̋U SVW3ۍEMMP]]]u;u3_^[uEP$ftft
fh$nF%j]KYY;t
XXE]};Ή}P hncMQhPEVup[}ue3f;tqfE}t	}vEƃt
u	MmEEh$nF%jGKYY3;t
HH3G;NEE9MG~}E9Htqt
u	EEub؅u3Ev6PJEFEvutuEE@utP݆ƋvPuTCYuuMSP3ۋMEPE;@:MP@}t"utPrƋvPuBYuދ̋UEVWF@~WPjYPQu'WNVj>QtsQtҋCQmtPQZ#_^]̋Vo,dNtVjFtPjXPbf^̋UQEeSVWF,REP<uvXP؃tu9<tWB؃dt+St!e
uREPuv
XP_^[̋UVWjuv>XPWu8tvWPZ_^]̋UQVWD$jYtu
@j
YN@SXf@@fu+ȅtLq;v
@D$E_th@%VSmMht@%VS\@VS}tMhp@%VSEvEhh@%VSMuÍPf@@fuhd@%+V3SfLGh`@%VSy3[_^̋VWjFPvVP Wu8tvTVP_^̋VWjFPvVWou8tv
V_^@%P̋UVEtV?Y^]̋UM3ɉHHHH@@%]̋USVW~?tWPjUPSVH@%Yxtpj$HP@jQjRjP7UPSgu*}tLD@%3ҹRu@%t:=u:ujjjl7TPjSuj[3_^[]j E%EF3}}E}؉}܉}E@%u}~PEuuh@%h@5}h@%@WYYsM{tcEPN؅u!ENCPvjTP|PE&tkPEtuPEtkEPNd؅u@t_PPEu^uh@%W^~DuchP@%WG~E-uh@%uh@%hh@%W~YYEutu}t}uGee+EPM؋GtPjRPo_EPNuËFtPjuRP@EFD}tujRRPePj9RPEPM!uݍME@%EC̋UV@%EtV_;Y^]̋VWP@%,@%9D9_^5̋USVW39>uj[~u
@E;f98Pf@@fu+$nF%Sx3jZQ}AYYFu
uWP3F9}t^SjfAYY;t
V^uKvjSWt3OSDτt$jF3	t	j_^[]3ҋP@%PPPPPVQQQ@%1,1QQQ^̋UVTEtV9Y^]̋UVWh$nF%h@_@YYtm3uj_4wPPuuPuj_^]̋UESVWٍPf@@fu+h$nF%t>3jZQ?YYuj^Vh@%hlzPuuh@%VW}
P^r&WtVWh`@%h%z3Wl8Y_^[]̋USVu+uthWh$nF%3jZFQ>YYuj^2VWVujj@%u
p@%3fGWiutW7Y_^[]̋UQS]VW3M];]ǃtQHtCHtHukF<
ud9<Ot<ourF<
t<
t< t<	u`Mj_uSuE.F<
u'3#<	t<
t~3<
~< t<Gt<gu#j_uF;uruMSu_^[F3G̋UQeVEPEPuuuEujXMQPu^̋UEM;uP;QuP;Qu
@;Au3@3]̋V!X@%Fh@%F`@%
iF%P^̋VnD @%
iF%P^̋Vwt @%
iF%P^wBn p̋UVEF"@%F!@%F @%^]̋UV=nEF#@%^]̋UVEF#@%^]̃l$Ẽl$`Ṽl$̃l$̃l$̃l$̃l$̃l$̃l$Ỹl$̃l$s̃l$Ũl$Ũl$̃l$C̃l$Ũl$̃l$̃l$*Ṽl$̃l$L̃l$̃l$C̃l$̃l$.Ũl$T̃l$C̃l$(Ũl$Ũl$nT̃l$TC̃l$̃l$?õl$q̃l$#T̃l$ñl$õl$.̃l$õl$ĩl$̃l$̃l$Sp̃l$õl$zT̃l$p̃l$W̃l$̃l$m̃l$̃l$p̃l$\̃l$:ñl$闿̃l$Ãl$R̃l$;m̃l$̃l$̃l$Tõl$ñl${S̃l$Ãl$Ṽl$̃l$)@̃l$̃l$l̃l$̃l$õl$	̃l$P̃l$õl$@̃l$o@̃l$Q̃l$l̃l$̃l$d̃l$郾̃l$ɽ̃l$@̃l$@̃l$?̃l$̃l$k̃l$Q̃l$k̃l$̃l$B̃l$ñl$>̃l$ѿ̃l$郿̃l$颽̃l$̃l$DQ̃l$Ik̃l$P̃l$̃l$T̃l$̃l$&ñl$骿̋UEewvWM3]̋UQueuEP}3	u@%̋UQueuEP}3uu@%̋UuX@%Y]̋Uu\@%Y]̋Uu@%DPuEPu6@]̋UEEhDE%EP6̋UEt,t t"tPth@hWh]̋UuuuuR6P]̋Uuuum6P}]̋UuuuuS6PW]̋Uuuu<6P4]̋WjY3_jhxE%6eQ@%eE3=ËeEEE6̋V|F^p@%~
%
̋UE~
%
]̋UVuu3#EW>&t	VuPtWP_^]̋UVW};t	P@%>_^]̋UE8uxuxuxFu3@3]̋A̋US]tAVuW{3v+U
ft fFf:'uK;sj'@YfFBB@;r3_fF^[]̋UV~uD~u>h$@%@%th#@%P@%Fh#@%@%th#@%P@%FFt
jju6Ft	u6p@%^]̋V3t
Q,@%&^̋UQVeEPEPuuuujuu0@%M tUuM^̋UQeVEPujuu4@%u`M^̋UjEPjju18@%]̋U}Vu
h@u@%DPuuju68@%^]̋USVuWمu
h@3V@%@uWujju38@%_^[]̋Uuu@%]̋j'Yf;uP4@%j'Yf;t3@3̋UEdV}&jPF:Ft3f^]q@%̋US]VL;W~n;~j~;|#?[;}jWvtFF~|:V;}3+;+RuQNAPN3fA3@3_^[]̋U(jF%uU
(jF%jXfjF%@jfjF%XjfjF%XjF%X@%jF%T@%jF%P@% jF%L@%f$jF%V34jF%u@%t
Fr3^]fjF%Mf3@̋UE0|&9~@~F~
Hw2]̋UV34h$@%u@%t
Fr3^]l$@%̋UEV3uf;MtP4@%fu^]̋UE	|
~

t u3@3]̋V64@%΋Pu^̋UQV3f;u
	SW}j'Z}f;u~4@%PӉTuPj'Yf;uPӉPEӋU+E LG;~MffGGAAHu3f;u3f;td3f6ӉNPu8S4@%U+LG ;s(~
ffGGCCHu3f;u3f3_[^	̋UV@%6u@%t@%|3@^]3̋UQ3PPPPPPPMQPPPuE<@%t3	3;E̋U .4hF%3ʼnEVuf>=Wu/VM|'P4|V(|3M_3^+̋UVutWiF%_EtA,t8t
jV $>u5DmF%tjP ;5HmF%r3^]̋U}SVWut|]u@su#2tQvuVP33R3ɅMu
uPttvSuuׅt }u|~u@W_^[]̋US]VuSSjh@%stWv~V#Yu_c^[]̋ `H̋VP>u^̋VW=\@%tP׃&YFtP׃fYf_^̋UE|;A}		]jjjh@%̋UE|;A}
I]jjjh@%̍AxtP@@%̋UEu@3]̋UVW39~~E04uG;~|_^]1̋UVuu
h^]̋UuEh'@%P]̋UuEuP}PE]̋VWу"rjY3F_^̋V6@%F^394jF%jE%)E3;u@ujP0}uu!Y;tuMMUA%Ë}ut1NL|3uuuVtj>)jE%v(E3;u@rj80}uu Y;tuMMA%Ë}ut.N|3uuuVt	jP,(jE%'E3;u@rj,0}uuc Y;tuMMA%Ë}ut.N|3uuuVt	jP$(̋VX@%Fh@%F`@%F
iF%P^"̋UVuWFP@%utj_^]̋UE@PQ]̋UE@PQ]̋UuE@uP]̋VD @%F
iF%P^CW̋UVuWFP@%u
t	jP,_^]̋UE@PQ]̋UuE@uP]̋Vt @%F
iF%P^X̋UVuWFP@%u
t	jP$_^]̋UE@PQ]̋UV"EtVY^]̋UVEtVY^]̋UV/EtVY^]̃l$̃l$-̃l$̃l$̃l$̃l$̃l$̃l$̋VW3VjYFFF5iF%ʉF(}	iF%F$_^̋VW~?t*~t
WfF(tPQV@%'_^g̋U$4hF%3ʼnEVWMhQ03;tNjM_3^"=@@%Pt;uKPVVVPPVDžׅtzs̋VW39~~&W/0YWP0|G;~Y|ڋ_3^jTE%"39Et&EuE@%PuMt:#̋UVuW~W@%NXW@%_^]̋U@4hF%3ʼnEMESVW}M3҉;;VQP@%؅uP;uz3f9t-Ƀ.t	\u3P4@%fuޅutE@%;;;+P]P@%PӋ}`'@%}𥍍+HfwZMQ+QPӋP@%@@M_^3[̋SVًs,W3;tF;tPQW~V $9>u5DmF%
;tWP ;5HmF%r_^[̋UVu@t)&}tu-u
EVuuP$^]̋U}
iF%tPP3]jAE%ى]}MQWP3;FE@,MCK;jZM3PXYEEthL6C%hA%VxjW0@!3M}
M"A%Ë]}uEu܋PQL}39KMu3ɉNMQuWP|_3EPPPEPE0EWQ0|'Ee~P7@%}FEuWPPuM@%EE;CwEu܉CWPL3̋UVut#FtPQNftjHf^]̋Uuuh &@%Q]̋Uuuhd&@%Q]̋Uuuh&@%Qv]̋UVuTu3
P^]̋V6&Y^̍A9tŐUUt	Vu60^AtM	]̋U}Vv
uF^]̋U}Vv
uF^]̀ytV̋UQQWu	9EuTR}tIeeVUR4'@%VPMQVWE9E^EtPQEtPQE2_̋U3@9Eu$ju,jF%hDF%u@%b}u,jF%O]̋H '@%^̋VND '@%^̋UuMu]jlE%@ufuND'@%	
iF%ePjlE%uD'@%eF
iF%PMN̋UEP@%]̋UVuWFP@%u
t	jP_^]̋UVuW3;u@.u>t
EPQMVu_^]̋UuMu]jE%ufuNT'@%
iF%ePjE%uT'@%eF
iF%PMNJs̋UVuW3;u@.u>t
EPQMVu_^]̋UuMup]jE%	ufuNd'@%*
iF%ePjE%ud'@%eF
iF%PMNK̋UVuW3;u@.u>t
EPQMVu_^]̋UV(EtVY^]̋UVEEtVY^]̋UVEtVY^]̃l$Ỹl$J̃Q@%̃Q@%̋US]W3;u@1Vq(9>uVh'@%jWhl@%@%|6VP^_[]̸@̋UEh'@%h'@%PQ]̋UVt'@%EtVY^]̋VV'@%FxtP@@%^̋UEt @]3@3̋UVEtV/Y^]̋UVW~W@%EPNW@%_^]jXE%~}]]
#W@%PM!3ɉM9MuQ@%>Mf94@%f8%uiPӉf8%t^j%P+PQEj PNEPtWPMt\9>t6Ӊ;ujPMt=6Ӊf8p]3ɋEMu@%E E	E@E׸@̋UQQeeVEPEPuu|;EURPQ|(EpHpQHQP@%uEPQ0EtPQu@%^̋U4hF%3ʼnEESVW}QQW3P;RSSSjPQ$9@%PhP3fE;t85@%PW֋ȋ+эU3u
s3f3ۍf9t%V4@%f\tf/tf:uf9uۍ+s
3f}PS@%@%;tPQ@%M_^3[P̋U4hF%3ʼnEESVu3ۉ`d;u3BhbA%PuꍅdPh@(@%jSh|bA%@%}d;t‹PQ뺋Wh99]j@|P`@%h0(@%VPDnP~|PVPh(@%VPWPOWQPTHLPTX\huPSSSSSSShPSSST<@%T`9`u9huPH9h0(@%VPP|PVP4h'@%VPqPiWPHTuHSSSSSSShPSSST<@%T.;u9huPHTHDrd;tPQ3_M^3[hpllRj`9]t08dPuQQ;}*d;tPQ똃8dPuQQ hh9u{̋US]3;u
W9u
E;u
@VsWM>tt7uZu
;srTw>u.S@%e>uVh4'@%wWES@%>tu6uVEE8u
}uEE_^[]jE%}uWYeejYGA%Ë}uu	E)EE_SF@%GeFSw@%EJ̋UVFW=PhF%j@P6׃u3.Fj@Pv׃tuuFvF3@_^]̋UVjuP^]̋UVjueP^]̋UVjuAP^]̋UVuW6u6hP(@%VW_^]̋UVEtVY^]̋V`(@%^̋Uuuht(@%Q]̋UuMu]̋UVuWFP@%u
t	j]_^]j>E%E3;u@j\0}uu\YȉME;t
uMMA%Ë}ut4N|3|3uuuVt	jPjhE%,E3;u@jD0}uuYȉME;t
uMMDA%Ë}ut4N]|3|3uuuVt	jPLjE%E3;u@j80}uuYȉME;t
uMMA%Ë}ut4N|3|3uuuVt	jP̋Uuu#P]j$E%
M39}	9}u}@%jD3^E}}QYEA%j3^EuuE@%D3ɉE܋}EQKYEuE
A%3uEu9}t;;t7uuuuuuuV{MЃ EPEPAu	E}ԉ}uRuJ39}YY3M
jE%M	}tL}tFu~W@%eueuNW@%M,%W	̋Ujh E%dPQ !
4hF%3ʼnESVWPEdeEu]3P@;PPu
	P;w1	 HH-?4P@%@@}PE}eA%3;tift34@%Wf\uf80u3fFPFӋfFFGGf?uӋ3ffF
3j^9gWPWWP@%SRP@%t
@+‹ESEGA%Ë39utSW	9~:Ǚ+4}P׃jY+G;|3SjWP8@%9t =jPSJ;tV;|3Md
Y_^[M3.̋UjhcE%dP\"4hF%3ʼnESVWPEdE}3ۉEW];5@%h@%WDž֋h,@%WCօtW)}3j\WWwtW;t<W0iWh@%W@%u!WVhD@%W@%P3;$W;f?=9]tTWPPE;󉝬]9]ud9t\hS3;+P(@%;t	W0j\W9EVWt>hWt#3SSVSSW1;W%f?=WjPO}uhW#j[tEjWhPqPuW W
f?{uIW@%u=ujW}
}W8EAt5SCtS9t>PP'b3;99P}tAf?{u;W@%u/juW|zW|hf?}\	J=P-tV.aSPK@ƋMd
Y_^[M3̋VW'@%bbbrjY3F_^̋UQQVuuWsV3SWEU;VsOt7}t;ujY3uu jS|9jSP3=E|%UU;VrE|}t
jv{_[^̋UQQVuuWsV3SWEU;VsOt7}t;ujY3uu jSP3|1jSE|%UU;VrE|}t
jvb_[^̋UQS39]u
@Vq,];ti9^t
Puu$;uJW~9u1LmF%S@%e?uWh4'@%vVES@%39tu?uWE_E^9u9]uPuuh<mF%EE[h(E%39^t9^t3iF%P]@%ƅDž@9^~WhiF%tif9Nu\f9F
uVWP5hmF%@%;A;9PP@%!PuF
PFPW@%9R6EPQ;É#PE|PpVF
iF%hA%,E;tPQE;tPQPQ];tPQF;t9^uP@%a̋U,jF%]jE%kE3;u@|j(0}uuY;tu3MMA%Ë}ut4ENF$|3uuuVt	jQ̋U}uuuj]]̋U}uuuj]]Q̋U}uuuj]]̋U =4hF%3ʼnEEVWQP3ɉf;SP3;|~P;PW;|Pj{Xf;9]tRjuP}MjjPΉ[@%NjM_3^SSPz;|͋3f;%뷿	̋UVW}u@%39FuuRN~tvVP3_^]̋U39At9Au]]̋U}tuu|]̋USu{t~{VWtb}u\E0@%SJExHKkMLEME;uMCu>H03t+MmJM}u[uuSP(_^[EkDM3̋UVu~tu(Fu$u uuuuPQ,^]$̋Uuuh<mF%|
iF%t5hmF%]̋UiF%tЅ|uuh<mF%T]̋UuDF%uuo]̋UuDF%uuuun]̋U칸DF%]	̋UuDF%uu]̋UuDF%uuuu]̋UDF%]̋UuDF%uu]̋UuDF%uuuu]̋UDF%]ŐUuEF%uuX]̋UuEF%uuuuW]̋UEF%]̋Uu(EF%uu]̋Uu(EF%uuuu]̋U(EF%]h$E%E}]3ujVPE@%;u	SWP@%;u
W|@%;tW@%G;s39t{PEWEEA%Ë39uAWWVj@%;4u3fB@%9O?jTE%eEMejuPuNM`jTE%`3EE9Et&9Et!MjuuuMP
MDWjTE%3EMPuEEPuMjTE%3EE9Et%9Et MPuuukM
MWn̋Uh
4hF%3ʼnEESVuW}؅}LËM_^3[tvPPuQP3;}뫋=hmF%VPW@%;u菽;uz룍PhP-;tS@%;tej"XfPhPruF@9P@%j"Yf3fPh(@%P;-Ph(@%Pf;h(@%PP9]t
&̋Ud
4hF%3ʼnESVuW}؅}YËM_^3[tvPPuQP3;}뫋=hmF%VPW@%;u蜻;uz룍PhP:;tS@%;tej"XfPhPuS@9P@%j"Yf3fPh(@%P;-Ph(@%Ps;h(@%uPP9]t
̋UQSY,V3WMt=;t7ut	jY3ujS|,jSP3|$;uͅ|uMu_^[̋UQSY,V3WMt=;t7ut	jY3ujSP32|$jS|$;uͅ|uMu_^[jj,jF%jj,jF%r̋U]	̋U]̋Ujujeh,jF%]̋Ujujuh,jF%]̋UQQSVW=@%3VVVVjuVSu;ƉE~Pj@@%E;tVVuPjuVS׋E_^[̋U}tu 9Et33@]̋UU3@tVItHbt8t%ItIt	E3@M5M*MMM	M]̋UfEf r
f;v*f;r
f;vf	tf
t
f
t33@]̋UE(f;wM$f;w3@3]̋UE;I;U&t<~&t*W]d|f~cijujXM3ع0;%;t~=.=/uj=1t;t~=~3@=YM=X};*=]==~c=-tHHtHtv1#;GC==~(==~==!3===j̋UQQSVWu3u]hh)@%j]n$};uWx3FVhkF%@%uuuuNEPSuu!$;t1=stt=	t;~
%
	E39]tu%9]thkF%l@%;uVuh )@%Vj $7Vuh(@%Vj$_^[̋UVWuuuh)@%jn#jkF%W@%uuuGEP3VuuT#;t1=r&tt=	t;~%
۾Wl@%Vuh)@%VjU#_^]̋UQQSVWu3u]h*@%j]"};uWx3FVhkF%@%uuu.uNEPSuug";t1=stt=	t;~
%
	E39]tu#9]thkF%l@%;uVuhP*@%Vjf"7Vuh*@%VjN"_^[̋UVWuuuh+@%j!jkF%W@%uuBuGEP3Vuu!;t1=r&tt=	t;~%
۾Wl@%Vuh*@%Vj!_^]̋UuEjdpLjjh4+@%n]̋UuEjdpLjjh`+@%O]̋UuEjepLjjh+@% ]̋UuEjepLjjh+@%]̋UuEjfpLjjh+@%]̋UuEjfpLjjh,@%]̋UuEhpLjjhD,@%;]̋UuEhpLjjhp,@%]̋UuEjpLjjh,@%]̋U}wErw	M3E]̋UQeSVh-@%jo]YYuWPh -@%Pj'u3f9FDu"PVh,@%Vj^[WjkF%W@%EPvDDu
EfWl@%_t6stt	t~뀾v3őUQeW}uWE3S]f9CDu/VjkF%V@%EPsD%EVfl@%3^[_̋UQeS]t3} ftWqVWjkF%V@%EPEj pDVl@%Eft5s"t!t	t~	3_^[̋U} tWcVWjkF%W@%Ej pDnWl@%t5s"t!t	t~	3_^]̋U}t2}t,VjkF%V@%uEupDR#Vl@%3^W]̋UuEhpLjjh-@%]̋UuEhpLjjh-@%]̋UuEHLhQpPQh.@%]̋UuEHLhQpPQh0.@%c]̋UQeVuuW13fEHDURh#QpHQhT.@%|
Mf^̋UuuuuwE]̋UVWjkF%W@%uvHvD:uCf}PvD@=stt=	t~
%
Wl@%_^]̋UuuuucE]̋UuEHLhQpPQhx.@%]̋UuEHLhQpPQh.@%4]̋UuEHLjQpPQh.@%]̋UVEP.@%^].@%̋UV.@%EtVY^]̋UVu.@%^]̋US]VWSuhX/@%jE$euWR EURu3U3SRP|u$EhH/@%PEtPQVh.@%Vj_^[] ̋UuEjpHpPpLh/@%m]̋UuEhpHpPpLh/@%]̋UuEhpHpPpLh0@%c]̋US]VSh\0@%j^0t"WjkF%W@%SWF4l@%_f4jh 0@%jj^3[]̋UuEh1pLpTpPh0@%]̋UuEh1pLpTpPh0@%\]̋UuEjpLpTpPh0@%+]̋UVuu3W}tWPtPQ>_^]̋USVh1@%j]YY^0t"WjkF%W@%SfWF4l@%_f4jh0@%jj^3[]̋UuEjpHpPpLh$1@%a]̋UEjh01[@]̋UuEhYpHpPpLh<1@%]̋UuEhXpHpPpLh\1@%]̋UuEhpHpPpLh|1@%]̋UuEhpHpPpLh1@%]̋UuEjpHpPpLh1@%b]̋UuEjpHpPpLh1@%9]̋Wj3Yz1@%!B_jhE%3}NĦF*EE3@Ëe3}H%	@E̋V~tFP@%f^jhE%r3EE9AtQ@%4E@+EE3@Ëe3}H%	@EEE[̃yt
Q@%̋USVh<2@%j]YY^0t"WjkF%W@%S
WF4l@%_f4jh1@%jj^3[]̋UVu&^]̋UuEh4'@%P]̋Uuh`2@%P]̋Uuhp2@%P]̋UuEh2@%P]̋UuEh2@%P]̋UuEh2@%P]̋UuEh2@%P]̋UuEh2@%P]̋V9Z2@%
iF%P^̋VZ,3@%
iF%P^̋UMw3kQjY3sjM]h4E%EP̋UEVtPQ^]̋UEyt]̋UVqAr9UrrI;Mv2^]̋UMw
3QY3sjMh4E%EP̋Uuuuu']̋Uuuuu]̋U4hF%3ʼnESVW}3;E;f9yj^MQMQSMQSPS]]]u]D@%p@%zt1t";t=	t;3%
$uj@@%EPEjYRPZ}
u3;t8;5qF%w0qF%D0;r#PtFj;tStckuF;rPqF%;t	Heapu;tJ;tFMQMQWMQPuSD@%u1p@%tt=	t;~
%
EE;t?HeapuWqF%9]t;t	P@%EWe_^[M3̋UEu3f
uxtW]ftftfuxfufx̋UQS]W3};tU}rO9}vJV4{ft?VȅuEH;sD{PV3utGGG;}rE
^E_[̋UQmF%t(uM0uh3@%j
u@%VE Pu}WjkF%W@%9uuWZuuruDjuuUt3=r*tt=	t~%
۾3Wl@%_Vuh3@%Vj^(̋UQmF%t(uM0uh,4@%j&u@%}Wtf}t`VjkF%V@%uuuUVl@%^t3s4tt	t~	3WWuh3@%Wj_̋UQQSVWu3h4@%j}}g
@%kF%9} } uuu
u%jVӍEPu$Wu UV}l@%uh4@%jYY`t3sTtt	t~>0)u(juuuuuwu
}!W}tjVju
Vl@%}uuh4@%jKWuh\4@%Wj_^[$̋UQVWuuh5@%j
}eu
W'jhkF%@%uuuWEPjuut1=stt=	t~
%
u@%t3}tu6
hkF%l@%mF%tCuVuhH5@%Vj)7M0Vuh5@%Vju@%_^̋UmF%SVW}t)WMl0uuh5@%j
u@%jkF%S@%uuWuXW@%PWuDWPuu
t1=stt=	t~
%
	3Sl@%Vuh5@%Vj
_^[]̋U 4hF%3ʼnES3f}	VWE]]]]]Puu/ENjEPVE;t:=s+=	;~
%
E39}EPu@%E;E@;MQjYRP}Eku};t<;5qF%w4qF%D0;r'PtFe;tEStcku.F;rPqF%E;HeapE9}E3҉}9xE$Efu*@t(ȍYf1AAfu+]tMEfu.EB;PrE}uPuuu(/EWk}uPuu˛}uPuuכE؅t8s"t"t	t~]
Ee}t	u@%Et8HeapuPqF%Ee_^[M3̋Vh46@%jsF(YYtPQF$tPQN^顢̋UVh6@%j7}YYu@M(9tu@Vh`6@%Vjk^]̋UVh,7@%j}YYu@M$9tu@Vh6@%Vj^]̋UuEjpLjjh\7@%S]̋UuEjpLjjh7@%M]̋UuEjpLjjh7@%]̋UuEjpLjjh7@%]̋UuEjipLjjh8@%]̋UQmF%t(uM>0uhx8@%ju@%S]L;WtnEP~u_VjkF%V@%SWuuVl@%^t3s-tt	t~	3Wh08@%Wjx_[̋USVh9@%j]{LYYuiEPuZWjkF%W@%sLYWl@%_t3s-tt	t~	3Vh8@%Vj^[]̋UVWh9@%j<YYjhkF%@%}WLu^EPuOPR5u
PwLt1=stt=	t~
%

gL3hkF%l@%Vh@9@%Vj_^]̋UuEupLhe C%h9@%$]̋UEVWuupLh!C%jjh9@%_^]̋UEVWuupLhD%jjh:@%_^]̋UVWuht:@%jjkF%W@%EPLuWPEPuAPuR{t1=stt=	t~
%
	3Wl@%Vh0:@%Vj_^]̋US]VWSh:@%j1N,M|aS%t*tt=	t~
%
,%jkF%W^L@%vLWFPl@%3MWh:@%Wj_^[]̋UuEHLjQpPQh;@%Z]̋UuEHLjQpPQh,;@%S]̋UuEHLjQpPQhL;@%
]̋UuEHLjQpPQhh;@%]̋UuEHLjQpPQh;@%]̋UuEHLjQpPQh;@%]̋UuEHLh QpPQh;@%g]̋UuEHLh QpPQh;@%]]̋UuEHLh!QpPQh<@%]̋UuEHLh!QpPQh8<@%]̋UQMh4E%EP̋UEHLVWuuQhyD%pPQhT<@%w_^]̋UEHLVWuuQhSD%pPQhp<@%<_^]̋UEHLVWuuQhmD%pPQh<@%_^]̋UEHLVWuuQhD%pPQh<@%_^]̋UEHLVWuuQhD%pPQh<@%_^]̋USVWuh,=@%jjkF%S@%uFLuWfvPPuREP_uCPuvL!t1=stt=	t~
%
	3Sl@%Wh<@%Wjn_^[]̋UQmF%S]VWt#SMX0h=@%ju@%ue=@%ttSׅvm3MQjfE@DSjDQjPt<=t1=stt=	t~
%
.'3f3SPVh=@%j"W}t
juVhX=@%Vji_^[̋UmF%VWt%uMS0h,>@%ju@%3fEEuu쥥PVh=@%Vj_^̋UmF%VWt%uM0h>@%jCu@%3fEEuu쥥PVhh>@%Vjp_^̋USVWu}Wh8?@%jN(Mc؅|;EFH~Lt jkF%S@%W}SFPl@%fPM3Sh?@%Sj_^[]̋UuEjpHpPpLhp?@%$]̋UuEjpHpPpLh?@%]̋UuEjpHpPpLh?@%]̋UuEjpHpPpLh?@%]̋UuEjpHpPpLh?@%]̋UuEjpHpPpLh@@%x]̋USVWuhd@@%j[jkF%S@%u~HuWhvPvLuREPuCPuvHt1=stt=	t~
%
	3Sl@%Wh(@@%Wj*_^[]̋USVWu}Wh@@%jN,M؅|;EFL~Pt jkF%S@%W6SFTl@%fTM3ISh@@%Sj_^[]̋UuEjpLpTpPh@@%]̋UuEjpLpTpPhA@%]̋UuEjpLpTpPh(A@%]̋UuEjpLpTpPh<A@%]̋UuEjpLpTpPhPA@%9]̋UuEjpLpTpPhpA@%1]̋UuEh-pLpTpPhA@%]̋UuEh-pLpTpPhA@%]̋UuEh.pLpTpPhA@%]̋UuEh.pLpTpPhA@%]̋UuEh0pLpTpPhB@%4]̋UuEh0pLpTpPh$B@%)]̋USVWuh|B@%jjkF%S@%u~LuWhvTvPuREPuCPuvLt1=stt=	t~
%
	3Sl@%WhHB@%Wj_^[]̋U}Vu
&^]u@%uh̋UQVWhB@%jYYN(M|@ES]FH^Lt jkF%W@%SWFPl@%fPM3[WhB@%Wj_^̋UuEjpHpPpLhB@%[]̋UuEjpHpPpLhC@%S]̋UV9Et)P@%}tu@%u
h&^]̋UuEjpHpPpLh$C@%]̋UuEjpHpPpLh8C@%]̋UuEjpHpPpLhLC@%s]̋UuEjpHpPpLhlC@%k]̋Vu^P@%P6@%^̋UEVWuupHhD%pPpLhC@%_^]̋UEVWuupHhD%pPpLhC@%_^]̋UEVWuupHhmD%pPpLhC@%c_^]̋USVWuhD@%jvjkF%S@%u~HuWhvPvLuREP6uCPuvHt1=stt=	t~
%
	3Sl@%WhC@%WjE_^[]̋Q@%̋UmF%VWt%uM 0hD@%ju@%3fEEuu쥥PQ|Vh@D@%Vj_^̋UQVWhE@%j)YYN(M|@ES]FH^Lt jkF%W@%SWFPl@%fPM3[WhD@%Wj5_^̋UuEhpHpPpLh0E@%q]̋UuEhpHpPpLhTE@%f]̋UuEjpHpPpLhxE@%]̋UuEjpHpPpLhE@%]̋UuEjpHpPpLhE@%]̋UuEjpHpPpLhE@%]̋UuEhpDpLpHhF@%u]̋UuEhpDpLpHh,F@%j]̋UuEhpDpLpHhPF@%]̋UuEhpDpLpHh|F@%]̋UuEhpDpLpHhF@%]̋UuEhpDpLpHhF@%]̋USVWuhHG@%jjkF%S@%u~HuWhvPvLuREP]uCPuvHt1=stt=	t~
%
	3Sl@%WhG@%Wjl_^[]̋UQVWhG@%jYYN(Mf|@ES]FH^Lt jkF%W@%S|WFPl@%fPM3[WhxG@%Wj_^̋UuEjpHpPpLhG@%#]̋UuEjpHpPpLhG@%]̋UuEjpHpPpLhG@%]̋UuEjpHpPpLhH@%]̋UuEjpHpPpLh$H@%]̋UuEjpHpPpLhDH@%w]̋USVWuhH@%jZjkF%S@%u~HuWhvPvLuREPuCPuvHt1=stt=	t~
%
	3Sl@%WhdH@%Wj)_^[]̋U4hF%3ʼnEmF%SVWt>uMuMu60hI@%j`5@%uu֋Eu3}};jhkF%@%N$؅FLt	Pb!~LvTvPu
g]S@%u
3ۉ]]t=qF%Er3qF%r&PgtjXGątStckEu*jqF%EtHeapEu
EE3ۃ=qF%r0qF%r#PtjXڲ;tStckujqF%;tHeaptESSSSSEPuWjuuuv\vXvDvTvP荎;t6=s+UL=	A;~
%
EFL]hhI@%jWYYN$Et8HeapuPqF%t?HeapuWqF%hkF%l@%EuShI@%Sj0ShH@%SjÍe_^[M3̋U0mF%SVW}t#WM^0hTJ@%ju@%EP33jhkF%@%9]uWyuvTvP6u`tf9tuFXEЋF\jESEPvD=t1=stt=	t~
%
	3EPhkF%l@%VhJ@%Vjl_^[̋U0mF%SVuWt#VMT0hJ@%ju@%EP3)jkF%S@%9}uWytf9>tuvTvP uUuFXEЋF\jEWEPvD2t1=stt=	t~
%
	3EPSl@%VhJ@%Vje_^[̋U8mF%VW}t9uMLWMA60hK@%j5@%uuSE3P]	jhkF%@%u@%9]uvTvPu{tf9tߋFXEȋF\E̍EPuESPvDӟ3;t1=stt=	t;~
%
 M9uu3fWEPohkF%l@%E[uVh`K@%VjPVhK@%Vj_^̋UtSV5@%Wu3EEEE֍EP֍EPjhkF%@%O,M؅E.w\wX迾u
E3;tf9tEG`EGdEEPEPuEPEPuwL<;t9=s+=	;~
%
EP֋EE܍EPjj]@%E;3]9]vJE4@%EP@%jXfE̍EPEPuu@%؅u'EG;}r} fEEEču3ۉ]hkF%l@%}tM}tu}t	u@%EP@%EPS_^[̋UQmF%t%uM0hPL@%jlu@%MVujjuVhL@%Vj^̋USVWh`M@%juYYkF%uW-jS@%}w\wX蘼uTuA!>3Sl@%mF%t@t<6M?0WhL@%Wju@%)W@%u믅tWhL@%Wj_^[]̋UuEhpLp\pXhM@%]̋UuEhpLp\pXhM@%]̋UuEhpLp\pXhM@%]̋UVEP@%uEhpLp\pXhM@%EP@%^̋UuEhpLp\pXhN@%P]̋UuEhpLp\pXh<N@%$]̋UuEhpLp\pXh\N@%]̋UuEhpLp\pXhN@%]̋UuEhpLp\pXhN@%]̋USVWh,O@%jYYjhkF%@%]sXsT4u3K(M|"ujjsH5MUhkF%l@%VhN@%Vj_^[]̋UQmF%SVWt%uM0hO@%ju@%jhkF%@%]sXsTzu4K(MU|#ujusHzMhkF%l@%Vh\O@%Vj_^[̋USVWhP@%jSYYjhkF%@%]sXsTu3K(M|"ujjsHMhkF%l@%VhO@%VjL_^[]̋UuEhpHpXpTh<P@%]̋UuEhpHpXpTh`P@%|]jE%hP@%j\YYN,ME]FLEFP^Xt jkF%W@%SWF\l@%f\$nF%SjT<YYEet	E3MF`uZ2|MSjPYYEEt	7E3MFdt|N`Nd3M{WhP@%WjĤ̋UQmF%t%uM0h Q@%j*u@%EMVuPjumF%tVhP@%VjW^̋UjhkF%@%mF%thQ@%jYY}Su@JVu@%uvTvP6u&W~$؅|uvDOϋe_^hkF%l@%mF%tShXQ@%Sj3[]1@%̋V2@%F
iF%P^̋V,3@%F
iF%P^̋UVuWFP@%u
t	jP4_^]̋UVkEtV̚Y^]̋UVoEtV覚Y^]̋UUVp2p~uVrpI^;QuAJ;QuAPB]̋UEHyt]̋Uuuh3@%Q]u]̋Uuuhd3@%Q>u]jE%E}3;u@gj(7EuuΙY;t
VMM!!B%Ë}ut!Nl؅|3ۅtjP43]7}jE%赠}3;u@gj(7Euu>Y;t
VMM!B%Ë}ut!Nk؅|3ۅtjP43]7̋USVu3WWtv}|$3ۋ֋Džt8t@Juu3ɋ+3Ʌ|?+j9[t(+u+tt	@JOuuHz_^[]̋UM3tvW|9SVW}EPuqVW3@%|;wu
>>z_^[]̋tPQ̋UyEArI]̋UEV0`^]̋V38PtRRRRR蘣^ËH8QuQL;Hu
@8Pt^̋Uuuuuu]̋Uuuuuu]̋U,4hF%3ʼnEmF%SVWu3ESuj@ƅ@%@f9u
vu鋅fuh$S@%SW$fu
vhS@%fuFPhS@%SWpfu-vA0hR@%SW@%=f	u7hR@%SWPƅ uuhR@%SW_#tP@%@t
HHt3Ht)tHtthR@%!hR@%hhR@%hDR@%h$R@%hR@%SWu;}fPjVb9tP@%;@PhQ@%VPHPSW9fuWxt5pI0hQ@%VP@%UhQ@%hQ@%VP7fu
phQ@%fu@PhQ@%hQ@%VPm|PStt@%tt@%NjM_^3[ՙ̋U4hF%3ʼnEESVW3;u
W89}tH@%j^EPEPWEPWu}W}}u}p@%zt1t";t=	t;%
EPj@@%EEPEjYRPK}
]ut8;5qF%w0qF%D0;r#P荤tF]tStckuF;rPqF%t	Heap}EMtEPEPWEPuujӅu4p@%=	t|Ez%
}tS6Pj@@%]tL}uvWh8S@%VPbGh0S@%VPQGE}"3@%#EMeEtG8HeapuPqF%}t	u@%Ee_^[M3薗̋UQSW}3;u
WVu;u
WEPV]]ؠu@5p@%փt)փt"=	t;%
EPEPjjjSu]H@%M;tT;uPIA;tF9uBHf@@f;u+tVj@@%;tMIVqPȖ$EWjV;ÉE}WSVE9]t	uL@%9]t	u@%E^_[̋VWhDS@%j/~LYYtjkF%W@%jvLWl@%~,y1@%l_N^:l̋VWhpS@%j~LYYtjkF%W@%jvLZWl@%~,1@%
_N^kjE%mF%t%uM0hS@%jUu@%3E]E;u@=UR3fE܋EuuܥPQ||ESh<@%PVhS@%VjUEMtPQ7jE%7mF%t%uM+0hLT@%ju@%3E]E;u@@UR3fE܋EuuܥP|ESh<@%PVhT@%VjEMtPQvjE%vmF%t%uMj0hT@%ju@%3E]E;u@QUR3fE܋EuuܥP|!EjPQPuESh|@%PVhT@%VjEMtPQ褔jE%褓mF%t%uM蘹0hhU@%ju@%3E]E;u@cUR3fE܋EuuܥP|3EeURPQLu9EtESh|@%PVh U@%VjEMtPQjE%mF%t%uM贸0hV@%j u@%3!EfE܋]!EMQuuܥS3;|LEUR}PQL;u6E;t	}PQ9}tuuܥSVhU@%VjEMtPQӒjE%ӑmF%t%uMǷ0hV@%j3u@%3E]E;u@@UR3fE܋EuuܥP|ESh@%PVhHV@%Vj0EMtPQjE%mF%t%uM0h(W@%jru@%3E]E;u@@UR3fE܋EuuܥP|ESh@%PVhV@%VjoEMtPQQ̋VWhpW@%j~HYYt.jkF%W@%vPvLVt
jvHHWl@%~(1@%_N^e̋VWhW@%j_~LYYt.jkF%W@%vTvPt
jvLWl@%~,蚴1@%荴_N^[e̋VWhW@%j~HYYt.jkF%W@%vPvLzt
jvHlWl@%~(,1@%_N^d̋UVuW>tu
h\Y_^]jE%ҎmF%t%uMƴ0hhX@%j2u@%]3;uh X@%hYY@{3ɉfM܉EURuuܥEEP|!EjPQP|ESh|@%PVhW@%Vj
EMtPQjE%mF%t%uM0h8Y@%jOu@%]3;uhX@%h+YY@3ɉfM܉EURuuܥEEP|3EeURPQLu9EtESh|@%PVhX@%VjEMtPQjE%mF%t%uM0hY@%jWu@%3!EfE܋]!EMQuuܥS3;|LEUR}PQL;u6E;t	}PQ9}tuuܥSVhxY@%Vj(EMtPQ
jE%
mF%t%uM0hPZ@%jju@%3E]E;u@=UR3fE܋EuuܥPQx|ESh@%PVhZ@%VjjEMtPQLjE%LmF%t%uM@0hZ@%ju@%3E]E;u@=UR3fE܋EuuܥPQt|ESh@%PVhZ@%VjEMtPQ莋̋VWh[@%j
~HYYt.jkF%W@%vPvL蓝t
jvHWl@%~(E1@%8_N^`̋VWhH[@%j~HYYt.jkF%W@%vPvL%t
jvHWl@%~(׮1@%ʮ_N^_j2E%貉u3hd[@%Gj}~LYYt1WkF%W@%v\vX觜t
jvLfLWl@%FTt
P4fTN`tNdt~,,1@%N^̋UQVWh[@%j}3YYu9uuW`S]9sXu@OEP;u|0uV蘯}t	jP43sX}
t	jP4[Wh[@%Wji_^̋UQVWhT\@%j3YYu9uuW^S]9s\u@MEP;u|.uV}tjP4s\0}
t	jP4[Wh\@%Wj_^̋UV1@%豬EtV~Y^]̋USVWuuك#]_^[]̋UuMu]̋UuMu]̋UUBV0r0~uVrpI^;QuAJ;uAB]̋VFtPQ6@%^̋U;Et	uQ8]̋UVuuN^]̋UAVpWuN趩tv6~t_^]̋S3Sj蚭;tH;tH;tX@[̋U}Vt&~r }FW8vuWjPW~Y_uF^]̋UVW}WWN_^]̋UVW}9~sF+;EsE}v=NSVrڃr+E]PS+QRF+EPF[_^]jRE%P}uvu%3j[OMmU;sjX+;w4
ejFP(EeEj@PEެE==B%Ë}u]}vrGGuPFPS jjeuω_wzMM3Vj@VV菅̋U@SVW}Wuh<]@%j訾5@%3ۃEP]]]]}]֍EP9],u
@u,3FVhkF%@%u9]u
Wuuu
EP(؅EPW؅EPWҖEEP3Wuu;t7=st!t=	t;~
%
h^E+,HH|Ht%H9jXfEЋE98t3fEE3ۉ]EEPVj}@%E;t]9]t'EPSS@@%;tnh]@%jYY3939]E}]tEPG4uf}3CtEPG4ctru@%EP@%jXfEEPEPu}@%؅4uE@%!]EF;0h fEЋEep@%=y=	nUZu3}EEPjj@%E;;}}9>vSFM4@%EP@%jXfEEPEPu}@%؅uUEEE;r3 fEЋE}&jXfEЋEu@%;jYfMЉE؋},uХ3ۃ}tu}t	u@%}t	u@%EP@%}t
EPD@%}thkF%l@%mF%tOu,t4jM,0Suh\@%Sj2u,@%Suh\@%Sj_^[(̋UVuWt8jMW0uuuh]@%j]u@%uuuhd]@%j:_^]j$hXE%9mF%tu,uuh]@%o3}܍EP@%jhkF%@%9}u
WZuuxu
AU,;u
@0EP覩;E,Puf;}E,+tbHt<t
WjWREP@%u;3f}E܍EjWREP@%u;EԉE6jWREP@%u;u}u@%P]SDu;ua]EuWuu;t1=stt=	t;~
%
!33@ËeuEEP@%hkF%l@%Vuh]@%VjƸ(j$hxE%TmF%tu4u uhD^@%3ۉ]39]E EEP@%jhkF%@%9]u
Wtuu胐u
[9]4u
@L;u9]tōE$P誧;0EPu j;]jSu4EP@%u;tEEEHHtsH_EPu EPuuEԅuG5p@%փt%փt=	tu%
;uvE;tu@%Pu;uUEPSuu;t%U;t#=stt=	t;U33@ËeuE3ۍEP@%9]t	u@%hkF%l@%Vuh^@%Vj詶}0̋UVWu,uuujhD%uuu_^](̋UVWu,uuuh2D%juuuv_^](̋UVWEP@%jXfEE,EEPuuuuuuC_^(̋UVWEP@%jXfEE,EEPuuuuuu/_^(̋VWNOQ~,h`^@%jYYfL_^̋UEVWu uupLjjh^@%_^]̋UVWEPEuu pLjjh^@%E_^](̋UVWEPEuu pLjjh^@%_^](̋UVWEPEuu pLjjh^@%_^](̋UVWEP@%uEuhpLjjh(_@%EP@%_^̋UVWEP@%uEuhpLjjhX_@%EP@%_^̋UVWEP@%uEuhpLjjh_@%HEP@%_^̋UVWEP@%uEuhpLjjh_@%EP@%_^̋UE@LVWuuhPjjh_@%u_^]̋UE@LVWuuhPjjh`@%u_^]̋UE@LVWuuhPjjhL`@%u_^]̋UE@LVWuuhPjjh`@%Qu_^]̋UE@LVWuuhPjjh`@%u_^]̋UE@LVWuuhPjjh`@%u_^]̋UE@LVWuuhPjjha@%u_^]̋UE@LVWuuhPjjh8a@%Uu_^]̋UVWEP@%uEuhpLjjhha@%EP@%_^̋UVWEP@%uEuhpLjjha@%QEP@%_^̋UE@LVWuuhPjjha@%u_^]̋UE@LVWuuhPjjha@%u_^]̋UE@LVWuuhPjjh0b@%u_^]̋UE@LVWuuhPjjhdb@%u_^]̋VWN?K~,hb@%jޮYYfL_^̋UEHLVWu uuQpPQhb@%_^]̋UEHLVWURuu QpPQhb@%3_^](̋UVWEP@%uEHLuhQpPQhb@%QEP@%_^̋UVWEP@%uEHLuhQpPQh$c@%EP@%_^̋UVWEP@%uEHLuhQpPQhTc@%EP@%_^̋UVWEP@%uEHLuhQpPQhxc@%OEP@%_^̋UEHL@PVWuuhQPQhc@%u_^]̋UEHL@PVWuuhQPQhc@%u_^]̋UEHL@PVWuuhQPQhc@%u_^]̋UEHL@PVWuuhQPQh d@%u_^]̋UEHL@PVWuuhQPQhPd@%u_^]̋UEHL@PVWuuhQPQhpd@%u_^]̋UEHL@PVWuuhQPQhd@%u_^]̋UEHL@PVWuuhQPQhd@%u_^]̋UEHLVWURuu QpPQhd@%_^](̋UEHLVWURuu QpPQhe@%_^](̋UVWEP@%uEHLuhQpPQh$e@%EP@%_^̋UVWEP@%uEHLuhQpPQh@e@%/EP@%_^̋UEHL@PVWuuhQPQh`e@%u_^]̋UEHL@PVWuuhQPQhe@%u_^]̋UEHL@PVWuuhQPQhe@%u_^]̋UEHL@PVWuuhQPQhe@%u_^]̋VWNE~(輒hf@%j踨YYȒfH_^̋UEVWu uupHpPpLh4f@%_^]̋UVWEPEuu pHpPpLhPf@%_^](̋VWNiD~,hlf@%jYYfL_^̋UVWEP@%uEuh,pLpTpPhf@%EP@%_^̋UVWEP@%uEuh/pLpTpPhf@%EP@%_^̋UEVWuuh,pLpTpPhf@%`_^]̋UEVWuuh,pLpTpPhf@%t_^]̋UEVWuuh/pLpTpPhf@%_^]̋UEVWuuh/pLpTpPhg@%_^]̋UEVWu uupLpTpPhg@%^_^]̋UVWEPEuu pLpTpPh,g@%_^](̋UVWEPEuu pLpTpPhDg@%_^](̋UVWEPEuu pLpTpPh`g@%_^](̋VWNA~(Hh|g@%jDYYTfH_^̋UEVWu uupHpPpLhg@%8_^]̋UVWEPEuu pHpPpLhg@%_^](̋UVWEPEuu pHpPpLhg@%_^](̋UVWEP@%uEuhpHpPpLhg@%yEP@%_^̋UVWEP@%uEuhpHpPpLhh@%"EP@%_^̋UVWEP@%uEuhpHpPpLhDh@%EP@%_^̋UVWEP@%uEuhpHpPpLh`h@%tEP@%_^̋UEHHPPV@LWuuhQRPhh@%;u_^]̋UEHHPPV@LWuuhQRPhh@%u_^]̋UEHHPPV@LWuuhQRPhh@%u_^]̋UEHHPPV@LWuuhQRPhh@%u_^]̋UEHHPPV@LWuuhQRPhi@%/u_^]̋UEHHPPV@LWuuhQRPh4i@%u_^]̋UEHHPPV@LWuuhQRPhTi@%u_^]̋UEHHPPV@LWuuhQRPhti@%u_^]̋UVWEPEuu pHpPpLhi@%_^](̋VWN=~(變hi@%j誠YY躊fH_^̋UVWEP@%uEuhpHpPpLhi@%EP@%_^̋UVWEP@%uEuhpHpPpLhj@%8EP@%_^̋UVWEP@%uEuhpHpPpLh(j@%EP@%_^̋UVWEP@%uEuhpHpPpLhLj@%EP@%_^̋UVWEP@%uEuhpHpPpLhtj@%3EP@%_^̋UVWEP@%uEuhpHpPpLhj@%EP@%_^̋UEVWuuhpHpPpLhj@%_^]̋UEVWuuhpHpPpLhj@%_^]̋UEVWuuhpHpPpLhk@%._^]j|E%GcEP@%uEeuhpHpPpLh4k@%/EP@%c̋UEVWuuhpHpPpLh\k@%_^]̋UEVWuuhpHpPpLh|k@%_^]̋UEVWuuhpHpPpLhk@%_^]̋UEVWuuhpHpPpLhk@%/_^]̋UEVWuuhpHpPpLhk@%_^]̋UEVWuuhpHpPpLhl@%_^]̋UEVWuuhpHpPpLh8l@%+_^]̋UEVWuuhpHpPpLh`l@%?_^]̋UEVWu uupHpPpLhl@%_^]̋UVWEPEuu pHpPpLhl@%_^](̋UVWEPEuu pHpPpLhl@%_^](̋UVWEPEuu pHpPpLhl@%_^](̋VWN6~(苄h$m@%j臚YY藄fH_^̋UVWEP@%uEuhpHpPpLhDm@%lEP@%_^̋UVWEP@%uEuhpHpPpLh\m@%EP@%_^̋UVWEP@%uEuhpHpPpLhtm@%EP@%_^̋UVWEP@%uEuhpHpPpLhm@%gEP@%_^̋UVWEP@%uEuhpHpPpLhm@%EP@%_^̋UEVWuuhpHpPpLhm@%_^]̋UEVWuuhpHpPpLhm@%_^]̋UEVWuuhpHpPpLhm@%b_^]j|E%{]EP@%uEeuhpHpPpLhn@%cEP@%^j|E%]EP@%uEeuhpHpPpLhn@%EP@%]j|E%\EP@%uEeuhpHpPpLh0n@%EP@%^]̋UEVWuuhpHpPpLhLn@%	_^]̋UEVWuuhpHpPpLh`n@%_^]̋UEVWuuhpHpPpLhxn@%_^]̋UEVWuuhpHpPpLhn@%_^]̋UEVWu uupHpPpLhn@%_^]̋UVWEPEuu pHpPpLhn@%f_^](̋UVWEPEuu pHpPpLhn@%-_^](̋UVWEPEuu pHpPpLhn@%._^](̋VWNN1~,~ho@%jYY~3FLFTF`FdFX_^̋U4hF%3ʼnEmF%S@%VWtcju MojuMEVuMM160ho@%jQuuuӋ5@%3EP}܉}}}}Љ}}ԉ}؉}֍EP֍pP֍EP֍EPjhkF%@%uN,Ms~;0FT;t	P~Tv\vX]lu
f}	EPuQuَ؅39}bEPu@%;E@;u9WjEP͚;tB%
|MQjYRPQs}
^]3u;t>;qF%w6qF%D;r)PctC^\u;tStckuu/C;r PqF%u;sHeapu;_E3҉}9xvZ}M<Efu(@;t*ȍY]fAAf;u+MtE	f;EEB;Pr9}u}u}f} 	EPu ?؅G3EPu@%;.Eԋ@E;hMQjYRPq]3u;t>;qF%w6qF%D;r)P5btC[u;tStckuu/C;r PqF%u;Heapu;39}3ۋEf;tnfuL@UWE P芘;==	;fa@A;MrM;Df}0	u8eEPu0Nj؅ fEEEf}@	u8eEPu@舋؅ fEEE{f}P	u>eEPuPI؅Q fpEx6f}`	u8eEPu`؅ fEEEf}p	u8eEPupŊ؅ fEEE]et@;=qF%w8qF%4;r&P_tXetEStcku3;rPqF%EHeapE}3}pf9Et}u`f9EtuUPf9ptpM@f9EtMf9EE0tEWVRuQPEPuuSuuuvdv`vLv\vX23;bEЉFThPjj}Љlh@%E;3};vFXP@%jXfXE`XPEPu@%؅u@EF;urHP@% fHE؉PH3ۉ]إMx5@%39}tu9}tu9}tuʀ9}t	u@%EܾHeap;t90uPqF%E;t90uPqF%E;t90uPqF%5@%EP֍EP֍pP֍EP֍EPhkF%l@%mF%t?9t7jMȥ0Sho@%Sju@%Sh@o@%SjÍ<_^[M3Q|̋UlSVWuuhq@%jU=@%u3ۉ]]]]׍EP׍EP誹jhkF%@%uvXvTdu
OE3f9tX9MF\EF`E~!EPSEPuEPvH=E}>jWXt7=st!t=	t~
%
EP׋EEEPj3j}@%E;t9}}~VE8tD0@%tEP@%jXfEԍEPEPuu@%؅u^EG;}|E} fEċEE̍uĥ3ۉ]9]t'uV@%9]t3fEPV@%؅u3ۋEt*8tpf@@fu+uQXuP}t	u@%EP@%EP	hkF%l@%mF%t8ut1jM0Shp@%Sj荊u@%tShPp@%Sjm_^[̋UEVWu uupLp\pXhXq@%_^]̋UVN=EtVGY^]̋Vs@%Fr@%Fxq@%
iF%P^̃l$nñl$l̃l$l̃l$ñl$õl$m̃l$?ñl$0ñl$l̃l$m̃l$cl̋UVuWFP@%utj_^]̋Uuuht@%Q"]̃l$.̃l$G̃l$Ỹl$̃l$z̃l$̃l$$̃l$7̃l$鰈̃l$+̃l$f̃l$ن̃l$̃l$̃l$̈̃l$̃l$鶆̃l$̃l$鐈̃l$鉆̃l$څ̃l$̃l$̃l$x̃l$酇̃l$鰆̃l$݇̃l$<̃l$:̃l$:̃l$l̃l$
̃l$闆̃l$DŽ̋Vs@%Fr@%Fxq@%F
iF%P^J̋UuMu]̋UVEtVFDY^]̃l$̃l$̋Vv@%F`u@%
iF%P^̃l$6õl$ñl$n̋UVuWFP@%utj_^]̋Uuuhv@%Q]̃l$道̃l$̃l$鸓̃l$(̃l$̃l$b̃l$̃l$間̋Vv@%F`u@%F
iF%P^W̋UuMu%]̋UVEtVBY^]̃l$̋V7Xw@%Fw@%
iF%P^̃l$j̃l$j̃l$j̋UVuWFP@%u
t	jPL_^]̋Uuuhw@%Q]̃l$ỹl$̃l$̃l$鞈̃l$f̃l$驈̃l$̃l$龇̋VXw@%Fw@%F
iF%P^̋UuMu%]̋UVEtV@Y^]̃l$̋V@y@%Fx@%Fw@%
iF%P^̃l$ĩl$ĩl$ĩl$ĩl$ĩl$ri̋UVuWFP@%utj_^]̋Uuuhy@%Q5]̃l$̃l$̃l$Ĉ̃l$c̃l$d̃l$‰̃l$
̃l$ỹl$=̃l$	̃l$ч̃l$̃l$逈̃l$H̃l$鷈̃l$|̃l$D̃l$̃l${̃l$̃l$1̃l$*̃l$õl$̃l$̃l$j̃l$3̃l$L̋Vy@%Fx@%Fw@%F
iF%P^J̋UuMu]̋UVEtV=Y^]̃l$̃l$̋Vz@%Fz@%
iF%P^̃l$Ah̃l$h̃l$g̋UEP@%]̋UVuWFP@%utj_^]̋Uuuh{@%Q.]̃l$̃l$钉̃l$Ĉ̃l$靉̃l$̃l$Ũl$陉̃l$̃l$|̃l$̃l$̃l$̋Vz@%Fz@%F
iF%P^騳̋UuMu]̋UVEtV;Y^]̃l$̋Vx|@%F{@%
iF%P^̃l$f̋UVuWFP@%utj_^]̋Uuuh}@%Qf]̃l$̃l$l̃l$鯎̃l$%̃l$麎̃l$Ԏ̃l$̃l$;̋Vx|@%F{@%F
iF%P^q̋UuMu%]̋UVEtV9:Y^]̃l$̋VH~@%F}@%FX}@%
iF%P^̋UEP@%]̋UVuWFP@%u
t	jPP_^]̋Uuuh~@%Q]̃l$̃l$Ϙ̃l$̃l$酘̃l$̃l$g̃l$̃l$̃l$龘̃l$/̃l$#̃l$Ṽl$1̃l$̃l$̃l$0̃l$陕̃l$̃l$̃l$^̃l$̃l$Ñl$<̃l$/̃l$颗̃l$x̃l$̃l$Ĩl$陖̃l$̃l$H̋VH~@%F}@%FX}@%F
iF%P^̋UuMu]̋UVEtV=7Y^]̃l$̃l$jj"̋V߷N@@	If^̋UEVuEFENFEFF^]̃l$̃l$̃l$̃l$̃l$%̃l$̃l$=̃l$̃l$̃l$f̃l$̃l$̃l$̃l$̃l$z̃l$̃l$̃l$̃l$̃l$̃l$$̃l$B̃l$̃l$ṽl$D̃l$̃l$̃l$̃l$ũl$̃l$+̃l$p̃l$Ṽl$̃l$̃l$̃l$̃l$̃l$w̃l$̃l$̃l$̃l$̃l$1̃l$D̃l$R̃l$̃l$ẽl$̃l$̃l$̃l$̃l$̃l$̃l$̃l$̃l$̃l$̃l$>̃l$M̃l$̃l$$̃l$̃l$̃l$̃l$\̃l$H̃l$̃l$g̃l$̃l$m̃l$T̃l$̃l$̃l$"̃l$R̃l$̃l$̃l$
̃l$̃l$̃l$̃l$̃l$̃l$2̃l$̃l$9̃l$_̃l$̃l$F̃l$̃l$Ĩl$̃l$Ṽl$̃l$̃l$̃l$D̃l$̃l$Ẽl$g̃l$t̃l$̃l$(̃l$̃l$2̃l$̃l$^̃l$̃l$̃l$̃l$̃l$s̃l$M̃l$̃l$?̃l$̃l$K̃l$p̃l$̃l$;̃l$̃l$}̃l$̃l$̃l$̃l$̃l$̋UVW}v/9~s
vW,}tsF;sPjuW3;_^]h0E%D6N3^$};~(h@%j*pYYPhWh`@%hE4@%;WWW3WfPPWDž@@%PTz@%uh@%joYYP@%;|uPhbA%jWP@%;|USh@%P}h@%j&oYYF(Ph@%Q}h8@%vh~@%Pjbo9t,@%;tPQ@%>5̋VjjNԀ@%^8̃y$rAÍA̋UVEtV,Y^]jE%4}3;u@jjT7Euu,Y;t
VMMdB%Ë}ut$N=؅|3ۅtj3]774jE%o3}3;u@jjT7Euu+Y;t
VMMB%Ë}ut$N؅|3ۅtj3]73jE%2}3;u@gjT7Euue+Y;t
VMMB%Ë}ut!N؅|3ۅtjPL3]73j4E%L2}3;u@jjX7Euu*Y;t
VMMB%Ë}ut$N؅|3ۅtj3]72jTE%1}3;u@jjT7EuuB*Y;t
VzMMB%Ë}ut$N؅|3ۅtj3]71jtE%&1}3;u@jjT7Euu)Y;t
VMM@B%Ë}ut$Na؅|3ۅtj3]7[1jE%0}3;u@gjh7Euu)Y;t
VMMӑB%Ë}ut!N؅|3ۅtjPP3]70̋UMj]̋UuxEF%uu&7]̋UuxEF%uuuu%7]̋UxEF%]7̋UuEF%uu6]̋UuEF%uuuu6]̋U칔EF%]c7̋UuEF%uul6]̋UuEF%uuuuk6]̋U칰EF%]7̋UuEF%uu6]̋UuEF%uuuu6]̋UEF%]6̋UuEF%uu5]̋UuEF%uuuu5]̋UEF%]L6̋UuFF%uuU5]̋UuFF%uuuuT5]̋UFF%]5̋Uu FF%uu4]̋Uu FF%uuuu4]̋U FF%]5̋Uu<FF%uu4]̋Uu<FF%uuuu4]̋U<FF%]55jE%,MMetuuuuu-̋UuXFF%uu4]̋UuXFF%uuuu4]̋UXFF%]4̋UutFF%uu3]̋UutFF%uuuu3]̋UtFF%]@4̋UuFF%uuI3]̋UuFF%uuuuH3]̋U칐FF%]3̋UuFF%uu2]̋UuFF%uuuu2]̋U칬FF%]3̋UuFF%uu2]̋UuFF%uuuu2]̋UFF%])3̋UuFF%uu22]̋UuFF%uuuu12]̋UFF%]2̋UuGF%uu1]̋UuGF%uuuu1]̋UGF%]o2̋UuGF%uux1]̋UuGF%uuuuw1]̋UGF%]2̋Uu8GF%uu1]̋Uu8GF%uuuu1]̋U8GF%]1̋UuTGF%uu0]̋UuTGF%uuuu0]̋UTGF%]X1̋UupGF%uua0]̋UupGF%uuuu`0]̋UpGF%]0̋UESVW}9Gs"wE+9usu;ujV̢uj@jVt4rKrCCUVWQP載V)_^[]̋UVW}WOt~rFFu+WV87jut%NrFFuWQPGu貈_^]̋UQSVWh@%ja}eYYu	E@l']CD@pDXucEPEu>WuMEu.MVsH~kEujkF%S@%V0.Sl@%}}t	PQ'uh@%ujaE_^[̋UVjFŇjju^]jE%&jjMueuuEuuPEF'u%Yjj'̋UEPS@u+Pu[]jE%&u+ueNԀ@%%&jE%%u}W)eWNԀ@%&̋UVuw4@%^]4@%>̋UV4@%&EtV#Y^]̋UVuS4@%^]@@%̋UV@@%EtVY^]̋UVu@@%^]̋USVW}ًu!v6WWi~Yt_^[]̋UVjF|u^]̋U(QMdhE%EPx%̋U(QMhE%EPS%̋U(QMh8E%EP.%̋VWwp@g6_v^jHnE%#M}t2hL@%MeEPMjh8E%EPE@@%$M輄zt_GxtEH;ui{wusMA9xuX9>u^A98u{t	SJMQA9xuw{t	SkMQB\B;Gu{pusWOAMI9yuAO99uAOHHWPOM{;ulFxu@VFFMxu}zu	PzthPzuBP@JFMVPF@V@辚{xu@VFMxuPzuzu@ދvA;X?4zuPBP@\MVPFV@CWW9YMAvHAEM3"jDE%3!r+hh@%MeEPMmhE%EPB"GujuPVPSG؋G;u
XGG}t
G;0u^G;puXCQ;
u8Rzt7;qu
VSF@F@@Fp~LzuABIAp,;1u
Vt~F@F@@FpFydG@@E ̋UQVFM;u9EuF%;Mt WMWEPM;Mu_E^̋UQQSVWGpذEMFPBEt6v~tދut0G;uuSjEPE@,M_uuNeBt	uSuŋE0@_^[̋UQQV~uuvjuEFMSW};uQBWu;u$HWAFWpjQAt2EME蕚]WKAtCxWtSLuNMWyAtME^MEjE;tPRAt&EHyWtPjujuEWEP6E_[^̋UQVFPQEPvjffY^j
E%wu;wtMFP@t2eeEPuM蘖PVEPE=0M>Fj=E%u~;wtMFP=@t2eeEPuM)PVEPE0MϕFjPE%G]u}3ɉu;h;s9X9Mt;KM9MuAC@Ph@%EjPiF%EP@%E̅uPQ&39MMȉMMu.u,`EPEu6*u@%6CWME_EPEPMEPMEEPEPEXMM裔M蛔u@%EEtPQuh|@%jUYYEMMEB%ËuPQũ&@%E;t;t	PQ&WjPE%]u}3ɉu;h;s9X9Mt;KM9MuAC@Ph@%EjPiF%EP@%E̅uPQ&39MMȉMMu.u}^EPE56{u@%6AWMEC^EPEPMEcPME;EPEPEVXMMMu@%EEtPQuh|@%j*TYYEMMEaB%ËuPQũ&@%E;t;t	PQ&Wh̋USVWh@%jMSYYEPEPu3Vu!C%SVV@%WuuEE;u=EEVVEPuE;u+EPEPuVuSVVWEE;t́}uuuh@%ujSE_^[̋UQQSVWu}Wh4@%jR3EE~0;t jkF%S@%WKSF4l@%F4*D%@%jjEPFPwEu/EPEPujuSv4v0WDEt=ueuh 0@%ujRE_^[̋UQQSVW3h1@%j}}$R]YY^0;t jkF%W@%SJWF4l@%~42D%l@%jjEPFP`Eu/EPEPujuSv4v0W,DEt=ueuh0@%ujQE_^[̋UQQSVWhȂ@%jfQ]3YYEE^0;t jkF%W@%SJWF4l@%F4PD%@%jjEPFPEu/EPEPujuSv4v0WfCEt=ueuh|@%uj7QE_^[̋UQQSVWhD@%jP]3YYEE^0;t jkF%W@%STIWF4l@%F4BD%(@%jjEPFPEu/EPEPujuSv4v0WBEt=ueuh@%ujqPE_^[̋UQQSVWh@%jO]3YYEE^0;t jkF%W@%SHWF4l@%F4D%@%jjEPFPEu/EPEPujuSv4v0WAEt=ueuhh@%ujOE_^[̋USVWh<2@%jO]3YYEE^0;t jkF%W@%SGWF4l@%F4eă@%eEURPQLE9}t=URh|@%}P|jjEPFPEPQeuM	PQ}EPEPujuh2D%v4v0S@pu3EtPQWh1@%WjN_^[̋USVWh<@%jM]3YYEEE^0;t jkF%W@%SFWF4l@%F4D% @%5EURh@%PEPQ3PPEEPFPEu/EPEPujuSv4v0W?Et=ueuh@%ujME_^[̋VN`@%b^̋UVj	XfEFtPQ^]̋V@%
iF%P^̋V@%F
iF%P^̋UVEtV
Y^]̋UQS]3W;}t	9ME;t}9Ou
@VMMwO;At,M9Ms$PSE|D΃rE}}ʃ}^|MEt;EsEEu@%E9]re뾸@_[jE%G}3;u@gj07Euu	Y;t
VMMB%Ë}ut!N؅|3ۅtjP3]7̋US]u@N#VWEPNu|&EHQP_uSh4'@%Vt
t	jP_^[]̋UQES@tX EP؅|FVuFWv}P؅|uFhbA%ωGG؅}
t	jP_^[̋UEu@
MI3]̋Uuuh@%Q]̋UuMu]̋VNvtVP^̋UVuWFP@%u
t	jP_^]̋UVuNEF@F3^]̋UEVWPMouVMEPu@%EP@%tVP_^̋UMAu@
@A3]̋US39]t(VW}wGM;Htvo9]u3C_^[]̋U}u@TW}}WCSVuNO@E;t~MoEO;Fu;FtPu^[_]̋VffNO^̋UEP@%]j,E%R
uNej,E%!
uNegh@%jGf8YY
j,E%ueNN
̋VR@%
iF%P^̋Uuuh@%Q]̋UuMu]̋UuGF%uu]̋UuGF%uuuu]̋UGF%]Z̋VL@%
iF%P^̋Uuuhx@%Q]̋UuMu]̋UuHF%uu]̋UuHF%uuuu]̋UHF%]̋V@%
iF%P^̋Uuuh؅@%Q]̋UuMu]̋Uu$HF%uuD]̋Uu$HF%uuuuC]̋U$HF%]̋V@%
iF%P^̋Uuuh8@%Q`]̋UuMu]̋Uu@HF%uu]̋Uu@HF%uuuu]̋U@HF%] ̋VZl@%
iF%P^̋Uuuh@%Q]̋UuMu]̋Uu\HF%uu]̋Uu\HF%uuuu]̋U\HF%]b̋V@%
iF%P^̋UVuWFP@%u
t	jP(_^]̋Uuuh@%Q]̋UuMu]̋UuxHF%uu]̋UuxHF%uuuu]̋UxHF%]p̋V@%F
iF%P^̋UVEtVY^]̋VZ@%
iF%P^̋Uuuh8@%Q]̋UuMu]̋UuHF%uu]̋UuHF%uuuu]̋U칔HF%]b̋Vl@%
iF%P^̋Uuuh@%Q]̋UuMu]̋UuHF%uu
]̋UuHF%uuuu	]̋U칰HF%]̋V@%F
iF%P^7̋VL@%F
iF%P^
̋V@%F
iF%P^̋V@%F
iF%P^̋Vl@%F
iF%P^̋V@%F
iF%P^e̋Vl@%F
iF%P^;̋UVEtVY^]̋UVEtVY^]̋UVEtVY^]̋UVEtVkY^]̋UVEtVEY^]̋UVEtVY^]̋UVEtVY^]jLE%B}3;u@gj07EuuY;t
VMM$B%Ë}ut!N}؅|3ۅtjP(3]7zjlE%}3;u@gj87Euu;Y;t
VKMMB%Ë}ut!N؅|3ۅtjP(3]7jE%"}3;u@gj87EuuY;t
VyMMDB%Ë}ut!N]؅|3ۅtjP(3]7ZjE%}3;u@gj87EuuY;t
VMMԿB%Ë}ut!N؅|3ۅtjP(3]7jE%}3;u@gj87EuuY;t
VMMdB%Ë}ut!N=؅|3ۅtjP(3]7:jE%r}3;u@gj<7EuuY;t
VMMB%Ë}ut!N؅|3ۅtjP(3]7jE%}3;u@gj87EuukY;t
VMMB%Ë}ut!N؅|3ۅtjP(3]7j,E%R}3;u@gj87EuuY;t
VMMB%Ë}ut!N؅|3ۅtjP(3]7jTE%3}u}uh@%j9E ;u
@89}u
jhkF%@%uu_u
]S);E$B%EP ;sEPu	%;]uM73EPz;:EPu$;$uMuFEP;EPu$;uMu<EP%;EPuX$;uMu>EP|;EPu$;puMu7BCEP;JEPu#;4uMu3IEP{;EPu#;uMSEP;EPuj#;uMSuEP$;EPu-#;uMSu^SEPw;ZEPu";DuMSuEP;EPu";uMSuEP;EPuv";uMSuEPp;EPu9";uMSubEP;umEPu";u[uMSuU0EPS;u;EPu!;u)MWuuV;uEM }3WhkF%l@%Vuḣ@%VjL6EM;tPQ.B%#B%_B%B%B%B%&B%OB%B%B%B%B%B%@B%}B%̋UQmF%SVW} t&WM 0uhh@%jP5u@%E$3P] 6%;jhkF%@%9]u
Wuu
u;tW@%PW<%;ugE PSWuU;t1=stt=	t;~
%
-&u4E$Pu uuuun;u] 39] t	Su 5hkF%l@%Vuh,@%Vj4_^[0̋UQQmF%t(u M0uhЈ@%j4u@%VWE$3P}#;SjkF%S@%9}uW|uurufEPWu uU;t1=stt=	t;~
%
*#u4WuuuuuJ;u}39}t	Wu3Sl@%[Vuh@%Vj3_^0j|E%EP@%uMQMqL3jPPh@%EEP@%A̋UEVWu uupL3Ph`#C%PPh$@%\_^]̋UEVWu uupL3PhC%PPhL@%_^]j|E%EP@%uMQMqL3jPPhx@%EEP@%t̋UEVWu uupLjhD%jjh@%O_^]̋UEVWu uupLjhD%jjh؉@%O_^]̋UEVWu uupH3Ph`#C%PPh@%_^]̋UEVWu uupH3PhC%PPh,@%_^]j|E%zEP@%uEHLeURQjpPQhX@%EP@%'̋UEHLVWu uuQjhޯD%pPQht@%@_^]̋UEHLVWu uuQjhD%pPQh@%_^]j|E%EP@%uEHLeURQj	pPQh@%EP@%T̋UEHLVWu uuQjhD%pPQh̊@%m_^]̋UEHLVWu uuQjhԾD%pPQh@%_^]j|E%EP@%uEHLeURQj
pPQh@%EP@%̋UEHLVWu uuQjhD%pPQh(@%_^]̋UEHLVWu uuQjhD%pPQhD@%_^]j|E%EP@%uEHLeURQjpPQh`@%?EP@%̋UEHLVWu uuQjhD%pPQh@%_^]̋UEHLVWu uuQjhD%pPQh@%H_^]j|E%.EP@%uEHLeURQjpPQh؋@%lEP@%̋UEHLVWu uuQjhD%pPQh@%_^]̋UEHLVWu uuQjh`D%pPQh@%u_^]̋UQQES3Vu]];vPh@%j,h@%j,EP;W}$;u
W3FVhkF%@%uuvPvLugEPSuvLS;t1=stt=	t;~
%
)"WSujvPvLh@%;u]3_9]t	Su,9]thkF%l@%Vh0@%Vj4,^[ ̋UmF%SVt;uMuM60h@%j|+5@%uu֍E3P][;W}$;u
WjhkF%@%uvPvLujEPSuuvL莶;t1=stt=	t;~
%
)"WSujvPvLh@%;u]39]t	SuI+hkF%l@%_Vhh@%Vj*^[ ̋US3mF%V]]t%uM0h@%jA*u@%EP,;W}$;u
W3FVhkF%@%uuvPvLuiEPuuvL3;t1=stt=	t;~
%
)"WSujvPvLh@%m;u]3_9]t	Su*9]thkF%l@%VhH@%Vj)^[ ̋USVW3h@%jfE )YYjkF%W@%]u@7#uvHvDuFDSMQPj
vHPhx@%Wl@%Vh0@%Vj#)_^[̋USVWh4@%j(YYj3kF%WfE@%]u@7#uvHvDuFDSMQPjvHPh@%Wl@%Vhȏ@%Vj(_^[̋UQQmF%t%uMx0h@%j'u@%SVE3P];W} ;u
WjhkF%@%uvLvH9ufEPuvH;t1=stt=	t;~
%
)"WSujvLvHh@%;u]39]t	Su'hkF%l@%_Vh`@%Vjc'^[j|E%X}Wh@%j&eEP@@%etaWKEPEPWjv4v0hl@%q}t,0EjPVC؅}EtPQWu3Sh(@%Sj&EP@%jHE%M]Sh@%j&EP@%euWqj
Y}39}vE4MuHG;}rj
Y}39]v+Eȋ<tW7MWhW1uC;]r3Vh@%Vj%EP@%jE%h@%j/%eYYEP@%}euWTWEPEPWjv4v0h@%}t0EjPVU؅|
Wqu3ShH@%Sj%EP@%̋U4SVWh@%jv$}YYuW>W|0j
Y}39}vE4|G;}r3Vh@%Vj$_^[j|E%{EP@%ueEPEpHjpPpLh@%EP@%'̋UEVWu uupHjhD%pPpLh,@%?_^]̋UEVWu uupHjhD%pPpLhL@%_^]j|E%EP@%eh@%j
#YYjkF%W@%]u@8#uvPvLuSEPvHjvPvLh@%Wl@%Vhp@%Vj#EP@%̋UQmF%SVWt%uM
0h@%j["u@%jhkF%@%u u@H&]sPsLu,VuusHjhD%sPsLh@%hkF%l@%VhГ@%Vj@"_^[̋UQmF%SVWt%uM+
0h@%j!u@%jhkF%@%u u@H&]sPsL	u,VuusHjh`D%sPsLh@%hkF%l@%VhH@%Vj|!_^[j|E%pEP@%ueEPEpHj
pPpLh̔@%EP@%̋UEVWu uupHjhD%pPpLh@%4_^]̋UEVWu uupHjhD%pPpLh@%_^]̋USVW3ht@%jfE YYjkF%W@%]u@8#uvLvHuSEPvDj
vLvHhT@%Wl@%Vh@%Vj
 _^[̋USVW3h@%jfErYYjkF%W@%]u@8#uvLvHuSEPvDjvLvHh@%Wl@%Vh@%Vjt_^[jE%hmF%t)uMZ
uPh@%ju@%EP@%}3EE9G ,eGM4F@DXEtM}t0u<@%YYu@3Eu1EtMt$f9tuEEjhkF%@%VEPEPVjs4s0h|@%|GEetURh@%P|.}t(0EjPCP7u
3VPhkF%l@%|J}EEtPQEE;G 3Wh0@%WjEP@%EEtЋPQj$E%3fEE3;tMMD%9Mt1EPuuujSuuVu}09ut'EPuuujSuuuh|FuM3Q}VPL9}t9}t
uh|@%V;|	9}t2ۋMVPEMtPQ2jTE%h|@%j$YYj3hkF%}@%]tfS39|EEEP@%EPEPSjv4Ev0hL@%t$EP@%EMtqPQi@hEeURh|@%P|*0EjPV3Eu3EP@%EMPQ}uShkF%l@%Wh@%Wj{̋USWh@@%jMYYjkF%S@%EPu3}@%E;E@E};v}V3}9}tEPEWtu;tEPEWtu;uuM/uE9}u&Eth@%jHEE;Er^9}t	u@%Sl@%uh@%uj|E_[̃l$J̃l$̃l$̃l$̃l$)̃l$m̃l$̃l$̃l$t̃l$8̃l$̃l$F̃l$̃l$|̃l$@̃l$̃l$̃l$̃l$̃l$̃l$̃l$̃l$̃l$̃l$#̃l$̃l$̃l$6̃l$̃l$̃l$̃l$:̃l$̃l$	̃l$̃l$Ẽl$̃l$̃l$̃l$7̃l$̃l$~̃l$̃l$̃l$̃l$̋UmF%SVWt%uM0hԘ@%ju@%ueM^QSPL|S}tHFD@@DjuvLvHPh@%Et3fEuu襥SPd2Whx@%Wj_^[̋UmF%SVWt%uM0ht@%jZu@%ueM^QSPL|Q}tFFD@@DjuvLvHPhT@%Et3fEuu襥SPh2Wh@%WjB_^[j$E%6h@%jYYjhkF%@%39}u
@]UCRP}QL;9}5@%EP֍EP}֍EPuХh/sDsLsHEh@%_Vt=@%EP׍EPhEPuuuusHMuCD@@D3ɃXuQsHMu॥뉾2hkF%l@%Vh@%Vjj|E%]CD@@DjusLsHPh<@%tCEP@%ueuhsDsLsHh<@%_^EP@%aj|E%a]CD@@DjusLsHPhX@%tCEP@%ueuhsDsLsHhX@%&^EP@%j E%hܚ@%jNYYjhkF%@%5@%EPփeEP֋}Eu
@']EPuԥhsDsLsHh@% T|kEPuZuuuIsHMu8CD@@DXu#QsHMr}}t	PQ'hkF%l@%Vhx@%Vj=@%EP׍EP׋̋UmF%Mt(uMu0hX@%ju@%S]CVpDXWEE3PWS}}u;t:=st"t=	t;~
%
E;E/E9x8=@%u=]X0t%jhkF%S6
MhkF%A4l@%E`4]@83B9UE3;t	f99MD3E	:t4tu+eEPj0uJ}Pup6;u‹]jhkF%׋EHHHGHHEW1;t.f9t)URQPVMPuE량U뚃}uM3;tf9u9Uu&;t9t0Q<@%YYt	eEOuMuuPEEv!E9|gkF%ExMjVSPVl@%uMuSujjVES4Vl@%}EEM;|rE]tuMuuP>Ee{ kF%E썃]뮋]CMjVSVl@%uMuuPE|0C@DXt}u}tuMuSuhEjVS2Vl@%}uEEM;H iehkF%l@%uh@%ujE_^[jE%mF%t+uMMQPh@%j
u@%e}euWO'EPu=f}MPuEpDpHuEPuuE!uVh@%Vj
EMtPQjE%mF%t%uM0h@%j*
u@%e}euWO'EP4u=f}MPuEpHpLuEPuuE!uVh@@%Vj
EMtPQjE%mF%t+uMMQPh@%jTu@%e]euWLEPau=f}MPuEpDpHuEPuuE!uVh@%VjEEMtPQ'̃l$S̋UVuVhT@%hEH,tx(tx0t13^]̋UW39}u@sVuh@%h5WEPu9~,t:9~(t59~0t0jhuEP6tF($PEPEP^_̋UW}u@W'Vu~,tDF(t=~0t7p$h@%h
F(@$tP@%u	3^_]̋US]V}u@%Sh(@%h!
u~,tXF(tQ~0tKHtujSW}AF(8tujSV}(Sh@%j	N0W@^[]̋UhP@%h	EYYMH$MH(MH,MH0]jE%uF4et
PQf4h|@%h7	YYN耤̋VN`h@%h	3YF4F(F$F,F0Y^̋U$SVW33]܍}૫EP3FVS]]];MQ;w5TlF%3~EPVEPS;|:EPju;|(E;uj_,@P5HF%P$@%P @%;}
P5\lF%9]tu9]tu~_^[̋UQeV5 @%WEPjjuօu:p@%zu/h@%utEPWjuօuW33_^̋USWEPh3Wh؞@%h}3E4@%u5EPEPEPWh@%u}T@%u}u
}u}uC9}t	u,@%_[̋UVEPh3Vh@@%hu4@%5mF%;uGEPEPEPVh4@%uuEuT@%u}uE;tmF%u,@%^̡lF%S3V;tPlF%lF%;tPlF%lF%;tPlF%lF%;tPlF%lF%5@%;t	P։lF%9PlF%tW=,@%hkF%hkF%׉PlF%_9lF%thmF%(@%lF%5lF%5lF%5lF%֡YF%^[tPl@%
YF%3@̋USV5 @%W}tPփ#tPփ#tPփ#tPփ#tPփ#tPփ#tPփ'_^[]̋UDS33VW]u}3]̍}Ы3=djF%]]]]]]]EEP]܉k;EPEPujy;tul@%u3E=@%MQ#j9PjjׅEMQ#j;PjjׅEMQ#j	:Pjjׅt|EMQ#j<Pjjׅt]EMQ#j9Pjjׅt>EMQ#j;PjjׅtEMQ#j:Pjjׅup@%AE쉆E܉EEEE艆E䉆33;tL5 @%9}tu9}tu9}tu9}tu9}tu9}tu9}tuWEPuW9}t	ul@%_^[̋UEV3dtqHtcHtUHtGHt9Ht&Htuh@%jzjWbEPEEDP:E*EEE	EMuj^^]jhF%3EMEE3@Ëeu0@%E$̋UVWjkF%V@%jjjuuuu}tuMVl@%_^]̋USVWjkF%V@%3WWWun;u(} tj
[uWju9}tuVl@%_^[]̋UVWj3hkF%}@%} tj
^jS]WWWSE};uLEPuuS;u,9}t$EPjgWS;uEPjhWSj2^;tSC[hkF%l@%_^̋UVWjkF%V@%jjju_uu}tuVl@%_^]̋Uuuujuz]̋U]̋UVWjhkF%@%39}th@%jYYjW^5S]WWWS;u!WjS;uS3;tSB[hkF%l@%_^]̋UQWjhkF%@%}th@%j0YYjW_VuEPjVLS4@%9EuhkF%ujjV~lLP}@%Whܟ@%
39`t,Pu#9}thkF%9`tPuV9}u\u}uV=VuV+}tu[^hkF%l@%_̋U}t]}]̋UE;
HF%w;lF%w3@3]̋UE@]̋V28P!t@&8Q!uQDg;u
@8P!t8Q!u^̋UMVuMWHMjHYxM_H @!^]̋Qu3ËA+̋Qu3ËA+̋UE
M	;Eu]̋UE9EtmU
;EuE]̋UEdSVWaHHHHt
uh@%]}XpJF%8E%Eu4hx@%VaYYEPudM|`uhH@%EYh(@%뱋}XpJF%E%Eu4hx@%VYYEPu'M`uhH@%Eh(@%뱋}XpJF%@E%EuOhx@%ViYYEPulM9EuAuu<}8Qh@%j5jWX`uhH@%EFh(@%떉>}XpJF%E%EuOhx@%VYYEPu	M9EuAuu<}4t/t+Qh@%L`uhH@%Eh(@%떉}XpJF%uShd@%E%EuGhx@%VYYEPu!udM9Eu=uu8}0t+Qh(@%`uhH@%Eth(@%3uu}u	`	d_^[]̋UQQSVWj3hkF%uu@%9utr9utm]VVVS;u^EPjgVS]n;uHE;tNUP
EPjhVSuD;uE;t$UP
u3jW_9utu9utuhkF%l@%_^[̋UVjhkF%@%uu	EW-&S]jjjSEuStST[hkF%l@%E^]̋USVWGpuFPtvދ6~!t_^[]̋USVWGpFPutދ6v~!t_^[]̋UE5ᆳhP@%iiҧAY+Yy]̋UQW3}uuuuu_̋UMw3ɋPµY3sjMh4E%EP̋Up4hF%3ʼnESWWPh@%@%3;hd@%WPj|}SP@%up@%=u3;uX@%Ph@@%jPk;|7PWPsj;|ShjSjjPt@%YF%YF%V5@%SQjQPƅƅƅh @%WP-|*P@:uSQ+PP5YF%WPS@%SSWPjPSh@%~@j\P@%YY;t+@ȍQA:u+SRQP5YF%ֹ@%P@:u+SRPQ5YF%h@%WPA|*P@:uSQ+PP5YF%֍PPjt|SSWPjPSh@%~*P@:uSQ+PP5YF%ֹ@%P@:u+SRPQ5YF%֍P@%h@%WPV|*P@:uSQ+PP5YF%PPPPPPh̡@%WP$|*P@:uSQ+PP5YF%^M_3[葸jhF%芺3tkF%3}hkF%<@%ӾkF%VE3CPlF%SV@%WWWhkF% Vl@%hD%hD%ᆳPPt3hmF%8@%|lF%Wj@5@%֣lF%Wj@֣lF%hj@֣lF%=mF%twWj`jF%V+=`jF%V@%jplF%mj\lF%YSIlF%FPX@%lF%XlF%jlF%hlF%h@%3@Ëe3EuUH̋UVWuw #9G$w	+_^]̋UEVM;FtHPPQ߯NYEM^]̋UE;EtVuM{jE;Eu^]̋UE;EtME;Eu]̋UEU
E;EuEM]̋UVuVu[E;uuE^]̋UQVuUE;FtPuJuE	FEEE^̋UVWuNuϋM_q^]̋UEVPZtHNU;tuNuaE^]̋UQuuuu}̋UQuuuűUQW3}uuuuuu|E_̋UQW3}uuuuuuv_̋UuuNZME}w]j E%_]eu}ܥjhkF%@%t/t%eEPEP(E;At@EhkF%l@%Ef
C%̋UVW}WN@;t
?9y}	;uNE_H^];t;y|	;u;tڋE̋UQW3}uuuuuu_̋UQVM;MtQvEuPKMFE^̋UVuW}QuVW_^]jDE%Dr+hh@%M讎eEPM~hE%EPSGujuPVP=mG؋G;u
XGG}t
G;0u^G;puXCQ;
u8Rz t7;qu
VeF@ F@@ Fp<eLz uA B IA p,;1u
VeF@ F@@ FpdFy dG@@ EjHnE%M}!t2hL@%M\eEPM賋h8E%EPE@@%MPez!t_Gx!tEH;ui{!wusMA9xuX9>u^A98u{!t	SJUMQA9xuw{!t	SGUMQB\B;Gu{!pusWOAMI9yuAO99uAOHH W P O M { ;ulFx u@ VF cFMx!u}z u	Pz thPz uB P@ cFMV P F @V@ b{x u@ VF bMx!uPz uz u@ ދvA;X?4z uPB P@ ObMV P F V@ bC W舨YMAvHAEM肰jDE%肯h@%MeEPMljhE%EP蜰̋UQQSVWGpذEFPuϋKEt6v~!t܋ut0G;uuSjEPE@/MuuFPt	uSu‹E0@_^[̋UQVFM;u9Eu!jF%;Mt WMbWEPhM;Mu_E^̋UQVFPQEPvffY^j&E%GEE6}Eb9?+;sK9EU+;MseU9EsEjue؋FVSu]P}MQWP
NVPQubFtN;uv'YEFF^uYjjl^M+V;sPEPSQFMQ+ME+WPlEFvMQ+Vu05S])}SuSuFuEPEWPwj(FE%诬jhkF%@%EtbHlt[tQj<YbA%3t=!]<}̥E܍EPEPM8Xuh@%hYYhkF%l@%ݬC%̋UQQVuEPeEPuu3uEuPE^̋UQEVNEFPQEPFMQuPH^̋UVEtVY^]̋UVWj3hkF%}@%WEP8WEP.uy;R9}thH@%jbYYjW^7S]tSh$@%j?WhuEPS;EPWWEPWhkF%W6;E8PEPEWDP~ttEh$nF%jYY;t*f3ME9uj^]PVfu(uT;tu2Vh@%jR+Suu;tӰEM3[9}tuEPhkF%l@%_^̋USVuWV舷8PDP(@%?tV%tP?tPtjP@%'h?tPPtgdtjfV4t
P@%&_^[]̋UQVNbFEEPj	N3@F F$^̋USVuWWV|jPFd^SVjWjVjS=8@%tPׅ|>Ɔ@Pׅ|Ɔ@PPׅ}	P0@%(lƆh@@%u
p@%džh3tVPV_^[]̋UQVFM;u)9Eu$F	PEMPeM;MuE^̋UQQVuEPeEPuuuEuPsE^jfE%jhkF%@%ut\Flt/t%e<QM
MhC%ËujX9XuEF@D|V:hkF%l@%4C%̋UQQSVuW33ۉ}}9u3jEP@%t~8Ejhj1jujj@%0t4EP'@%PPPPjWuWW@%tWuW@%up@%9}t	u@%9}t	u@%_^[̋USW3WEP}nEPh;u4VuEPWWEPjPV;uEƀ`^9}tuHEPl_[̋UVuWtL_^]̋UEVuW3- >t;Ht.HHtuhh@%jjW4EP~!EE|P;uj__^]̋U(4hF%3ʼnEESVW}E3VEP.E- Htuhԣ@%jeEWXpJF%E%Eu.hx@%V!YYuuwl}u6uu10`uhH@%VYYEh(@%jPuEPEPEPyXpJF%uShd@%E%Eu1hx@%VhYYuuwlB}u:uu51`uhH@%V/YYEth(@%u{jPuEP:Eub9Eu.uu)EPu$@%EtPuh@%j/|PEP}uuu}u	`	dEPME_^3[蒡̋UuEu|ujQjP0]̋USVW}GpD39ht"V
^uVWi؅tu3_^[]̋USVW3SEP]]u8uj2_ShuEP;t
Wh@%jtjhkF%@%EPSEP|VEͩ;tWuhL@%hukEtYu2t%;t!u;tFPh@%h;1EEtEu
Eƀ39]tuEP8]thkF%l@%_^[̋UuEu|uQjP#]̋UuEu|jQjP(]̋UQQSVuFl3ۉ]]W<SEPShSSShȤ@%h0@%;uBEP<P@%uS]jEEPjjuu8@%u39]t	u,@%9]t
EP @%_^[j_3G̋USVuEP3hShȤ@%h]]4@%uNWj_EP<P}}@%u.EPEPEPSuuT@%;u9}u9]_9]t	u,@%9]^[t
EP @%3̋UESVuVu|ujQjP؅ub68tuHWjkF%W@%9uP؅u	6Wl@%_tj66&	ƀu^[]̋UMw3Q輖Y3sjM诽h4E%EP̋UMjXtvW|9SVW}EPuqVW3P@%|;wu
z3fw_^[]eWjjDtHt̋VfF^̋VFtPƕYfff^̋VNN^V̋UV3W}FFF;u2"?vPWFFF_^]̋UVEtV2Y^]jE%{uuutuFuePFMjjFjE%uEuNFeEEPj	Nq3@F F$蜜̋UQVEPEP^̋U(SVW33ۉ]؍}ܫ]3}쫫}W]]WuEP;EPEPujE;u	E
K=@%P0SSSjׅu;p@%E;t.P0SSSjׅup@%WVjPFdDSVjWWVjSSVjWLWVjSҴ^SVjWŴjVjS躴$nF%Sj(YYt	}3uE36}tSj讙YYt	AA3tpEPjp|X]h<@%PPEt@@%P0h0@%Su|Tuu=P@@%}	P0@%l3@hXt;u$Ƀ΃2upVtƆƆuƆ3ۉE9]tSEPuS<9]tul@%]9]tƤ;t	P@%E_^[̋UVuWtu7:'YP|PtP@%ttj_^]̋U}ujWXj0ju3]̋UVuujWX)F$P;Nt
jfj0jV蹚3^]h@%hP@%YYj0hF%hХ@%hYYP,jY3}󫸴fENDev,jMQj_WVP8E}3EE3@ËeEEPh@%h@%joEE軘jhF%dueh`@%h3YYF0tIePQE2EE3@Ëeuh@@%h@%jEuf0F,tiEjPQEE6EE3@ËeE؉EPh @%h@%jEu}}uh@%jtffE迗j,hF%hu3ۉ]h@%h6YY]F,URPQEj_}7EE3@ËeEԉEPh@%h@%jj_}3ۋu9]}uhЧ@%j}]EF,URPQ,E}7EE3@ËeEЉEPh@%h@%jtj_}3ۋu9]}
uht@%낋F8;EtEF,SPQE}7EE3@ËeẺEPh @%h@%j
j_}3ۋu9]}
uhD@%]܋E؉F8PVh @%h9]ubEF,VPQE}7EE3@ËeEȉEPh@%h@%jj_}3ۋu9]}
uhܦ@%EF,V0RhbA%PE}8EE3@ËeEĉEPh@%h@%j E3ۋu9]}
uh@%*9^0u	E@
]P,E=jhF%u؃eh0@%hYYeF,URPQ,EE6EE3@ËeE܉EPh@%h@%jmEu؃}}uht@%jK33N8;M蒔j h8F%9uh@%hYYF4t
PQf4F0tIePQj_}1EE3@Ëeuh@@%h@%jj_}uf0j_F,EjPQE}5EE3@ËeE؉EPh @%h@%j[j_}u}}uhD@%j:EF,PQE}5EE3@ËeEԉEPh@%h@%jj_}u}}uhl@%jEF,PQ}2EE3@ËeuhP@%h@%jEuf,VPڒ̋UVh@%h_YYMFHB^]̋Vh@%h-FPYY
Q@^̋VWG@dplh@%hYYG HB_^̋VWG@dplh$@%hG PYY
Q@_^̋USVWh@%SwuYYjYbA%3uhx@%ujYbA%3uhd@%SAEYYMPQ3.hL@%S"YYuShH@%SE YY@_^[]̋UEVP@%Vh@%h^]̋UVEtVY^]h@%hYY@hة@%hlYY@h@%hNYY3̋UVh@%V,EYYt2Ht(HtHtHt
Hu0h@%!hx@%h`@%hL@%h8@%h @%VYY3^]̋U VWh(@%huYYP,FDtF@39~@u~EF@;tpURP}}}Q;}F@*Ef9}tEuF@uuPPh@%jM5@%9}tu։}9}tu։}9}tu_3^hH@%hYY3hh@%hYY3̋VqLV@%^̋VWFLP@%utj_^jhxF%討u3}FP<@%FH3@ËeE`H@E诎̋UыM@t
J$S3]̋UUfu
f:uf;t2jhRQBH@]̋Uu3Ʉ]̋UVuV@%}j
YPfFV^]̋UEVjP@%^]̋UEVjP@%^]1l@%̋Uuu<@%YY3Ʌ]1@%̋UQSH@%VW}GdplG<PEӋMuD@%M}Ph̫@%jPEuӋ]C<;G`uCDuy4WxelF%W@%9~4Ph@%h\pΉupW@%u5D@%u֋]!u5D@%uh@%hYYt_^[̋USVuFd@lSH@%496tGWxyhlF%@%hlF%@%h@%hYY96u_SD@%^[]̋Uh@%hZYYM\]jXhF%ى]܃eh@%h#YYCDtE]PQRECEut)C,eC,S0RhbA%P}EjYtkF%3uu(FPv@%}Wh@%jC,PhbA%jjFP@%}Wh@%̋EE3@Ëe}ȉ}Wh@%h@%j=E]܋u}Wh@%뇃{0u
@cC4Ph@%jjh@%@%}WhT@%NEC,S8RPQ,}E9EE3@Ëe}Љ}Wh@%h@%jE]܋u}Wht@%s8Sh4@%hkKDEC,SPQ}E9EE3@Ëe}}Wh@%h@%jE]܋u}Whܦ@%jcDA}(EC0PQ}E9EE3@Ëe}}Wh@%h@%jE]܋u}Wh@%EC,jBhЬ@%PQ }E9EE3@Ëe}̉}Wh@%h@%j1E]܋u}Wh@%xF<EPH@%3}؋FtH;qF%w@ȡqF%T;r1DP葑tF^e}؅tStck}؅u@FH;rPqF%}؅tHeap}؅uuD@%v6W蕅F`C<uD@%EC0MQ3QhjQQQQWPR}E6EE3@Ëe}}Whh@%h@%jE]܅}.WhD@%jؿuWh,@%#EC<P,3E؅t8HeapuPqF%Ǎex̋UVuWFP@%Wh@%h]u
t	j_^]̋UQV~HW@t*FPMEuuWN3l@%_^jE%buN$etNZ,̋U}@uWMI$tuW]̋USVWGpFM	PQ!tދ6v~t_^[]̋V28Pt@&8QuQ-;u
@8Pt8Qu^̋UV;utu(^]jE%Su~W(@%@%eEPf̋UEP]jE%u~W(@%@%EeFEPL豃̋UEAEP&]̋UVFP(@%@%EtVO{Y^]̋V3P@%FNF@F v@fDh,@%hv(N,N0N4NNN8N<N@薼YY^̋USVWGpENPQ"tvދ6~t_^[]̋UVv@%EtV|zY^]̋US]CdVW3}plhlF%}@%PEH@%s496E;t6Exuh0@%h3謻EYYE;uЅuxh@%h膻YY<hlF%@%u5D@%֋E}Ph@%jEMhlF%@%hȮ@%h#YYu5D@%օC<PH@%KXxGDuW<;S`t;uC<PHC`EP,,MQWP<C<Pօ}ehlF%@%h@%h薺YYh$nF%jHYYt	3uPEh|@%uuS	E}ePhX@%}uh<@%h%YYeP,C<PEH@%XSu֋Ee83tE_^[tPQE̋UQQSVW3WW}}@%3ۋC;t&;t"tV誱WVh@%S腹J]EPuV;}V{WVh\@%SV}tuu1}t@%_^[̋VNfUf$^̋UVWusuϋfM_q^]̋UVW}W5GF_^]̋UE;EtVuMrE;Eu^]̋UMj8]̋UQQV~Ht@FPMNE;t@t`ME;FuufPl@%^j
E%}]@t^~HtXFPM|NeE;t1HtI@ῃQPSR |%ME;Fu3ul@%~Wh@%j荷̋UQVW}WE;Ft@PQuE	FEEE_^̋UEVuEFENF6EFF^]̋UQuuuu.jPhHF%}u܋F@d@lE3ۈ]]M]h@%h蠶YYP,^@EFEFEP=@%׍EP׍EPuvvv4軬F;k9Xb]MQp=@%׉E;tj_}{EEPFp׉E;uE]؋F@};xEf9jSPEP@%E;ujSEWEP@%E;uEF,U⿃RuPQ E]4EE3@ËeEȉEPh@%h@%jk3ۉ]u9]}uh@%jLEP=@%׍EPEj_}:EE3@ËeEĉEPhp@%jj_}3ۋu=j_F;t@;tv,E;fDSSEVh7C%EP@%uYp@%=rp@%<p@%t,p@%t!p@%=	tp@%;~
EEF,jPQE}6EE3@ËeEEPhL@%ju܃NDj_}39]}uh @%j߳,E;tEPh@%F@;tEPh̯@%h͉]}t.juԋE@%up@%Ph@%j}F;tg9XtbE8]t	p@%8]tFp@%}%3@Ëeuhp@%j-E3ۋu܍EP=@%׍EPSSSSv4ZEVzj/E%bx~HEFPMQue@%tZ}tTuMFEPEPNu8@%;~t0t)GPu@%}EtGFPEWul@%Exj_E%wE3ۉ9_HGPMEP]@%G0Eu;ttFE;tOEP@%M;tFURSP}M;t7vEPSV|%EPMuMhu;wu	EEP@%ul@%@w̋UVu@%t!}tEH$tuju1W^]jE%~v3E@9~HFPMlu}@%t^];tW9}tRuM\EPEPN&u8@%;~t.GtHPu@%EE@EWul@%Ev̋Uu@%t&}t }tEH$tuuuW]jE%~uMMetuuuuuCv̋USVW}ًu!v6WWm~Yt_^[]̋UQMAd@lS3Vu]9u]E@@D8u	E	tWEPQ$;}WIPWh\@%jE"6MVuu3;}WPWh@%jE]_9]tuuE^[jLh@F%u3ۉ]]܈]]uh@%h蜮EP5@%֍EPEtE;uEWEt	E;t]uhЬ@%<@%YY}uG4
G;9Xu	9X]ԋ@;tCMQMQuE3;M;t)f}	tEWE,EE9]G9XjYfMMMMQp@%E;uE3uȋG@;ps]Mf9tNjhPEP{uKGHΉM̍MQMQp@%E;Xf}	FEE܋u;uE+4F|]Et
uhbA%VEuSSVPEEE3@ËeEĉEPhа@%j辬E3ۋ}G;t<9Xt7E8]t$p@%3@Ëeuhа@%jvEEP5@%֍EP֋EsjE%qjjueuuEuuP	EwruVjYjjr̋VWwp@g6_v^jDE%7qr+hh@%MLeEPMqKhE%EPFrGujuPVP&G؋G;u
XGG}t
G;0u^G;puXCQ;
u8Rzt7;qu
VWF@F@@FpLzuABIAp,;1u
VxF@F@@FpFydG@@EpjHnE%oM}t2hL@%MOKeEPMIh8E%EPE@@%pMzt_GxtEH;ui{wusMA9xuX9>u^A98u{t	SMQA9xuw{t	SMQB\B;Gu{pusWOAMI9yuAO99uAOHHWPOM{;ulFxu@VFMFMxu}zu	PzthPzuBP@FMVPF@V@{xu@VFSMxuPzuzu@ދvA;X?4zuPBP@MVPFV@CWWufYMAvHAEMonjE%mu3E9^HtWFPM<]EN;t!xPEPN>;tj9^u։]]Nu^Pl@%EmÃeETC%Ëu3̋UMI$tK]j%E%lu3E@9^HtTFPM~]EN;t!xPEPN;tj9^u։]]Nul@%E.mÃeEUC%ËűUMI$@tP]̋UQQS]VWGpEEFPQωuEt6v~tۋuut.G;0uSVjEP]E@/MuNPQt	Suu‹E0@_^[̋UQVFM;u9EuF%;Mt WMzWEP$M;Mu_E^j mE%*kكeh$nF%j jYYEEtuȥaEeuEuM®EPMEzuEPME EPEPKEbu܋5@%8XuuEքuMjOueEWC%EEjj0E%iM3@}}}}9yHQMEPWEP}īEPWEP讫9}9}@%EPGWuӋ}Vh@%j]EPWuӋ}VhH@%ً@%EPWuӋ}Vh@%뻍EPWuӋ}Vh@%룋MԋE;M;E@%EPuӋ}Vhh@%kEPuӋ}Vh@%QE+Ej@_Eĉ}th3}EftTfump@%t`E܍4f	t6f
t0EMȃtS|QEE;Er3?Eth@%j襢Whx@%uPuQh @%j脢Wul@%}=@%tu׃}tu׋h ̋UMI$VW@tuu_^]$j$E%g3@9{HCPMJh$nF%j }gYYEE;tuuȥ*E}uEuM/EPMEuEPMEEPEPKEu؋5@%8XuuEքu MjOuu3Ei[C%Ëuul@%Rg̋UVWu@@%uW#EH$tuuu_^]̋U\SV5@%W3EP}}}}܉}ԉ}EE֍EP֍EPWEPاt
WmEPWEP輧uEPWE,P誧uҋ5@%EP3CSu;}PhD@%j멍EPSu;}Ph@%ލEPSu;}Phȵ@%ȋ5@%EPSu;}Ph@%묍EPSu;}PhP@%떍EPSu;}Ph@%뀋ME;Mq;Mh;E_;EV@%EPuӋ;}Vh@%j.[EPuӋ;}Vhx@%EPuEӋ;}LVh(@%ju=@%׀}tu׀}tu׋=@%EP׍EP_^[4]+]EC}}E܋Mf98jW=@%PEP׋uMjPEQEP׋jEԋM4E࿃PEuH$%=@%EP׍EPׅ$EE39]e3uuPuuQhس@%j ̋UQQVuEPeEPuuuEuPE^̋UQVFPQEPv[ffY^j
E%bك{H@t1CPMeuu˥ul@%ncj=E%b~HEt-FPM?ue@%uEWul@%EcuME=EPE܍NPMu@%8;~tuM
MPEuEӃutVeyE_C%jE%aك{H@t[CPMiKeE;t4HtytqMpvME;Cuu3l@%b̋UVWu@@%t0f}	t)f}
t"EH$tuuW_^]̋UVu@%uWEH$t
u^]jmE%`~HE@t-FPMJue@%uEWul@%E!auMEHEPE܍NPMu@%8;~tuMMEPEuEӃutVevEaC%̋UVu@@%uWEH$t
u^]_̋VN@%!!3FHFLFP^jE%._u@%e~HtFP,@%fHMN_̋VN@% fHfL^jE%^u@%e~HtFP,@%fHMNr_̋UV9EtV=WY^]̋UVEtVWY^]̋U SV3W}w]]F@D]E9u9u3jEP@%]9_j[MG39‰U䋐U싒UW,UuE@%W|j1Sh@%Sh@%SjuSwSj0Suj	u@%`;tt	U싒UUuE'@%W,UuE蠶@%W|j1Sh@%Sh@%SjuSSuSwSj0Suju@%p3;tZEP'@%PPPPjQuuQQ@%t8juj@%t'u@%eEE;GH!EW	p@%E}t	u@%}t	u@%E_^[̋UVuN3EEWyDE9u9AjEP@%ES'@%uGjjjj0jujQ@%8wjZ;tttEWujjjQRRj0Rujj@%H3;t*EPSSSSjVuWVV@%tVuV@%u	p@%E[}t	u@%}t	u@%E_^̋UVuN3EEWyDE9u99jEP@%ES'@%uCjj0jujQ@%0sjZ;tttEWujQRRj0Rujj@%@3;t*EPSSSSjVuWVV@%tVuV@%u	p@%E[}t	u@%}t	u@%E_^̋UDSV3j4EVPuuu[]uuh@%j)YYj2XUWMQj8MQj
P@%up@%Wht@%jEPjj@%P@%5p@%u֋tWhD@%뾃e\@%3WӅu֋Wh@%뙍EPWu}/ftOY֋tWh@%j^;Ehܶ@%PrEuj_MQPueu֋뻋E3ujӅu֋Vh@%juuME!}}tu9}t	ul@%_^[̋UPSVW3j4ESP3]]]4ZMD	3$LmC%E4E+E"EEEEuuEPj8EPj
@%up@%Vhd@%jEPEPuVn;uEPkEPMcuЋPf@@f;u+ȋPf8@@fu+<h\@%|?W腃؅uj^hL@%WSiF%$uyEPjujSc5p@%=%u
}uj2먋EhD@%PEujMQPujSc֋Vh@%j赏p}SEPBEPMKj2^PEP轆M;u9jEQhԷ@%jFjW^}tu菂tS腂_^[jC%jC%jC%kC%kC%kC%mC%"kC%lC%mC%̋UE-VtAHtuh@%j͎jW^XjhuEPu?EPE"jj@uEPuEPEPFEPm^̋US]VuW}WSuu8uWu臈_^[]̋U 4hF%3ʼnEMESVW=@%3SMMQSjPEׅtOVhX@%j輍p@%zuދut>;5qF%w6qF%D0;r)P>^tuFW܅tStcku2uF;rPqF%؅tHeapuuj^Vh @%NuSEPVjuׅup@%VhX@%*3$@%Eh@%Puj^Vh@%jތظ@%f3H
E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF9uv*<f|=f9<f|=AAf9AAF;ur>M3t;HeapuSqF%ƍe_^[M3-Q̋U4hF%3ʼnEEMS3ME]9TlF%uZ;tVVWQL@%jYu3]]]]]Ef_^u)EPu5HF%@%up@%9]tE3M3[P̋UQVuNl3EM9,uN9tDS]WjYSRup@%E tjPuQ,E2_[E^̋UHSVuFlW3ۉEj3Y}]󫍆]]]]]E9X9,08th@@%hE| 葊Yuh@%hqYE| uKEPEPjVE;t=4]j\u@%YY;t3fuu0WPE;k8cuSuP,]9]tuTP]t
uMURPQEP,uSE;9]t
uxiF%Y](9uWZE;EPSEPSSSEPEh@%S7E]Eܘ@%]p|iF%,;tPoOE=K/ouEpiF%YYuiF%P=OEHuEpiF%uPEpiF%;t ;tShPuόEViF%Y9]t
uxiF%Y]9]tuO9]tu{E_^[̋U0SVWj3Y3uЍ}}Gu0uh@%hu]9u!Sth@%jYY3cEPG-3;thH@%j軇YY0uuiF%YYE;uiF%ViF%PVuh@%SP;tVuh@%KSuiF%YY;t$PXiF%VuhX@%h =uL;tVuh@%h hSSupiF%;t#ViF%PVuh@%h؆EE];vbh@%PyE;uj^EM3;v/Epf@@fu+AEp;sAAB;r3ۋME;tf9u@%MQSMQSSjuPuuu|iF%,;t#ViF%PGVu0h8@%h9uuiF%YYu8iF%ViF%PGVu0h@%j…VL1;GPuЋG_0h@%h艅3EP49]t
uxiF%Y]9]t
utiF%Y9]tux_^[jE%JE3;f98u;tzf9>tuh$nF%jTCJYYE};t3ۃMt9B|=u˥@}jWEXT3j_tjJj0h
F%K3ۉ]EP3GWuE;EPWuE;EPWuˋE;n9]u(9]u9]u]EX\X`XdKh(@%9]9]EPWu܋5@%;}PhD@%jуEPWu;}Ph@%ۍEPWu;}Phȵ@%ōEPWu܋5@%;}Ph@%멍EPWu;}PhP@%듍EPWu;}Ph@%zM;Mu2;Mu-U;Uu%;Uu Eu܉p\up`updHhPl]UuuuuuQhس@%j hؽ@%jYYEWEE3@Ëeu0@%EEEJ̋UQE(S]3VW}M9G$;GCW 1<t}u~Mt>}u8G8tfGQ0E0wh@%h9G0E0wh@%hG$G G$G<uCU	E(EM;"%G,u'@%wPwhx@%h舁33ɉM9Sw3_^[$3ҋC1kwH~tKS	}9T9U} }$}~ueU@@DXu9hkF%l@%EPPPGLP76jhkF%E@%E3EFF~t2EPu$Fu uuuPW8EuF~tKKCU	E(EM;Kp̋Up4hF%3ʼnEMEUMSV3MWẺU3ۉuu؍Hf8@@f;u+<GE;tPf@@f;u+]uV@%uj_fWu̍FPf~f~
FD}t#FNSuPf^f^FD
3!FfFfF=P@%hT@%EP׍EPSS||hH@%EP׍EPEPuS|]<@%E@@%EEP@@%}	P0@%<EPEPuЍEPEPEPEPjuEVujPuR}
PM3V@%}tusR}tuPRM_^3[wC̋U}u}t"E;Et2tuu<@%YYu]̋UE]̋UVu4QpFq96u^]̋UVuWP8@%3;}P0@%WWWWWj|WPƆFhHRWPqWPq4@Flh$nF%jT<yBYY;t	K3|;ujXyVF3_^]̋USVuF@D3W9ht-HIDuPV;tPh`@%h|(;tPp,;tPD;tP@%t
Pl@%;tPo;tPoP=rP1r;t>v#4r4foC;r㍾7Po'3;tR3;v74qPq4oG;rɍ7n;t>v#4mq4nC;r㍾7n'V4VE|t	j'?tưV(@%_^[]̋UQQS]E}dv
6 E(W}$t3VuF EPW0TI}u
M$A;39^ v]}FevB|O;|tEU;Wr}E(uE$@UE$C;^ r}uF t6؋EPS0H-}u
EU$Je~ w3^_[$FME Pj0tH3}uSGDvWH;t
F;rku2kwH@GDjY3󫍃LP@%Sh@%趄}MɍEPF#ȋEQu @uuPPÀSW2@8Et(}E(u&+GHjYM$QqA
}uFEEM;H ̋U(SVW}EP3ۍEP]]]؉]]]]]RE;-EPEPuuSE;E;EPEj^RPX|h@%uVkE;uuuSP@]9]v_uMV0F]9]v 6EM4T@%uZEE;ErEFEE;ErEPSSuu@%t@%u p@%E6@%E	E؉9]tuj9]tuj9]t	u5Y9]t!39]vE4@%F;urudjE_^[̋ULMVW33}j4u쫍EVPuuf?EHIDMtj2^Vh@%jvSMQuLVjQ3CSPWutVhP@%u}E=p@%EPSj@%P@%׋uHEPj@%P@%u׋Vh@%	EPjjjju@%ujYVh@%EPj8EPj
u@%up@%[M39]Qj@Pjju@%up@%Vh@%EPj8EPEj
@%u׋VhX@%hREMuEMEQjuujj@%u׋Vh@%StMht7}u+VuttVhȿ@%htu
EM3!u[}t
ju<u}t	ul@%_^̋U4hF%3ʼnEES]EVu3W3Fj_DžDDž@Dtj2^VhX@%;u3#ÍHf@@f;u+#ÍQPqu%PVVh@%^PuLjWPjV#rtVh@%4j_P@@%}P0@%Vh@%js f;5@%j@YYuwj\YYugÍPffu+ȋPf0fu+4h@%t6VeShL@%VWiF%PPtPPPWjD@%=p@%uPhP@%j
rtjW^h@%H@%PP3PQPQPӅ׋zh@%Pdqh@%}dBQQQPjӅu	׋
3ۉ$PPDž@%t/P<@%YYuǀ$QSSPS@%u׋Vh@%jUp`9ht=u.V;tVhȿ@%hpu3j^t9ctl@%t
j[pM_^3[4̋U<S3VW]3}ȫj=@%kF%V]]ԉ]]؉]]]]jSSuy>E;}MA@DMԉEM;f9ShQEP9sE;OEPhEPEDP=E;t="E>E8tu.V4@%E8tu	PYEVX@%9]E}u,}uEVl@%EPH@%jVE׃}]u-EE@AttE_}u
E˃}uEEE]9]h@%j`ЉU;ZjYSu3E}4RqE;EM;tf9tShQPqE;EPhD%uu~ctugu`E}t#EPhuuf;E;u_uUuuusE;uBEG]};}9]tEHl@l}u uE9]tu[gu	`uwU9]tujU9]t	EPbVl@%8]_^[tEPD@%EE̋Ujuuju]̋Ujuuju]̋Ujuuuue]̋UHS]ClVuW3jEY3U}FUU0Uh@%hUUUkF399,09Mt'~FW0h@%hVk59ukubEPEPjSE;t*=4uEFPF0h\@%jFj\u@%YY;t3fuuQPE;E8uF~9txEPS%E9(uKE;uEWePf@@f;u+@EhT@%P](;tuuP9,uUEuWu0,9,u!h@%hE| iNYY}9}tud0}t
uMURPQEP,u3E;9}t
uxiF%Y}(98uPjE;OEPWEPWWjEPFE}E@%}EW(p|iF%,E tp;txPiF%PuEpF0h8@%hhu>/E=KPF0h@%hhF~uEpiF%YYu<iF%SiF%PESpF0h@%jYhS.E5;FPE~pF0h@%hh}9}t
uxiF%Y}9}tu.9}tuG[9}t	EPaK9EuF}E_^[̋UESVE  W}EE0hP@%SgU4;t9xt3;uuVhD@%j{ZuENE~F4Fq00h@%SgUN3;uIJl<;u5N|t)M NQPE0h@%SfU|0h@%SfEPEPWuE39Etu0h8@%}t*M FFE0h@%S9ftEMQ@MQPuE(PuuE39Etu0h@%d9Eu$}tM FFE0hh@%눀}u~EPEPuuPuuEtP0h@%SeEt-NM eFP0h@%SRe38Et'M;t NEE FQ0hP@%ĊMNM FNQPE0h@%,}t!~EuE 0h@%u)9t9uh@%SdYYE| 0h`@%S~dkF%Sl@%FaVut^jSE@%}FM vuCkF%SEl@%EPnjWuuzjSE@%}uJEfF(Q0h$@%ScM 3FFE}uE 8uFME_^[̋U$S3VW3}]ܫ}Gj^]]]]u@D]]E9]ujWXtj2^Vh@%EPu1up@%Vh0@%EEPEPSEPSuSH@%p@%zEMh@%PEMUE;7h@%uUE;MQMQuMQPuSH@%up@%Vh@%M}tjW^uh@%7uSuuWoEPSSVLPjWa;tVhH@%EP@@%;}P0@%Vh@%EǀuEPjD@%up@%Vh@%EPf@@f;u+Eh@%DPTME9uj^uu0EU3fPEQSuuSPj@%up@%Vhx@%jaC9ht.Wu;tVhȿ@%h`Eu
EM3]9]t	Susa9]t	u@%9]tuT9]tuS_^[̋US]V33W}uCuu@DEtj2^Vhx@%ih@%9ht9uuVh@%G9uuEMQP.up@%Vh@%EPVVjLP3GWS^tVh@%WEP@@%}P0@%VhT@%3EǀuEPjD@%up@%Vh@%WEPf@@fu+4?h@%FPRME8uj^uGW0E3fEQ3WuuWPj@%up@%Vh@%j^C9ht.Sup;tVhȿ@%h^Eu
EM3}39}t	Wu6_9}t	u@%_^[̋UE SV0EWu;#M(k|};u0LP@%Sh@%ni}uO_G`E+uxEevEEM4_uGEEM;ru}}EPE+PjPSuu3u8E+t(u}E,E$ h@%Ph]E,$SFFu};]E _0^[,̋U3}dEv6 xS]VWE9C vW}CM4tEPh8D%VPRue}t9|u0MEEEEE;C rE ME3_^[EPEPuuVuWu9Eu8EtEE  ̋U4hF%3ʼnESVW3j|LSPE]ȉ]$uTkF%9EtEk=@%jV9] u9]$tEWJjSS]S*E2EP7MLC@DPMt"EEP@@DV<l@%LPH@%jVE׋LHl<;tDP1LHl<Th@%W[LHl<jSuTP_E39EIP9E E$S0xP^3ۉE; EPhxPPDP(E;t=	E>	E8tuTV4@%E8tu	PDEVX@%9]t-uEh@%W&Z8	xPM3ۋu(;uSTh@%jY
kd;tL;5qF%wDqF%D0;r7P*tFO#ĉd9dtdStckdu9F;rPqF%d;tHeapd9duE	VSd!E(d`E0}(lhv<u,+d7Pj6PEuqC;`rпE4t u<Lu8PE4	uHLuDu@P E	LP"t e=EP3ۉ0uE9] vE,p4uE;u,x];u'@%PTh`@%WX#k];tK;qF%wC
qF%L;r5Q(utkX!ĉEE;tStckEu4ukH;rQqF%E;"HeapE9]]]̉]؉]]9]10EE0;EkELP@%VhP@%tbEMK3CCLtF}uP:Qu+L0h@%WVECeEP3PMQMQPPPPLPE8Eu#0Th@%WfVECE6EEE;0EЋEЃE;EM9Mu*xu'@%QPTh@%WVjE؋M33u;tF;qF%w>
qF%L;r0Q&t&M̋E؍DOu;tStckuu7M̋EH;r QqF%u;Heapu;EƉu,]̉]؉]9]vi3ۋE4~uIMQNQMQMQ,QjQPLPEu8EuEFEE;Er3hX@%WTYY]}}(EЃ}uL@l99]vL@lE9uEM9M];|]EM4pD;`*~0Th0@%W)TptUEPuЍFuhOjjPLPHE8EuF0Th@%~e}u+4PLh8D%SPIt	f*~uw0Th@%WnSEPEPSLEEP0Th@%W.S}tjX	38EHFF~0Th@%WR8PEPj(|PEPLEe8tPF0ThH@%'38EHFEP0Th@%WfR~"LeƅHM4@t(@xuELM;rƅHDEPuЍFuvHjPLPEK8EuF0Th@%#~u)}t#F0Th@%EW:QEEE;E*xu'@%`PTh@@%WP3E}]}N`;p3҅j^E0;Ku0~x;u'@%QPTh@%WnPu0Th@%.u0Th@%u0ThT@%WP/MB;L}uuP39htYL@luGLPE;tPTh@%hO<;tuu9uuLP39dtC39`vd98t098F;`r㋅d;t8HeapuPqF%9}t639}v3E47G;}rEt8HeapuPqF%}t39}v3E47G;}rE3;t8HeapuPqF%9utu7TPDxPD9LtLc79uuE4;tMVEPBEP|hkF%l@%}tLPD@%E_^[M3@D̋U(SV5@%W3jkF%S}}EEE}֋E8E;}EWjWW}WE^S}l@%PH@%jSE֋G@DEE3E9u;t.v*h'@%p<@%YYuEF;rր}usEtEPEPVWE8EuBEPEPE$jPVuWEs8EtOhD@%u?uMhD@%jE?8+3fE8.uEP@3u9utpE'@%ff;uf;tfPf;Quf;u3;t9EMQVMDQPEYE;Et
PM4EDEEEE9EdEELP@%EEt63v0E0p<@%YYuEF;rЀ}Etu-S4@%Etu	P5ESX@%}EtEPEPVW込E}u8t`EPEPE$jPVuWEuy8Et1u>uhD@%u=tREUEELP@%EM;tEEE;EEMeEEtP"L}tu3Sl@%}_^[tEPD@%E̋U0ESV3Wuu؉E;uuPf@@f;u+DEԉu}EM E9mu;'}}uE?_Eu9vzEM4u܃t5E܍p>xuХu|EEM;r}u{0h@%VHEPEPSu{EKEP0h@%VH}t!E'E }@EG?0h@%VlHEPEPju|Puu.EEu48Et	!EEP0hP@%VHEt	P0h@%VG?u
}u&E G0h@%VGEE3};EE},P0h@%P0hL@%VbGEE_^[̋U<4hF%3ʼnES3VW3]č}ȫ]3}ԫjkF%W]]]]3]]@%9]9]E;jSSuE;EE@@DE9]u
ShuEPJE;uEPhEPEDPE;t=HE><E8tu+W4@%E8tu	P0EWX@%9]E,Sj@uEEP7JE;EPhEPu#E;Wl@%EPH@%jWE@%=qF%r0qF%$r#PStj$X3
;tStcku"j$qF%;tHeapu	ECEEPEPjVu^u^uNE;uFM]EW9]tu-9]tu-9]tu-;t>HeapuVqF%EP:9]t	EP:Wl@%8]tEPD@%Ee_^[M3	̋UH4hF%3ʼnES]V3W3u}E =@%0EjhkF%uEuȉuu؉uЉuuuuĉủuu0jVVuDEHUIDEȉM܅f;2VhREPHEPhEPEDPt>EԀtu5hkF%4@%EԀtuP-hkF%X@%TEԃ}u,EEb}u_EtE܋@lEEE4}uM뿃}u%EtIlM	MEЋEet@EE؅tMQpudEЅt@EEMkF%Vl@%EPH@%jVE3}9}t	Ex}E؅tMQpW2}EЅt@EE8MQPW}EjYMQRP7"uet@;5qF%w8qF%D0;r+P{t!FKetEStckF;rPqF%EHeapE}SEjYMQRP!8uet<;5qF%w4qF%D0;r'PtF
etEStcku/F;rPqF%E.HeapE}e}t$WuEuPEPuuSuuu2}t$WuEuPEPuuSuuu}u&EPEPuuuuu<C}̋E,3E9uvc]}u(u	EPC*t:t5EktE8tMQpuuF;urh<@%u2]uj^E e}84E3E}u)Exu`4Ep0VE/EM8Et/4E܋p0VhE܋pEEE;Er3u'}tu']t-EvE7'MuC8HeapuPqF%]t-39}v<t4v'G;}rC8HeapuPqF%}t	EP|4hkF%l@%}tEPD@%ƍe_^[M3W̋Uuuujuju]̋U4hF%3ʼnES3VW]3}īj=@%hkF%]]]Љ]]܉]̉]ԉ]]؉]jSSu;yEEЋ@@DE9]u
ShuEPA;7EPhEPEDP;t
>E8tu1hkF%4@%E8tuP'hkF%X@%;E,E9]tHEPP4;EPuy(P4;tMM;xjP(lEP.P4;SEPu1(P4;tM붋E@E;kF%Vl@%EPH@%jVE׋Epu;k];t<;5qF%w4qF%D;r'PtFe;tEStcku,F;rPqF%E;tEHeap9]uj^~E0;t4}LP@%VhP@%Fw_O6;uuҍEPEPuuuuuN;9]9]tM;t
u#jWqM;tuE"P93;]9]EE9X9]uF0j
ưYX39xv)t4MP2;u|G;xrڋE0j
Y}9]v939]v2E49]t
MM[P2;u+G;}rыEEME;MIEM]3u#9]tu#};t.E;vE7"MuE8HeapuPqF%9]t	EP/hkF%l@%8]tEPD@%E;tPQƍL_^[M3̋UE3r4vQuKPXiF%Y]̋UVuWV@%6vVhL@%hJ9uFtPtiF%YV,_^]̋USVWuE3P],}tPEH@%ǔ7}FPEP)3uZ63;uEPujHlh@%u+؅jHjS.C0P8@%}ES+3yFP@%vvVhh@%hZ8NH~p7>uCHuPcKu𥥥CHECECCYuD@%_^[̋USVuW~W@%7vVh@%h7uFtP8F0P(@%V*_^[]̋UVuWtWH@%ƔQpv96uWD@%_^]̋UQeSVuWu6iF%YY}u2iF%WiF%PW6h@%h7WX0uWe?؅t
S6h@%FjWiF%YYt#PXiF%S6hP@%h 6W?؅tS6h@%h 6hjjWpiF%؃t'SiF%PS6h@%hN6SsEPvjuh@%uK)؅uj[IvC6P<KCMeK3AQPSh@%h5E} 3ۅtWtiF%Y_^[̋USVW3SEP]]@)uF0PEH@%E8^ t-EF(P+-MF;t	P^^ E;u9^{}}38^H%@u9]tu]9]tut]EP*EPWSSvSiF%;EP*EShPEP8;F;t+PEP.uJShvEP8;uQN;tEF#MQuPEP;tpKu!E8F (V@%K9]tuEP)9]tu|uD@%_^[Q'tKu릋FMNEv@%F0pPh@%h3FM3z̋Uuu(u33ɃA]̋USVuF@DW=@%tLP׋FpDh\@%t>LPVhP@%`>PS3XVh0@%h2FlLPvlh@%$>_^[]jhF%E3;uSh@%j2jXXjZ;u8`tE3]]
r	QPhx@%]9PQPhD@%hIP;u	QPh@%79]u\t	QPh@% 9JPt	QPh@%T;rLrQPh@%j2 E 3@Ëeuhp@%j1EEE'̋US]#EVWtLh@%V1YYuVz<hH@%V1uE@DQQpl)Bu,zu}EPEeP\@%t׋pEu	\uEt\thkF%4@%VuLP@%Vh@%3<33_^[jh8F%]uShX@%j0jX"eEPuSEE;Et"XSh(@%hp0E<jYbA%3tsl@E]39uu9ut\t]9]uB}t\thkF%4@%SE9uu\LP@%Sh@%$;BEXSh@%h/ 3@Ëeuhp@%j/EEE̋UUu3S<IF%uE{;MAv-	f9 t%f|A t@%t@%PQ@%YYj{X]̋UEPu@%EPf@@fu+SVWEpEIF%NL>;v+H>h@%DP!؅uj^6EV0Sj-YfL?QuPSu"3EP @%_^[]̋UEW};HLrV03Xu`txt!69Tv\t}u
6;u3u3}t\thkF%4@%VuTE03^_]̋UEJF%t;MtHu3]̋UEMt
qp"3WjPXS3+V4
;uGr;^[_]̋UVuu2.EEtE	W}𥥥_uEhC%Pu
#^̋UVuujWXEt }S]t	EtEW}EPWVSkt-Mu}tPuW<#3}t3]et~3h$@%GP]؅uj^P}Et CWC6PBEtK}𥥥{u𥥥uSu2u3ۅtS,_[^̋UVut^EWP6Vh,@%h+~!t}ut
PWVE"Oy܃~_ut
P&f^]̋UVuj4jVEEFEFEFEFE FE$FF0PhT@%h*^] ̋USVuXW}33;KF%u)];KF%u_;KF%t_;KF%u KF%ƃr_^[]̋UEE]̋U4hF%3ʼnEMEVuWpQhC%QpPUH M%'_3^̋UQQS]VuWEPEVkt(EXu`t
u3_^[uFSPER0u}VXSH QWPME(03;tuuW9MtEuF;txPu]E<QQ(VSuCeuuuuL̋US]C kht@%P3;u3@K HHVs ;v)Ws4upu<B;S r_^[]jhXF%eEXU
EU;wQtHʁ,t7t+btItIIt
IuP,tm(f_XQ|Jʁt;It1IIt&tItItjWXPtM3!EE3@Ëeu0@%E̋UQSVuW}GleEEPvjuh@%uo؅u2OLP{@%Wh@%o2CKMq1P9ElCY_^[̋UEEV2;s%v2%+W1<
;r
wHy2_^]̋UQQESVW3}};t8E5@%p@%;tF8EPWWjuօu
ӉEzuzuW@%M;tbMQuPjuօtO}}9}txEPWWjuօu
ӉEzu.uW@%M;tMQu}Pjuօu4ӉE9}t*u@%;t;tPӉ>u;t;tPӉ>E_^[̋UQQMSVW3}};E;5@%W98EPW3CSuօtOPhh@%S}hX@%uXM;ujXPh@%PEPuSuօtWEPWju}օuh@%uM;tPEPujuօu:jWXPh@%jE$u;tP>u;tP>E_^[̋UQS]VW3};E;uNM39Mth$nF%3jZQKYYuh@%Ej@MtAu	3Gt:M	GE;>~#h@%EWj#YYt
3!;YE_^[̋UD4hF%3ʼnE}SVWuh|@%j#YYjWXMEuhL@%}uh @%u33C]}$@%j_t8;5qF%w0qF%D0;r#PtFtStcku)F;rPqF%t
Heapuj^jVW@%truSjW@%taSEP@%tR3VWSEP@%t?VuEP@%t-VEEEEEPVVEPVEPu]V@%u
p@%
]tEtG8HeapuPqF%ƍe_^[M3,̋U4SV5@%3Wu3]]]]]]֍EPEPEEEPEPuu6}EPjj]}@%E;(EP]։];vrMEPE4u@%u@%];EP@%jXfE̍EPEPuu@%;|$EEE;ErE fMH]39]tuG9]tu:9]t	u$Y9]t	u@%;}u@%h@%Wj!_^[5p@%փt'փt =	t;~
%
pf̋UEHyt]̋UMMHMHM	HMH@]̋UVufjhD%hD%hC%FPv6@%EU3ɉFPEANLFDVHtX;tuNTFT^]̋UVW}7;tSLrVKKu7;u[_^]̋U4hF%3ʼnESVWEPEp3j}3ۅt8;=qF%w0qF%D8;r#PtG܅tStcku!G;rPqF%؅t`HeaptS!suMCq1PEPuESP@%tFC8HeapuPqF%ƍe_^[M3y̋UQSVW}_P3u
XIF%E;E90tPWEh@%u7taujVEXt
epVh@%v6džL)GLTGGL>F0Gw~}t
uW@%_^[̋UMVuWF<QP<VuXWlt&u MQPW=uuW
VW9FlFlh@%h_^]̋UQeSVueW~ v-^EPpuhE9}rփeEPjYRPEPuu(EPju|sh$@%u|؅t`F e{{F <v>ENS<Ep0W?ExEE;F r‹_^[3̋UVuW6VhL@%WFHPuu)~utPVh0@%W6&fEj(P_^]̋UUBV0r0~uVrpI^;QuAJ;uAB]̋UAVpWuFP"tv6~t_^]̋USVuW}j3X;HtvHtLHt7HgEXpJF%u
h@%Pu3ɄQ^EXpJF%@u
h|@%(뼋EXpJF%u
hP@%땋M398Pk1;vQMX;t	΃2Q;uojMX;t
tuk΃2uAutQ^;믋UX JF%;tVWuR;u3_^[]WPh @%jjWXEMuQl8t̋XpJF%uh@%<39hEMuQl8tXpJF% uh@%jYY9puhl@%j|YYj2h39lT̋UVW}wh$v F0Ph@%h:VWL6u_^]̋USVW}ًuv6WL~Yt_^[]̋USVuFpWt
PfpNHFHXuFpDD8~d	WHuV*XIF%tVЍ(Pk
P_
^V
tWS@%ug_^[]̋UVuWLP@%Vh@%W"uhkF%4@%V5V_^]j hxF%3ۉ]]jkF%W@%SEP`
]E E9]th@%jYYEWujSuVE;ut8u"W4@%8uuEWX@%9]uxSE4IF%uEP\E;uZEPhEPuLE;u>uVE 0]+EE3@Ëeu0@%EE3ۿkF%9]tu9]tuEPWl@%EjhF%3ۉ]]jhkF%@%]EE9]th8@%jMYYjW_ujSuV_;E8XTt98tu1hkF%4@%8tuVshkF%X@%;uYƆtuEPujSu;u7uVlE03%EE3@Ëeu0@%E39]tu]hkF%l@%jhF%}3ۉ]jhkF%@%]EE9]th\@%j2YYjW^aEPS}WS;uMujSW6;u;}uuuW%EE3@Ëeu0@%E39]tuhkF%l@%	̋USVWjEP6]u]u}uXtVyEHHj[+-Ht>XHJF%tuuuVыyuPh@%SjW[_XpJF%uPhd@%S}uPhx@%WYY}uvlhPu؅}9Eu7``uhH@%WjYYEh(@%偎dX pJF%uPN}uBhx@%WYY}uvl}u]}uXpu<hl@%SYYj2`uhH@%WYYEzh(@%FlujlPu؅}9Eu` d XpJF%uPl}u,hx@%W9YY}uvl}u4}u/+`uhH@%WYYEh(@%jPuEP؅@PEP}'9]u`dX@pJF%uPu*hx@%WoYY}uvlIu4}u/+`uhH@%W=YYEh(@%jPuEPI؅x(PEP}_9]u`@Kd@<XpJF%uPhd@%ju6hx@%WYY}uvlreu?}u:XIF%.`uhH@%WZYYEth(@%3jPuEPc؅XEP؅yEPhEPv7uW0]0<@%YYuES}u
$pu0XIF%tMQNqDЋ؅EPvEujcEp^hs{tke{ vaCMSX4>MQEPEuPEEPEPuuVuEE;C ruF3P@%u`E3ۅ}u9]u`
dEPu$FlFlh@%hf
_^[̋UQeS]W}X#JF%y@t(PtP3A t6Xt
;tuuGllltXt;uht8Vs##VXtp0hWtE#u^E_[̋USVWjkF%W@%3ۃ}EPSuUu2ujS]S5uuuPSTutSWl@%_^[]̋UEV0W;tF}\u3EPEjuPt*tjju>uPu	6;uu3_^]u?̋UVuv"NVH^]̋VWwp@g6_v^̋UQVuvE;tPuuEuEE^̋USVuXSjjVEuHW~lLP@%Wh@%uVKV$Eu!EV5tW+_E^[]̋UQQS]38tVsdW>utNMXMt
tu!WW3t}tPuޅu}tWFuFL;Eu}M93;uvHvXu7P	u(>Suƃƃu*3_^[̋UVuWPW@%7XVh@%h	vlh|@%]vlVhl@%JVF@DtPhX@%/FpD?uTXuKtBhkF%4@%Ve2t#tVtPh@%h	Ɔt3_^]̋U4hF%3ʼnES]\VWjYbA%<3t\SebA%}쥥EP@%u2EPEP@%| ujjSu聣`@%S\Sv&sd>
jWM?;uvHuSG}_^uSmM3[̋Uju	]̋UVuNE;tpM qE;Fu^]̋UEXVuuh@%jYYjWXUWj_u;uYtthT@%Mth@%AudhLEPEPE;G3h@%WYYjWX_^]̋UVuVuuu0u8tVuut^]̋UVu3W;t};txMXS]u/E9Ev'EW4juu|u78u3EM;Mr39}v+V4juuQu8uG;}rt[h@%jYYjWX_^]̋US3VuW]]]];uh@%jdYYjW_EPEPu;u<EPEPuu;u#VEPuuuu;u8]t9]tuV9]tuI9]t	u3Y;t_^[̋USV3WSEP]]]Su;tEuvl{u
C}t8Eu/;t`t
 uu9]tWE0h8@%V'uV	hH@%VYYEPhuu9t;3]}tHEPhuu
uJEteEt_tjY<<3tFjP)9]}tZEZ;EIF%tuuЅtƒ}t#9]tEPuuu.뙾EPjuSr}EuEPu3;%E`3G48pE;u[l	URlSlƃtIF%;ujWSuЋ9Et9}t}uq3QQsVhjQCtWPCh39Et}tPPVhjPPW-PPVhjPQW3PPVhjPPPut9S?}uS(}tEtuSFuj^V}uEJF%%PSEu/EpJF%%u	`dE 33]tS.}tS"}tuEP8_^[j hF%73ۉ]]jhkF%@%SEP]E E9]thP@%jYYjW^ujS}W;}W98]u	tjċGlutuWu}P4IF%uEPuZEPVVEPSuW}u@uVE 03u+W #EE3@Ëeu0@%E}tu}tuEPhkF%l@%(̋USVu3Wt|}tuuhx@%hGtPxPuJXtu:tHu2L }ud}uhtPWVSjW[_^[]̋UQeVuWvlXu
S]EPuS=CtxPuEECM<jjK(QPuuSV
u$FlFlh@%hmEtItVu?Lt5EEEPEP1E;GtpuEPpC	`3[_^}ud뤁}uԋh̋UQQSVWGpذEFPuEt6v~tދut0G;uuSjEP.E@-M)wuuFPt	uSuċE0@_^[jE%uX3ۉ]t	9]u$@%h`@%W E;ujXPh,@%jEWuPXu"}ud}uehL;tSEPEP]M8Xuh@%hjYY&]!jXPh@%hEK)D%39]tuE̋UeeVuW}uuXtWuj^/uwlu
ESE]CEujYMt9HPt<
txPujW^hP@%VuYYuVXhH@%V_YYEPjC(PuuoC	dJuXE@tNxPuHE5lF%5T@%S]քt
jW^h@%5lF%SքtjW^h@%jYY]e]EtNMQuuPt:t'xPu!MQujujPpDEE}r]`;uh@%jEYY6 tXJF%tSuWЋRjuuWSu
6Xu$GlGlh@%hXXt	G@DXEuuEEPEPuSuuSPuuSuu>un9EuM1PS39uuE@	`GlGlhh@%h}t}tuuW}tu[_^̋USVWjEP<jhkF%@%}th@%jtYYjW^M};tatYu%Xtuʋ΃2EPEPQWt7uhp@%jXtt	pujjWul9]u}u
PWuJ]{tCxPuuEPjhuEPuEPVuSWDtW.EPRhkF%l@%_^[̋USV3SEPjhkF%@%9]t}th@%jYYjW^sW}EPEPuW_;tuh@%j@ujSW;*E9Xt@xPuuEPShuEP;XuX`tOEPEPuM9]u;Ev3uEPuWuiXu`9Mt	}uMG@DXuu39MjJRPjtujuWtWV_EPyhkF%l@%^[̋UVW3VEPuujhkF%@%9uth @%j'YYjW_Su]VVS9f8tuSh<Ej4IF%EuP3;EPSEPuu;XF@DXuE98v340jhuC;8r39v/0jhuubC;r`ujjVu=}u
tEVQ}u}tEvIuS3u{tVq[EPhkF%l@%_^̋USVuX3W;uhhDh|;uAFlMQSuPruu^SShDuV8Fu<F@D~lMQSuP&tEPSuWt3O_^[]̋UMVp3
$
D%E|$M;jEEPtjfM;̋E(׋EPE뫋E,EPm둋EEEQhH@%jjW^^]	D%	D%
D%C
D%)
D%9
D%q
D%q
D%S
D%]
D%g
D%̋UDSVWj[jY33u}VEP],E- I/HHtuh<@%SKEW	}X4pJF%uVhd@%̋E%Eu1hx@%SYY]uwl}u9]u40`uhH@%SYYEhh(@%jPuEPE9Eu]u|t9Et
h@%6PEP3]}u	`	duXpJF%MMeu/hx@%SYY]uvl}u6]u1j@X/`uhH@%SYYoh(@%jPuEPE9Euo]uj|t9Et
h@%=9EtMh@%EPh@%EPEPEPu EPEPuuhl@%jPEPi@EPH@%PEP3PD@%W)}u\]uW?tRtIW4EtFPH@%PEPO3PD@%}]}}u}XpJF%uPMMeu-hx@%SYY]uwl9uu9]u43`uhH@%SYYth(@%ujPuEPE9uu99ut4E3HtEpP@%YtEFH;rE
39Eu4]u/|t9Et
h0@%9Et9u
h@%PEPV@E5H@%P֍PEPPD@%P'}uY]tGt>P2Et+S֍PEP<SD@%]}u}`dz}X4pJF%E%Eu1hx@%SYY]uwl}u9]u40`uhH@%SYYESh(@%jPuEPEPEP@E5@%39Euk]uf|t9EtXh@%j6YY9Ev@9Et;jh@%uփu(EPjubEth@%jYYAPEPvjh@%փu	ƇaƇaGlGlhT@%hE}]}uXpJF%uPhd@%MMehx@%SYY]uvlEPuEA39} ]E99H99L9u9h@%?`uhH@%SdYY\th(@%eu9th@%ubvlAuhP@%jYYE2]9t
h@%9u9Hu9u9Lth@%Pht@%E|E#ÉEu9}u`
dXpJF%;9}ughx@%SiYY9}uvlCuE9}uz9}uu9}~p}~V}ud9u\Wj@h@%PKE;uh3=`uhH@%SYYEth(@%};9tP9}u"}u}u`
dEPYEPE_^[̋UVu9uu6 ,S]W39~ vFSPuuG;~ r3_[^]̋UU|3tQhh@%jjWXMXu
E+PQRr]̋UVuW}VjWu)tHt
t
jXǜE83_^]̋UQQEPEPuuuuujuuuE̋UQQEPEPu^uuuujuuuŐUQVuEPEPV u*E8uXtuuPuuVU^̋UQQEPEPuuuujuuuG̋UV;rEtVڣY^]̋UVuPdP諛dtPdtjdhtPhtjph^]̋UQQMSVuW3dhX33ۉ};uM"u
AlEuAlEA@Dك#ڍ#‹USPUu(jjWMRQNhESu\ujjWP(PWWWWjjS\PոWWWWjjPSWWWWWjSP覸WWu,jjWPS菸WWu,jjWWPx$nF%SjYYȉM;t
_eE3SjdШYY;t	;e3ۉh9dujj[Sh@%jad;tPd;tjdh;tPh;tjwh_^[;tVPN;u3̋UEV3-tZHt@Ht3HHtuh@%jjWTEEPt2謹0EEPM;E|}M;uj^^]̋UVuW}VjWtu$HttjX,E83_^]̋UQQEPEPuuuuujuuűUQQEPEPucuuuujuuűUQQEPEPu&uuuuuuűUQQEPEPuuuujuuu̋UESVuW3LX3ۉ}}}u
HlMuHlMHYDEMс#RQMQjWW|QPFhFWWQjWWPP&MW|#RSjWWPPEWWPjWWWP۴h$nF%jYYY;t	a3;_L^[ujXPh@%jEE̋UVuLtPRLtjL^]jhPF%諦EeuuuʳEEE̋UE=|&=~=~= ~=Q~
=jX]̋U}uW(Vuu@u@%u3^]̋UQeVuWu@7V@%EPuujXfE!}F}t	u@%_^̋U$VuW}39Fu9Ft8SMQPv3@%tVEP@%؉p@%؋[_^̋UEURPQ(uE+E%W]̋U SVW}W3h@%h]]]]EP@%jW;MQWPD;u@%E;u
EPu;unEURuPQuEu॥PQ$;9]u7MQhbA%W;u#Euu॥P;u3E;tPQE;tPQE;tPQ9]t	u@%EP@%_^[̋UQEeVURPQu<MEff;uftfPf;Qufu3%W}t	u@%^̋UVu&ulF%Pu3^]̋UlF%VWu3PuNt
u
jA_uKEPuVt(=sFtGtB=	t;~1%
%}t
~tlF%WuuP,u_^]̋U}ulF%uuuu/P0t4=s/t!t=	t~%
P8ϸ3]̋USVu3ۉ]]]]@%E;u
ulF%u PlEURuP;EURPQ ;9]W}EURSPQEURPQhEuMQPEuP@%EYE39uPWuuu ;9utu@%uEPQuu@%C;]uI3_u@%39]t	u@%9]tu@%]E;tPQE;tPQ^[p@%E-t;u9Mt3f;t9Mu3f;u@%PulF%uu P(d=s=t?t:=	t3&=st!t=	t;~
%
̋UEVuVPuh @%6u^]̋UVuW3PPjPjh@v3Ft@%u
p@%PFl@%_^]̋UE8slF%E0NF%3]̋U]̋UVuPQVV^]̋UVu3@%up@%^]̋U<eSV5@%WEP֍EP֍EPu5@%։EuEh@%։EuE]URPSDEuh@%h9EPh@%PEu^uuԥS@Eu?MQuSEuEMeeuu䥥S@u5@%փ}tu֋EtPQ5@%EP֍EP֍EP֋E_^[̋USVu3ۉ]]]@%E;u
EURuP;EURPQ ;uwW39]~WEURWPQ;uZEURPQh;uGuu<@%YYttEPQu]@%G;}]|uh@%h3_E;tPQE;tPQ9]t	u@%9]t	u@%^[ESuPQP;űUQQeeSV5@%Wu֋؅t#EURSPu8u։Eu%EuPQluEWuPQTuEtPQ5@%tSփ}tu֋_^[̋UVWu=@%3uuu׉E;u
S]URPSEURPQ }~
WurEURjPQuth@%u<@%YYu(9EtEPf@@fu+u
juSPP6u׉Eu%EuPQluuSudu3[EtPQEtPQ}=@%tu׃}tu_^̋UM3;ujWX}u
9Eu]̋UM3ujWX]̋UW}3ujWXVu~u
VPuN^_]̋UQEeVueURPubEURPQuQ9Et9EtEuPQ$u7u'=stt=	t~
%
EtPQ^̋U$Vu&EPju@%tuhP@%Bp@%=s&tt=	t~%
=uuh0@%h3^̋UVEPu3EEuKPE9utw;09ut
!E@EESjP[ff;u+p@%ȋƍPWf8fu+hh@%DP5ujX9uu;jXEPffu+PuWƃHffu+ȋEPf@@fu+L	QGVP3VVuVjuWt@%up@%E{uE2Pl@%9utW@%WE_[^̋U,S]33VuWMԍ}ث3M}諫3MMM;8CEPEunEPEPujuEjX3ɋ=@%URQQQQPjs׉E="u%slF%PpuXEP3PPPPjjs׉EtC=s+=	~
%
FEvEE%SF%PlF%jցSF%VhRF%uusPDu339}t9}tWEPuWul@%9}t	u@%_^[̋UTS3VWu3]}3]}lF%]]]]]]]]܉]3PtzE@EE9]EP;uEPEPuj;=s+=	;~
%
sulF%PtEulF%P tE9]\9]\(EulF%PNj}u2uEEPSSSSVjw@%;3EPuE%SF%PESSS%SF%SPE%SF%PulF%uP=u	E3;9]t*EPEPEPu@%up@%9]tEPEPEPu@%tсuuSSVjw@%;l9]tjuWA;u39]t39]t%SEPuSN;tPh@%h@ul@%ulF%PL9]t	u@%_^[h,hpF%蜖}EOWiF%@ǍPf@@fu+p6Pj@@%؉WVS>3uPjVVSE;ua39qv{At>Džj\XffrhP>Au2G;yr'=f
uSiF%uSiF%WtPu$>tQ躝S@%3@Ëe@%E3l̋U4hF%3ʼnEVuW}.&&3fffEfGfE3WDžfE @%PPEPcuPf@@fu+=SXf@@fu+Dh@%PƼ[uDžOuQPEPQP<W62=tt	P茼&jWXM_3^"̋U4hF%3ʼnEEMV3;;SWPhP)<3fEPiF%=iF%P׋$@%Cp@%tXPiF%uGPiF%PiF%t)PVVPVVVVPӅtPiF%Puz;_[M3^jE%q3ۉ]EPhcA%jShcA%]@%;|ZESPEURuP;}B;uPh0@%VWh@%VWh@%hd;|EM]EM;tPQ褍̋Uh4hF%3ʼnESVW]333VP|@%9ut]j\S@@%YY;uSh@%+@vSh@%jjWwWShP:3f}P0;PPj33GuVVPS@%uj_VVVWjVVPPhPDžDž@@%="u?;}P0@%39t(9tVPVel@%9td@0Vp@%t@%M_^3['̋USV3W}EEEEP@%]jSMQSPDu@%EtVEURuPQEuTtPURPQ uEEPf@@fu+ph@%6P茷uuVP73EtPQEtPQ}t	u@%EP@%_^[̋UQeVEPuutkMS\EHj[+t
W1Ej]$@%^ff;uftfPf;Qu
fu3E@%ff;uftfPf;Qu
fu3u	EdE8@%ff;uftfPf;Qu
fu3u/]*ehP@%Q<@%YYuEQ@%YEEPulF%uuP(t1=stt=	t~
%
	3[}tu躵^̋U04hF%3ʼnEeS]VuW}Wh@%hEPulF%uVPt7=st!t=	t~
%
EtfHtFt-HHtWgMЋ	8@%u$@%@u;@%4MЃ9D@%t'P@% E0Eh@%jP5EEu PSWgu}tuСlF%PLM_^3[9̋U04hF%3ʼnEES]V3W}E؉}ԉuЉu܉uuu;t79uMQhH@%PsEPh<@%uXEPu$@%AEPuEPuܡlF%uSP=st!t=	t~
%
M]Q<@%SP|,9ut'EPu$@%|uu쥥TMEP@%|Duu쥥0EPEP@%u}E0uSuuf}3Vjuh$@%uuEt	t	uu(uuuju9EttE!uuЃ}tu袲}tu蔲}t
EP @%M_^3[%̋USVuWEPVu3u]u ]u]]]]EEt;t9]};M;uukxRF%M;tEF;t>v6uPuu y9]t;t9]u
};yF$;uŋM|RF%;tHF;tAuu vv6uP*9]t;t9]u
};'F$;u‹M9]RF%;P@%E;3E URuP;EURPQ ;9]]~rEURuPQ;juVu3uuuuvuuB9]t;t9]u	};uEEPQEE;E]|u@%EP]Q];};u39]t	u@%E;tPQE;tPQ9]t!9]u9]t5lF%jWPu_^[̋UQSVWEPu3ۉ]};u0uSjuSwWK;u9]uSuW;u3E;tPQlF%jV5Pw_^[̋U4hF%3ʼnEMESVW3;;8pf@@f;u+f9\ufy\t/fy:t3PQ;3fVPQGG9qF%r.
qF%;r"Qt軄܅tStcku WqF%؅Heap3VfSPt ÍPf@@fu+,j\P@%YYt+HHPf@@fu+p<6GPlF%PHt+uVQFVP-3f
Džt;HeapuSqF%ejWX_^[M3~j$HE%SeEeURP5@%EPhl@%ME9}EuXEURuP|2f}u+EPjjEPEP@%|E;HF%w3
tu@%EP@%EMtPQlhpsE%~E}EE P3@%SPhW](@%u#p@%@%
YOv
{=uPt=sÃtŃt=	t묍t6h@%F PF؅tjY3EVCC QPCC#}ShcA%j3VhcA%@%;VP;9uEE tlF%5HF%
3FP@%KPP@%-TWP@%Vh@%WP+3;RP;t|Q3P9t Wh@%hp@%h跶 ;Wh@%hT@%h蕶9c@%RCPs;-KRPj3PHu3"PWs@%tCCp@%EtFC*usquC="AC3uuSuM9tCFCF
3ۃtP"3t
P @%ttPQSTt@%WP@%I{̋U(4hF%3ʼnEESVuWjEVh@%@%?~
f?:'!@%ƍPf@@fu+‹Qf9AAfu+ȍD	NƍPf@@fu+Qf9AAfu+ȍD	;qF%ƍPf@@fu+Hf@@fu+؋ƍHf@@fu+ЋHf8@@fu+ً
qF%|Y
D;ƍxf@@fu+Pf@@fu+ǍDA
PtXƍPf@@fu+ȋPf8@@fu+D
|܉tStckƍPf@@fu+Hf@@fu+؋ƍHf@@fu+ȋPf8@@fu+ٍDL
;rJƍPf@@fu+ȋPf8@@fu+D
PqF%؅tHeapujƍPf@@fu+PVSwHf@@fu+ȋƍPf0@@fu+L	QCPvjPPSiF%P荩t
9v@;t2uuujPAj{_j{_tC8HeapuPqF%Ǎ_^[M3v̋USVuW}EP3V_;u)9]u8^tSSSuvVv;u	^_^[]̋UQQESVW}3ۍMQW]]P ;uu9]tk~`MQSWPu]EPuu>uHuu<@%YEYtPQu!u耣!uC;]|	MeE390uEtPQ}tuC_^[̋USVWE3Pu}3ۉ}}}@%;EPf@@f;u+ȋEPf0@@f;u+t	h@%6P蓢;u
uuh@%VS#Sh@%h8 EPSub;urEURPQ ;u_9}~XEURWPQuFEURPQ,u3EVuPQPu EPQE!uPQ!uG;}|3}t
EP @%tSEtPQEtPQEtPQ_^[̋UT4hF%3ʼnEEMS]3+VuW}u}ỦUUUȉUHtyHHtlHHt
W.EEPEPu lF%QP!E9E}EMċ<EPwR|]EE렍EPu lF%uQPuCE0Eh@%jP!EPR%
TEPu lF%uQPt*=sރ=	uWSVmu3}tu̡lF%PL}t	u@%}t
EP @%M_^3[qEPGP@%uEPuSt
uQu9utu@%u9ut
EP @%uEċE;EIp@%6̋USVWu3ۉ]]]@%;uXEURWP;u:EPu@%;u'EPuuh<@%2;u
EM]3W@%E;tPQE;tPQ9]t
EP @%_^[̋UQQS3VuW]]9]tR}tLEPuh4@%uu99]t%}tEPuh@%uuEE!]3]EtPQtSP_^[̋US3VW}]]]]]]]9] u}EPuuu W!;,9]t}E kpRF%E@%E;URPW;EPulF%P P@%;EPuuh<@%t;;usEPlF%juuPt7=st!t=	t~
%
\REPuuhH@%
u
.uVh<@%h臩39E$tY9EtPuWQPEtRF%#ulF%P P3uc;u9EulF%Pu]MQuSyMQuWPTbuuh@%h蹨9ut
EP @%!uEPulF%P P@%Suh<@%uulF%Py$uhH@%ujjuuulF%P@t$uh$@%ujjuu] kxRF%t<2ulF%PGtuwuw7uuruQuȋ|RF%t<2ulF%PGt7uwwuuuuu3E3;tPQ9}t	u@%9} t'E;t ;EtPQuh@%h&E;tPQE;tPQ9}t
EP @%9}tu輨_^[ jpE%l}ulF%eWuЉ}PeE܍EP@%FtEu}t}uE39Eu8Etv{EȉEċ;t@lF%VPt3ulF%VP EulF%VP EġlF%VP$uEPS</lF%WP jYtkF%3u(EP@%u؍u॥EPu܉EuuuuuS}ЍEPwEPW3;9MMԍEPuMH]ԋ|deMQSE|uuuuuuuS!EEtPQ|uSMtSP}ЍEP@%9uuuuW}EPjw@%t_EGEG9MtuS넃t!t=	t;~
%
aW5p@%փt$փt=	tօ~
%
uuuWuEP@%E̅tPQ9j̋UlF%S]V3WSuuuuP}EEG9uu0MQP]&PuW!lF%SP jYtkF%3lF%SP$EEPlF%SP P@%]kpRF%Pf@@fu+ȋEPf0@@fu+th@%6P}uj^quh<@%3h@%VWWh|@%h胢$EPWuu5EURVPQu!}ujjuuuW1u3}t
EP @%}tuwEtPQEtPQ_^[̋UE8slF%EWF%3]̋UE8Mut"EuEtt
t	u33@]̋UlF%Vu3P3A9utt	;tu
t;uuEx$t 	;tu	}t@lF%VuuP,tVh@%h ^]̋UVuNu>FtPiF%YSWj~[tPKuF_[tPV^]̋UQESVW3h @%u8Ep}iF%;t5ViF%Yv@h@%P<@%YYuG;r$EiF%PXiF%YEWu}tViF%YE_^[̋UEVW4@%uuiF%ujW^DPf@@fu+tlF%VPHMuj^V7Pd3WiF%Y_^]̋U(4hF%3ʼnEEUMSVW}EE3ۉU}؉EM;;;}bA%5@%3hd@%RfE]֋YY;Mh`@%WYYE;5P@%fEDP@%fEu@%u@%YjEjP@%M؃CrE]hT@%u֋YY
h`@%WYYEuEW}t~]H;she5@%PfEGP֋5@%fEuփtQuYtGjEjP@%ECE}Dw
;rEM܋]9sEjWXM_^3[b̋Uj,u@%YYȅt3BIIf9\t@@tP]̋UE0E0<@%YY]̋UQVW3EPVVh@%VuuuiF% u
9uuj_;u9ut39ut
uxiF%Y_^̋USW}3;t/9]t*V39]v!tuP<@%YYtF;ur^_[]̋USVW3ۍEPSSh@%Su3u]E@%Et@%EEiF%;tPXiF%WuuiF%YY;t7ut5PuiF%;t7@%;D5Y|3
wj^;tWiF%Y9]t
uxiF%Y_^[̋UVWh@%uuiF%t,j
EP6@%;HF%wEf8u3ViF%Y_^]̋UP4hF%3ʼnEEMMMM̊MSVuMMW}3ۉM܍MPEP@%EE]E0EEE]M]E@%EԍEESEPEPWvEE$@%liF%E;t5P]XiF%؍EPj3viF%uuSWh@%h 莚(M_^3[_̋UlF%VuPulF%Pȃu#}u
3t-@*}u3
u}u3֋E#^]̋UVuWh@%P3M;uj_3;v
<@;r_^]̋UQeVWh@%jьuu2Et@tPt	P֌&E_^}h@%P背Axt3vыI$@;r̋UQQSVu3ۉ]];t}9tkW38@;t99t(39I4LEE9I9uڋ8p)48E}]9u_9]t	6^[̋UQQeeSV5iF%Wh@%uu֋iF%t7@%WEUYYht@%uuփtMPYEEU_^[̋USV3W9u};u7lF%Pttj2@%@%EPlF%juuuPE;uWÍPf@@f;u+ȋEPf0@@fu+t6PlF%PHu	EuSVPiF%}tulF%PLEjWX_^[]̋UM3;ujWX]jxX̋U3t;MvW]̋Uu|7ES3Vtf9t@@NuuWt
|+Ή
"^["]̋UlF%VWu3uuP}M7E1;t4t/t*ulF%PX3}t
uiF%Y_^ESh\@%upiF%؃];SiF%_D%VjPSE@%3]E}Es2tuPSF%u	@%,u	PSF%t;TSF%MkUF%<tMDVjuEuEP@%tEEruh@%h J'uuu[Vh@%h ̋UVuEPu3uuuuuu_E;S]W;t=t=u@%YE;t]5@%h@%PYYt5;u=u
=uE Wh@%uYYCuEPjvEHiF%3Ƀ;t"PXiF%Phh@%h EEPQQh@%QuviF%t%PXiF%PuEh@%h ǓuviF%YYt\h@%PviF%EtC0@%Yt u0E ;u=u
=ueEPjvHiF%tPXiF%Phh@%h Ee}t
uiF%Y_[}^t
uxiF%YE̋UQQlF%eeS]VWSP}ujW^t4h@%uuPiF%EujW^WpSۋEPEPuSutVh,@%h WuuuSu}t
uLiF%Y_^[̋US]V3WuuE@%E@%;};EPVVh@%VVSiF%tPXiF%EuSiF%YYEtsh@%PSiF%ӋtaViF%$\@%PVViF%?YuY3tuuӋt&W6uEu$ViF%GYr˃eEEWtViF%Y}_^[t
uxiF%YE̋USEVuW|iF%3URWWWNQWMQhA%8FWv}P}EE@%Et@%}Ӄ, uK9}t
uxiF%Y}EPWWWFPWEPhA%WvE@%u}Ӄ, u	E`;t
PXiF%YEOuuiF%YY;t6N%QPuN,;wrN(;s3A3ɋ]9}tF(V,E 9}_^[t
uxiF%YE̋UW}'ulF%P\t3BlF%VuPEPuju3t3}u^_]̋UMVuhVUc|(}vWEuU+ЍFEj%^]̋Uuuj]̋UQVWh@%j_W
u&fjVuwhA%j@A%ցI@98uj_Mh@%j
0 VuuTiF%t"VXiF%VWuhTA%h R3jEP_^̋UVuWjVaua@A%EPf@@fu+xhA%?PI@8uj_jEPuW0& 3_^]̋UQSVW}33]F9uEPf@@f;u+38]\EPjYRPm}\hA%ugƃ8ujX9}T@%ud@%QS0wuS40h`@%S403_^[̋UlF%VWuPeeeEPlF%jjuPEPf@@fu+D6EhA%PEtMPEPuVP@%tVuhA%h =uhA%6PJ}uj^hhA%VPluV7hA%V7@ulF%P@Pf@@fu+phA%6P~MtWVP3ulF%PLulF%PL_^̋U4hF%3ʼnEeS]VW}u&EP@%usEPEP@%u_]EHf@@fu+phA%6P@~uj^&hA%VPeuV7hA%V73u}t
EP @%M_^3[ŐUlF%SVWu3uu3PEu9uuEE}ǍPf@@f;u+}Et{}tuW};ujW\EP+Nj}PwX;E9utEPuuX;EEhA%P&}uu+jX~ulF%P@EPf@@f;uM+QhA%uP 7}W6}t}t+]SuW6,uW6r}tuW6a3_^[̋UEWp ujWX<Pf@@fu+Vph A%6PO|MujX
WVPu3^_]̋U$S3VuW]]]]EXA%E4A%];9]~EPSSh@%SSViF%;tPXiF%fuViF%YY;==iF%h@%PV׃E; Pf@@f;u+p
h(A%6Pp{E;hA%VSh@%VShA%VSE0VSEPjEPh@%jSuiF%tPXiF%Y\uuiF%YYEtzhXA%Pu׋5iF%E<@%tPYSPuMuiF%YE8t338h4A%uu׋tWYSPWxMWiF%Y33jW_9]t
uiF%Y5xiF%9]tuY9]tuY9]tuiz_^[̋USW}33;t/E;t(}u9MuVp08u	Vp^jW[_[]̋U,3SV2ۃ}W}EEEE܉EEu]-tHt`tjW^\EPEPulF%uPt
VhA%hHA%/}vEPEPlF%WuP3;tVhA%hA%h UM܍E3}};vu4tEE@;r3;vu4tEE@;rE E9}t@E};EMuuuEPsSNE<?u0EuE@PWuMHЃjPu[u@%!uEE;EhE9EE+EM}u}EPCP@%E<97u,EuE@PWuXMHЃjPuu/EP @%!uEE;EiME394t@M }t
EP @%}t	u@%_^[p@%VhA%VhpA%h ̋UlF%SVuWVPE3PV]]]]E;tPhA%;tjtet`VF%PSuEuPlF%VP$PE;t P0hA%h IEPf@@f;u+EEPf@@f;u+ȋEPf0@@f;u+MthA%6Sv}iuVP7}tuV7uvhA%SuE07VPulF%PEPuE9EuhA%SuE7VPEPf@@fu7+tu'hA%6S@uuVPhuV7uMuueAueulF%P$E5uV7e39utu	u9utut9u_^[tutEPhA%h xE̋UL4hF%3ʼnEe}ES]VW}I}?MQuu$PlF%P3;tVhA%h E+tgHt]t?HHtjWEujtuj XPh@%Ej PE#E9t	EA%"EA%E0ȋE3ɉEf9u9M(ui9ujPuTEf8tIPf@@fu+phA%6PcsI@8uj^
uV0x3}tu`sM_^3[E$WuSP/tVhA%hHA%h ̋UQlF%S]VWSP3E9}tuu(;Vh\A%{u9}tu0lF%SP@E;u WEPulF%SP<;Ej/p @@%GYG}Yt1ujWuuSVVh(A%h ~o}t-WuuStTVhA%hA%h ~<ǍPf@@fu+phA%6PqMuj^
WVP3_^[̋UD4hF%3ʼnEUMESVuU܍UW3UĻ$@%U}}]̉}Љ}EP@%EEUԉ}9} tE9}tM;u2WuEWPQV9E;tPhA%h }EMMMQWWWMQWMQh@%WPvE0EEE|iF%,;t"PXiF%PuEhA%h t}kuviF%YY;tRSPvPiF%;t5hA%0dpM܉;u	E'1qPOB}E 	E 9}tuRp;tVLiF%Y9}_^[t
uxiF%YME3A̋UQQlF%SVu3uuP`]VVVMQPSE;WEPjv}E;jWE;@t@%jwVE@t@% hA%jDoI@8u	EP@h$A%j0SjCPWusliF%t
PXiF%Y}C%tEPSjE3;_tjEPm9u^[tunE̋U$lF%SVu3uuuP]VVVEEPuuS;tPhA%h 7{:}WVVVVCPWF%V4(VF%5WF%jus\iF%,};u)iF%PXiF%YЍEPuR
uVRhA%-Vu5WF%uWS"ЍEPuRuRhxA%h zWsiF%YYu3@WF%E`WF%}ܥ}taujuuuuuuuSF#ЍEPuR^t@}u}uWF%`WF%}u3_9u^[tuCmERh(A%h y39utusiF%YY̋UQeWjjEPEjj0PtWhHA%h xy3}tul_̋U4hF%3ʼnEEtESVuEEWpE3jCEESPu]]]Aƃ]3]x]Hf@@f;u+A%Qf1AAf;u+t6hA%P|kE;uE}|6PSuAE
VF%LQPuhA%Vu5iF%3$;=VF%];uRupuiF%Eu;9upuiF%E;E`d9]t
uxiF%Y]9]u SSSEPut
E;t3lEPSSSl`SPh@%Suu|iF%,;tt-^t(;t$PXiF%YEJuuiF%YYx9xtuxuiF%EE;t9;|PSu?uuhtA%|uփ 9]t
uxiF%Y]3G$}hQtMQMQMQPE;9ht'EPulF%u uP0E;t+Ph0A%EPulF%u uP4E;E};q9]t
uiF%Y]VF%9ErE9]v]9]t
uiF%Y9]t
uxiF%Y9]tuAi9]_^[tu1iME3:P6hA%h uuhA%h u̋UQQlF%SVWuPueEEu
x$t2jQMQjuuPtWhA%X}VF%tHVF%ɁhVF%QсVF%QցXVF%VPulF%uuPDtWhA%h t3ulF%PL_^[̋U lF%SV3WuuuuuuPuElF%PE>9u 5}+}!EPulF%P P@%EPf@@fu+phA%6P=g؉]tuhd@%VSduVSh`@%VSEPlF%juuPtWhA%EPf@@fu+phA%6Pf}uj_hA%VWuVWf3PP3FVPWSu`iF%t"PXiF%WShtA%h Csuue]u}u	MNtyu}unu uuSVu}9E t9<t<E @@E8uM@%H@AuE}uO3}tue39ut
EP @%9utue9utue_^[Wh@A%h &r̋U(lF%SVWuPulF%P3u3ہeE؉}}}}}}܉}}"MI$CM9}t;t;uExVF%EVF%9}%9} E};tt	9}t{tvtqutttuYVF%PjuEPuut3;hVF%PPPuuuuruQd!uEGw39}uoSuEPWuuuR;tRVh	A%h p-t3C tE;9}3};t9}$t@%3MQuMɁhVF%QuuP#E$P#E P#EPulF%uPu	E3;tVh	A%89}tE;tMuuuuc;tVhH	A%9}t)9}u$juuuu;tVh	A%339}tubulF%PL9}tub_^[ ̋USV3W}3ۉuuu,]/Qv(;Av-!u5iF%uu֋ȃME Hj_+tjW[:0@%YEu}d u_h<@%uu֋tB=<@%h@%6YYth@%6YYtjW[EViF%YE}E7hA%1<@%YYEu	E!]1@%EYEPlF%Wu$uP(؅ui3eE$uE$t tt;ulF%WuPlu$uWuuuu1;t+ShA%uh
A%h jm}t
uiF%Y_^[ ̋UQlF%SVWu33ۉ}Pt	;tuntdt_tZutttuBVF%PjuEPuu%؅uu؅uqu`!]G|t
tu`VF%tPVF%DSF%Vh`VF%PjuuuuP؅t$Suhx
A%h Sl}tu__^[̋U4hF%3ʼnEEXE\ESlEVHEW}TlF%3W`h@PlF%WP3L@#pPtu9]$t((;t;t	;tu,,hPjT;;t?hH	;tVlhA%h  k~DžpLtEWpPhu hPSF%`\%;tVhA%h j#Tdtt8`𥥥u"9Pt=t=utPtu pPh`;hp9t'PɃAAp
tIHdtd'h9DT@%Pf@@f;u+L<@%Hf@@f;u=@@%+$dPSStDž0KdT׉ ;{tPXPjjjSdH@%Ot;u9?H;t	-TPSqt0L@%t90*89p$h<@%p@%H49~3҉<L4hT@%V@%LFf9Spf@@f;u+Hf<A>PQhD/tPDPjjjjTH@%t;t9vH9H9t=PL@%tPDPjjjjdtH@%At;L9H	#up@HQSp@@%tL@%3t;tPDPjjjSHH@%HPD@%;t;9H9APf@@f;u+hA%D6PY;t\t@VpFVW-tWY8VlhA%6p@<4Y@<<pt;tPL@%3t44I<9ht88<p9"t;t
PL@%t90u
TPD@%9 u
dPD@%9PtVl\TiF%!XSPVl\liF%;t(WXiF%WVlh`A%h "e9(9Pt>xP@%;tVlh,A%`x"^9,/u l`\XS39htjhPR9@t
@xiF%YM_^3[m) @PSxPh@%SlDžx@%\Dž|\@%Dž @%iF%;t'PXiF%Vlh
A%h cI@\iF%YY;ujW^)u P`\X;Vlh
A%c;tt	VF%tPVF%%DSF%Ph`VF%Qju l`X;Vlhx
A%̋U lF%SVWu3ۉ]PE8]t;u3G}3]Gu]]]]tEt}uEPuVEulF%P9}t
}EPVS];tWh
A%h ^b9]ulF%]P`SSSMQPV]]t;tWh
A%뵍EPuu;tWhX
A%똍EPSSujuviF%;tPXiF%YuviF%YYt9]t
uxiF%Y]9]tuT9]tulF%PL;tWhA%SSSEPuV;tWhA%h [a8]tESFPuvdiF% ;t|PXiF%WuhA%h aulF%Pu3~EukuUF%UF%uuvV;tWuhTA%h `9E39]u+9]t&9]tVuu9]tEPVj9]tuS_^[̋US]3VW}EEEE;SuEPu#tVhA%<h@%uuPiF%EtTWu plF%uSuPtVh|A%E tctuYh@%uuiF%EujW^0EPu7lF%P<tVuh8A%h i_U=`SF%tJjX`SF%	ut"u jTSF%Q7uuuuJEEPSF%9u3ulF%PL}t
uLiF%Y}t
uiF%Y_^[Vh
A%h ^̋U04hF%3ʼnEESVW]u}쥥EЋE3EWEP}}*RÍHf@@f;u+ph,A%6PQE;uj[ShA%h C^SVPÍHf@@f;u+DE܍EPuءlF%u}uPd;uGuu쥥AW}u-u3WWWEPuV;tWuuvVm39ut	VuN^9utuP9utuPM_^3[" ̋U84hF%3ʼnEMUEeeee}(S]Vu W}}̉M؉UEu$SPuRQWЍEPu$RAt;uRhA%h \}uE$tG%Puu:G(W,e>t>u$pp03uuWKЍEPu$R̺tMEEƃ8u39Et}t}t	9E(E9E(t$h@%uuPiF%E@RhA%>h@%uuiF%E܅EPu$jCEЅtm}(}p}쥥@%t@%PuuiF%MQu$u0uuԥủEܥPҹp}̃}(c}t
}3lF%P@39uuW9uuj;6@%YYEuEEju$u3WЍEPu$RLuRhA%j,u@%YY;u9uE{+EhA%@@~?PMEԅu9EEVuWP:E3Pfp3lF%P<}̍EPEPu3WЍEPu$R蝸uRhXA%*uuu$3WĸЍEPu$RquRh4A%h "Z}t
uLiF%Y}t
uiF%YME_^3[$̋UlF%SWu33ۉ}}PuElF%PVuWWWEPuV;tShA%h Y]EPWWWFPW4(VF%h@%Wuv|iF%,;tPXiF%ShA%PuviF%YYE;tJulF%P$WukUF%PSEPuvV;tSuhHA%h X3^lF%jSuP9}tuL9}t
uxiF%Y_[̋USiF%VuW3}}}uviF%YYuviF%YYE;EkUF%EuEu0EuuPuvVMQuEPK9}u9Et3ulF%PTt$uuV^MQuEP
9}tlF%juuP}uvhiF%YYE;X9}t
uxiF%Y}EPWhWuvӃ;^t1PXiF%YMQuEP臵uuh`A%h 6W9}t
uxiF%Y9}_^[tlF%juuPEuh$A%uhA%̋UQeVuƍPf@@fu+\FPKMHHQWf9AAfu+Sً΍Qf9AAfu+ʍV+‹thA%6PI؅hA%VSuVS4EWPVShA%VSuVS39E(tTF%
M(VF%uP5VF%VPPRPQujSv\iF%,uiF%PXiF%Qu(u$uu WVMQu$EPuuhA%h UWviF%EY3EYtWviF%YYSH[_E^$̋UQSVuW3Wu}ujh|@%jh@%vV>ЍEPuRVuRhA%h UWWWWFPW5,VF%hpA%jvv\iF%؃,;u6iF%PXiF%YЍEPuRukRh(A%h TVWujuSVЍEPuR迲uRhA%h pTSviF%YY3;tSviF%YYE_^[̋USVu^W3EPWWWFPWhWF%hA%Wv}S}}|iF%, uE;tPXiF%YEuSiF%YYE;uS;tPhXA%_EWuEhSF%WWEPuSVЍEPuR躱uRh4A%%uuVЍEPuR蓱uRhA%h DSE 9}}_^[t
uxiF%YE̋U(ESV3!u!u3A#WEEPf@@fu+|hA%G8PE"j83SVQ3@WuFEF8PF E~hA%jE@%@3ACArƉDE@M~jY3}EPF P]up@%WuhA%uEuiF%3YYF;u4iF%WiF%PWuhtA%h QWXiF%SP)Z;tWuh0A%SviF%YY;tPXiF%WuhA%EvZ;tWuhA%[hSSvpiF%;t$PXiF%Wuh|A%h &QrEPv;tWuh<A%F0Pvuuv蘳;-9]t`EPf@@f;u+vGjhA%u@%u0E3f;t f,t@@Bf;u)v
 9^u:EPf@@f;u+xh4A%?PoCF;uWP] tq#eEPj0viF%t!PXiF%WhA%h O@EPf@@fu+x?PlF%PHt"uWP}t)Vu
F$j F$39Eu9EuEt.uuV.WhA%h ROM t,~0HF%ElF%Eu hA%h OYYj2_jEEEPlF%jguQP(uHEPlF%jhuuP(u.jjuuVEu39}t+E0}!jW_ttFtPiF%fY] }tV蔭}t	EP,HtttPlF%PL#lF%jWuP_^[̋Uuuuuuju]̋USVuW}EPV3j;u 9]tSSSu6Vv ;u_^[]̋UeSVWjEPWAuSV|jPFd-,WVjS{-^SVjWn-jVjSc-UBlX3Ct;u΃2upBltEPVu.EPWWEPjPV0HuE`}tu5EPB_^[̋UuEuDujQjPlK]̋UESW}WuDujQjP5؅u:8tu0VjkF%V@%76Vl@%^tj7L'_[]̋UuEuDuQjPm6]̋UuEuDjQjPrV]̋UQS3VW]9]ukF%]|E};Xu|9t]vt8u29]thkF%4@%8u	W5E9]thkF%X@%9]u:|9Pu9\u9xu;uE2EWE_^[̋UQEVuW3-X}>t7HtuhA%jJEW<WuujWJB!S]S$t9ujW(B[E_^̋USVW}3VVVVj3CS|QPGhVVVVjSPPVVVVVSPPVVVVjLSPEPEX;t;t
VVVVjSVuVVVVjSǀWu}VVVVjSVWo_^3[]̋UVut2V?FP?F(P?~TtV葄F<P(@%FT^]̋UEXV3ujjh|uDPc=+u!@pDEPjuPRu"Ou*EPjuƔV.uu13^]̋UEV3-,
HHHHt<HtuhlA%jHjWM39|P@M;Ex91t2@@DXu#9th0h(A%j1Hj2Qt?뭋EEPtjhE\91tҋ@@DXu9th.랋EP91t@@DXu9th-pE*M;uj^^]̋U$SVW3SEP;E--HjY+HtuhA%Q>GEWuX<pJF%uWhd@%̋E%EuWhx@%SFYY]uvlH|Pu:E]}8	`j`uhH@%SFYYEh(@%uX<pJF%LE%Eu1hx@%SGFYY]uvl!H}u9]u40`uhH@%SFYYE6h(@%jPuEPJ3ɉE;9MuA]u<9Mt7F@DXu(9t h0h(A%jEE2RxPEPT;	d2uXpJF%!}}u-hx@%S;EYY]uvlGu7]u2j@X0`uhH@%SEYYE.h(@%jPuEPIEux]us9}tnF@DXu9t
h.h@%EP@8h@%EP28EPEP>u EPEP>uuhA%j\PEP>@EPH@%\PEP93hPD@%PW}u\]uW?tR\tIW
EtFPH@%\PEP93hPD@%}D];}u}+`d
uXpJF%uPhd@%}}u,hx@%SCYY]uvlDu:]u54`uhH@%SBYYEth(@%]jPuEPFEcu79}t2EHtExP@%YtEGH;rE
(39MuF]uA9Mt<F@DXu9t
h-9\uhA%j$BYYPPEP^<@E=H@%P׍PPEP7PD@%PP|}uR]utPtD\t;PPχEt(S׍PPEPH7SD@%']u"}u}t`
dEP97E_^[̋UEXuM+MQPuY3]̋UVuW}VjWu$HttjX|E83_^]̋UQQEPEPuuuuujuuuU?̋UQQEPEPucuuuujuuu_)̋UQQEPEPu&uuuuuuuy*̋UQQEPEPuuuujuuulJ̋UEPP]̋UVut9Et2FdF4@F<P8@%}	P0@%FXFT@3jWX^]̋UQEXSVW33ۉ}uu	HYDEuWWRjWWQPFhMW|#RSjWWPPWWWWWjSPhWWWWWjWSZVPP;u3V_^[̋UEVW3VVVVVjWQHhVVVVVjVW_3^]̋UVuEPjuPXuu&jjh|uDV2^]̋UV3}tuh$A%j=jWE|L5Muj^^]̋UuEuujQjPK<]̋UuEuujQjPg&]̋UuEuuQjP']̋UuEujQjPG]̋UEt
MIH]̋UQVW}WJN@M;t;Q~	M;uNE_^}FEEE̋UVjjctEFtMuFPP^]̋UVuW}'taEPEP=E;AtJp\u=}tthkF%4@%Vu#LP@%VhTA%G73_^]jDE%AU+;s+hhA%M}eEPMMhE%EP"‰A̋UESVWux7Pjˋ7F_0^[]̋UuuEHE]̋UV=M;vVW}W+QR,R_sFVPQEP{L^]̋UVu;tW}W)~_E@ME@ME@MEUHRPE@UBEH^]̋UQQSVF^$W;~<H;wvDF PF ;sDF F ^$+؋FK8;xGPA#F ;u?yU;VtJ]}NtMEN;<tFjjRWNQPFVN$xDUN$;sF;VuI8;rU;VtF;|dF$uCG؋Fx;8tE9G~N;<uuEWPN}?E8@Ft	KF;<tE@_^[jE%`ueXumFxDEetEEPV|EEPEPuxMuh|A%h>8YYE/D%EWE̋UQW3}}tuhA%j7jW_OVuXpJF%ujhd@%j7jW_!E%SEu!hx@%S7YY]u6vlv9,`uhH@%Eh(@%Sa7YYEPud+3;9Euf]ua9E}uhA%j)7jW_MQPuFpDu 9utuhA%j6:;u4U|QVu]u9Eu	`d}tum[^_̋UEMV1;s3v3
@I;w@@^]̋UEjhD%hD%hD%DP@%]̋US]VW=x@%Dt	P&vVS@%jS׋u֋u|t֍_^[]̋U SVuW33҉U}䫫U9Vdth`A%h5YY2_^[NP;tEP3v|}w݋Cl@;t6S&Cl@hA%h05Cl@DPEh@%tNLet	EPu}NTet	EPu}t;tWPhA%j4Se|t4EPvLvT`
}thA%h}4YYSM39^F8EFEEPu\@%tl~tuGPFpP(OFF F$F(t
3wO1PhHA%h3F;F(tC;^hE@̋U4hF%3ʼnESVu3W3E]9^dLNP;tEPHt|	9]/F(;FuhA%h`3YY9^LtNLYP!}EPt}~TtNTYPeEPs}v5E|t"NLtPۖNTtE|Ɩ~t}Et<;=qF%w4qF%D8;r'PvtGFetEStcku,G;rPqF%>HeapE}(e~EDEF8M]FAF8t
3N4N1PhA%h	2uu\@%EPWuu@%thtLP@%7hA%=GLP@%whA%<F_t`GGNtO~ttvtvpP}EE;F
Et8HeapuPqF%e_^[M3Eg뻋N@̋UVhLA%j45$ujXj4jVEFE03^]̋UQSVu3ۉ]9^(uFMF(^,^03F,;uFE#MQN0QSjP=;t=]N(;Mu!9Ydt|c}^@IdL\WLQPt#tuD8PSjQ;t3=uI\L9ZHt‹@H본O';tH룋EF(DF,~03_^[̋USVu3WE9FtE9F,F(M<EtwEP\#EE.hA%Sa/YYWSC:hH@%SJ/YYE}EX3҃u;u*u%;uu,;uuuRVP2t(t }utWhXA%S.}EE;F,
]\t}t^39~ vWFXujY3<URV(RPQ:tF(MtGWVS;~ r]Fj(!dVaE_^[̋USVu3ۅt`dXPhA%h-du!\u8]u{`usV%&\t^8]uYu1`#PV+ tP؋0hA%je-W~huWVt؋?uꃦ\_\d}\ut\vh
jF(PA6u^[]̋U}VujW^DSWkF%Wl@%uPSH@%u,0PjW@%SD@%_[^]̋U}ujWXuEu,u0Q ]̋UVu0tCSWkF%Wl@%PSH@%jW@%0,P0SD@%_[^]̋UQeSVWkF%Wl@%uFlPPH@%jW@%FltEt3A3Ƀ`u}uu,ujV0QEt`ui\`Xtu.}uu`uu`t	Fl~h,tjG(PI?u!`FlPD@%E_^[̋USVWkF%Wl@%uFlPPH@%d\Fl,jV0QjWE@%}ue}PjVPt!}uEP0hA%jA*FlPD@%E_^[]̋UVut
S]rjWXuWjkF%W@%uEPMAdt9XPt@HuujW^SXhTA%j)uVuURSPQ$Wl@%_[^̋UQQEt\EPEPuuuuhA%j:)jWX.VWjkF%V@%uuuunVl@%_^̋UEt
VutVhA%j(jWXSW3CSkF%W@%E#ˉ4Xt;tt	#Ӊt;tt	p
#Ӊpt
;t	
#Ӊu"ӈ"ӈt	;tu#8Wl@%_3[^]̋UM\}tXt
tuMWydtDV73Xu	`u\
t
tujV6;uɋHu^_]̋UVWjkF%W@%}uu!}u
jVL\dXtVWl@%_^]̋UQW}t^EPEPuuWuuhA%j&jWX0VjkF%V@%uuWuVl@%^_̋UQVEPEPuutuh$A%jT&EH,U
@(M3^̋UEX]̋UE`]̋UE<]̋UQVuEEtmFl,UR0Q$}tHFl,UR0Q(u7E48t*Xt
tu8	4EE^̋UE@@D4]̋UE@@D8]̋UMX2tut]̋UE@@D]̋UEt
EVut)}u[Xt	tIE
ESWjkF%W@%EPEPuV؅t7uhA%j\$dXuhtA%j<$jWXLud@%uhLA%j$YYjW[!uEPEPuuuV'Wl@%_[^̋UQW}tbVEPEPuu0tuhA%j#1jkF%V@%uWuuuL'Vl@%^_̋U4hF%3ʼnEEVuMQP$@%uEPuuVCM3^#̋UE@p]̋UEMAp]̋UhA%u]̋U0S3VW9]u9]u	9]UEPEPEPu@%~9]9]jjEPu@%S]9]EPuu@%Mt<QE;tq30u;pu3CEtq30u
u3G3Etq30u@#;u
u3@3uutVqt E8uЃPt
LJV@%tVWu$u U=t3EE;E};EPEPEPu@%t"]9]ty9]ttjjEPu@%up@%t39]vPEPVu]@%t,E8u$@u5lF%PT@%t
E@;tF;urEEPhu$u U;u3j
X_^[ ̋USVW}39_va5lF%4vT@%}vu#EPuju@%ju#EPuju@%tC;_r3_^[]p@%̋UE3V;Ut	Aru3%~tuEPjjVEPj^̋U츄9EuuPuu]]̋UEtuuhD%u uuuu{]̋UE@l]̋UE@l]̋UEW3Whu8EP}#;SVuX333+tJt	u
UJtsJtdJtKJt<JtJuntt`,Xttt@8t4D,tt|t
t|MQjMQP`EPEM^[_̋UMX3+tZJtukUt]JJtQJu\,TUJJt,Jt!JtJtJuA91D)!UJt
u|]̋UQQeVjkF%V@%EPEPuu}tuuumVl@%3^̋UQeSVW}uXEW}tG@DuXMP؅t܋uujW[hhA%hYY&ujW[uh A%h|&kF%ukF%|jhkF%@%EVhuS}thkF%l@%t->u(}t"GuxDW/tVuuW_^[̋UE$]̋UESXlVWM3Q3GPuu}];u}u\EPu;tL=tzEuuuu;t.UE91u3		PXQhA%WcEPuz;t=tE9}u-9uul9tE9utu{lV39ut΍lu7;tދ6CPjhsFu
SE;uԋ]빋Qp`96uE_^[̋U44hF%3ʼnESVu83WYF%xf@@fu+WQ@%utf<x:trYF%!j:@%YYu
?+QjY8RP}

3j_t7;5qF%w/qF%D0;r"P7tF܅t
Stcku(F;rPqF%؅Heap߅jYj\XA%󥋵fCl6PCnPAS3hHA%hfDsnPhjSh4@%tWShA%jKPPPjA%VDž
T@%t%WVShA%jyP@%u!p@%WPhLA%j0z0A%VP@%u"p@%WVPhA%jGQhhYF%Ћu-8s,43t;HeapuSqF%t,@%t@%Ǎ_^[M3i̋UQQe=XlF%SWEkF%uSl@%EVuPPEH@%Vb,MQ0QujV8Pu9EtuDPt
=XlF%u
jS@%E39Eu`
`;QPVu}t
l}^u	jS@%uD@%_[̋UQQeeSVujjV=؅WkF%Wl@%PPEH@%,MQj0PjW@%}_uuSV}ut%t	t2PjVEu]uD@%^[̋UQVu`W~lt3jjVqESkF%9XlF%uSl@%PPEH@%tt=XlF%jS@%~,jV0P,=XlF%}u	jS@%u;XHƆtƆutuF@D	PM5PjVuEuD@%[E_^̋UVW}wh~,tjF(P6u鍇`0WtT_^]̋UQVjhkF%@%}th@%jYYjW^TW}EPjW%u=ujPWu+EtWOujWu3tW_hkF%l@%^̋U4hF%3ʼnES]VW39}u
;u	E9}tEMX}}Eԉ}܉};u`tEt
9}t3@3E؉EE;tEP;53j<pWPEuEDžptE]Eut
jEP@%9},tH;tƋ03;t3ɋE;t3upRhpD%WVQPu,;}Ue}k=pEPEP7uB39]}ЋE4pEP39}uFt?9}t
lF%;tQpT@%t}9}t9}tupT@%t}WjuЍEP0;C;]xE}'39}t9|u9}uE9}t4lF%;t+PEP#WjxPEPjM;J39}t-uEPWjxPEPj;
9}u}9}tEej_uk5p~tae~vWFMpX@%}u} t
}$t|N39tX@tB8uEE;FrE}r3u;t<;=qF%w4qF%D;r'PtGe;tEStcku,G;rPqF%E;EHeap9ujWu@%u}k=pG;t9wtzu90tB3ɍ_Hр#URu0QSEMG94uÃ}u+E t$}$tu$u0pWcE3}^VuEjP@%9uu9uu9ut	f	E](}t}t
}EljXMQ5lF%EP]uqu3}t>;5qF%w6qF%D;r)P=tF
}tStck}u,F;rPqF%}tHeap}uj^cjVW@%t/jj5lF%3sjW@%tjWjEP@%u
p@%u0EP-u
9Etjx[jWKu9]t	u@%Et8HeapuPqF%Et8HeapuPqF%ƍd_^[M3s,̋UVuW}jY3_^t3Ʌ]̋Uujj(@%P@%t3-V5p@%=uuj(@%P@%t3^]̋Uuj@%]̋Uh A%u]̋U}t]%@%]̋Uh A%u]̋Uu]̋UEMu!!APVf0@@fu+DA^a]̋UEVuP$@%FF^]jh
F%eEMeEE3@Ëeu0@%EEE̋UVW}jW2uFt5>t0h A%PujXv6PFGFG3_^]̋UW};}s3@CvjX<ejXv.MVu+S;u
E9}r;[^_]̋UVu5$@%PuuPu}^]̋UEp0Ep0Y]̋UEMV0u
39@7ujX,xt	QPI@IQRHPVjh,@%^]̋UVuW}u}}u_^̋UVutPHjV^]̋UQQS]KVAW33E|z+EtIMeuH484uUt#Mu}FEuI~;}~.E0,t!4uUuE8twE02_^[̋UUVuFJ;t+PAPQ@%NF$^]̋UMQV3vW};8t
F;rVQ_^]̋UVuFWujXh A%PtFufP6W_^]̋Uh( A%j{tM]̋UQQ}u2<VEP@%Eu+0MHxrE';
|;w2^̋UEt ȁu}uO]̋UQQW=|@%3MQPuEEׅu`Sp@%VӋuEzu3eh4 A%uu	EMQPuׅuӉE}tt
P@%&^[E_̋UVWjkF%V@%EVl@%_^]̋USVuu3NVW@%|;wu>>zƋMt^[]̋U4hF%3ʼnEEVWu}쥥t%Sj<Y3ۍ}[tu쥥PWM_3^]̋UVu6v&vf}vfqf^]̋UQe}Mt6EAAQEPujQjux@%p@%9u3̋UuuHH@]̋UVuW}G8tPFPuWV_^]̋UVutVFV=^]̋UVuF@DXW}uGP{uWj_^]̋U39Et	}vW|EWu}uj_]̋UE@W3;u
@f}	8t
WEVURhbA%}PM};uEURujPQ4;uE|2EEEPjj}@%E;u)u@%;|3E;tPQ^_M}}Љ}ԉ}؉}܉}9}S@%EURujPQ4;ueEP@%EWWURURjhhbA%uPQ;|-EPEPu@%E;|EPEE;ErEP[;0EM,̋UD4hF%3ʼnEEW}=mF%SV395YF%#=YF%u$lF%h A%h5lF%\(|j
^P@%PPPPPh A%,SP(lF%0 P+PlF%P'|P@u+ ;t~;w=ǃAHtHtHH A% A% A%tlt]t A% A% A%;wEt<@t-ttu; A%N| A%Gt A%@p A%9h A%2t%tt` A%X A%P A%H A%Ph@ A%SP;'lF%0P+PlF%Pw&|P@u++h< A%PlF%P&3ۃ;}=zu%lF%ƀ
lF%ƍH@u+;vrlF%D08
udNYF%s
lF%0
lF%D0YF%tSQV5lF%P@%^[M3_YF%̋U4hF%3ʼnEW}=mF%t:VmF%VH@%EPuhPPWrVD@%^M3_̋UW}=mF%ESVhmF%H@%EPuV5lF%m|5lF%h A%W39]SV5lF%VuSh0@%0mF%
ZF%]u
0mF%x@:u+ǣ,mF%QV5lF%$
,mF%;v;|AlF%SS+VQj5lF%Sh@%~
lF%p@:uSU+RP40mF%
YF%u
0mF%p@:u+ƣ(mF%SEP5(mF%Q5YF%@%hmF%D@%^[_]̋UQ}SVWuEHf@@fu+@Eh,"A%Puh"A%jE= iF%jMQPu׋؅S6E&@uSEh!A%Pu	EajMQPu׋}4WxPE4@%6&Wh!A%Sh!A%j9ehP!A%j"EWYYE_^[̋UQQMeSVuWujW_&EPjj@%P@%u1p@%ӋEPj@%P@%uujEPuunEt^0d@%tRE@uF0$@%Wj@@%uj_1M1PW @%}6@%&Wt!t
P@%&Wh8"A%Wji}t	u@%}t	ul@%_^[jh
F%3S}W^9]u8]uRh"A%jYYjWX]EPf@@f;u+u*8]uh"A%jkYYEE3;EvuuPhd"A%j:̍th,A%VO;u	E=VuP@w_]%EE3@Ëeu0@%EuEE)̋UQQMW3E }M;t~Vpf@@f;u+Ƌ5@%SEEKPYutCE|XvOOKPYuGGu!]PYtE3Ef[^uuuuI}tfMf_jhF%3SuV]ud@%uh"A%jYYEjWXpu$@%h`@%W;u	EAWuP~F]%EE3@Ëeu0@%EuWEE̋USVuNW9MvMF;rvh@#A%P:؅ujXt)NQPS6=6Vh #A%WSVh#A%WN3<FF};t+PQQ@%MF3_^[]̋UE EVW@f9u@ufff
 uPh#A%jjWXq@t@0ptO=@%V׃tVPh#A%EPV@%|f}u	E03#MQPhH#A%j38EHW_^]̋UQV5HiF%WEPju3}փ;tPXiF%Wh$A%SEPhuEփ;tPXiF%Whx$A%&9}t.EPj;uփ;tPXiF%Wh $A%h _^̋UQVEPj
u3uiF%;tPXiF%$l%A%h YYA9uu<EPhuEHiF%;tPXiF%Vh %A%h c^̋U4hF%3ʼnEeVW}EP@%u6EPEP@%u"EHf@@fu+jPuW(}t
EP @%M_3^̋U}uE @3@EVuVuqt3/j:6@%YYt3fP@%YFF3@^]̋UVuVut*Pf@@fu+tLAf9/u3Hfu3@^]̋UVut5mF%tA}uh%A%VYY,EPu@%uuh< A%VEP@%^]̋UQeW=mF%t`Vut#xtMQ0tE	%A%uPLXVh%A%WM}^t	u@%_̋UQW}Pf@@fu+SVtDpf8/u3Nfuh%A%D6P؉]ujW4@%37FVS%g=@%j/S׋YYjhA%Vu@%u
!E!f>/tFFf>uf>/u
3fFFf>/ttO'@%ftf?tj?VYYt3fuuhtuSuu
jW4@%3u`^[_̋U,S3VW]]9]!u;;9]jh@%PE@%u'jY}EPVaE܉EE}GfGGf;u@%+EEEh%A%PEYYMMVu+u>;EssuFPueuEOpQPEteExEE)uh%A%PEYYEuEf8tPuu7e}tEP|EzEWE_^[̋UQQS3VWEE9E!};uhd'A%jm@%%A%VuӃEVPYYuEt7Pf@@fu+EHf@@fu+jY+M+@EPf@@fu+phT'A%6PEuh8'A%jYYjzl}tEPuVuMuVuc3Gh@%uwwwE0wGYY;;EXj/S@%YYujW^h'A%j7YYu3SftSh&A%]5@%j:3YYt3fP@%YCkf;aj?W֋YYt3fǍPf@@fu+,EPWitWh&A%j*sj?V@%YYEt3ff>]{WV
?f9&A%f1f;2uftfqf;rufu3ɃCj,P@%YYtA3fuE6Xj?S@%YYt3fˍyfAAfu+tN&A%f9f;:u6ftfyf;zu'fu3WC h&A%ɃuMa&A%f9f;:uftfyf;zufu3ɃuMA@&A%f9f;:uftfyf;zufu3Ƀu_MAt*pj?V@%YYt3ftuVTu*3&hp&A%h'A%h<&A%h&A%jZYYjW^u_^[̋Vq3@HL<(A%^̋VL<(A%tPKY^ő3H(A%HHHHHHH̋IV3tWVhP(A%h@^̋IVjW^tjltPY^̋UVSYEtV諪Y^]̋UVaEtV腪Y^]̋UVFW}t;t
Pdf~7_^]̋It]3@̋It^3@̋It;^3@̋UMHMH3(A%@4mF%HHH](A%I4mF%tQ轩Y̋VfNQF Pv8mF%vPu^`^̋A=,t5=/t*=v=v=t=t=t3jXjXjX̋Uuubb (A%]̋US3V]^ 9^9^W9^u1h$nF%W蠯YYF;uh(A%h@E_YYWSvF^E;FENύS;wNMtrtjqX@%VȍD׉ME;wIEt
EQKpSE]F EE;FuEF_E^[̋U3SVW3A)A%CCCCKK {$bA%QkF%VC4C8C<CDCHKXK\C`CdClCpCtCxC|@%}tWɵ{L8mF%WPVC@l@%_^[]̋UVNXEtV9Y^]3@3̋UU
;w9t0Jt(Jt JJttJuJA$`A4[ATAOAJZF%Ct8t+ttt3AXA\
AHADAx]̋UEHtHtHHt3EEE]̋UQQS3VWE9Euh)A%h@EWYYrEE<ZF%F@ut,ut"=8mF%S΃(PPSuuEuHE}rN4E$xP}th)A%h@HYYE_^[}<<ZF%tt
X)A%u()A%PRP7Suh@k̋U8mF%VWu33P;tBt=t8u8mF%P$94uXu98t3G8mF%WuuP,_^]̋W3G39yDuJVqH;t-Q@+t:Jt0Jt-Jt	Jt'JtJu(I<Itu;tuI<+t	3;^_̋V3F39qDu7Q@;t	;tu'IH;t+tJtu;tu^3;^̋UQQ3Vu;MM~ED0}T
AH;|EU^jxQ̋UU;w=t3-t"Ht-tHu5KA@F>6.-tHtHHtRg]̋UE-t2Ht'HtHtHt]EEEEE]̋UQSWuu؅!EV@uE<HZF%t-u8mF%4HZF%6σ(PP6uu؅uE}r-uHZF%PP<ZF%hX)A%Sh@^_[jQ̋UEdt=Ht2Ht'HtHtHt]F&]̋UEdt2Ht'HtHtHt]uEEE
E	E]̋UQVWuuul!ES]PZF%it"=8mF%P΃(RP3uuuE}r)]PZF%3PP3hX)A%Wh@:[_^̋UE- tHt]]̋UE- tHt]hE	E]̋UQSWuu؅uz!EVu8mF%4hZF%6σ(PP6uu؅uE}r=u4hZF%E()A%=!tEX)A%PRP6uSh@7^_[̋UEHtG-Wt8Ht--tHtt]( ]̋UVWu}Wu
ZF%9t	!_^]̋U}t]9]̋U}t]E]̋UQSWuu؅uf!EVu8mF%4lZF%6σ(PP6uu؅uE}r)u4lZF%6PP6hX)A%Sh@^_[̋UU;w"t-t
HtHtHHu"BAd=-t,tHtHHtR+ 逋P]̋UE-t)tHtHHt]uEEEE]̋VPPPP3^̋UU0;w>t4-,t#HtHtHtRTjbXPH1t:vƁ	v%tuPAX]̋UE--t@Ht5HHt)Ht-tt]JE#EEE
E	E]̋V񍎄PP3^̋UQSWuu؅uz!EVu8mF%4pZF%6σ(PP6uu؅uE}r=u4pZF%EX)A%=1uE()A%PRP6uSh@^_[̋USWuuut؅ur})tjW[geVu8mF%4tZF%6σ(PP6uu؅uE}r)u4tZF%6PP6h()A%Sh@a^_[]̋UU;wXtNp	$X E%Ad(x$h `rR
vEt0t tu*PAXRS]IE%E%E%E%E%E%K E%K E%E%E%̋UU;w@t6-t%ttHu<EYE
QE	IEAE9-t-Ht#tHtuRGEE
EE]̋VPPPP3^̋UQSWuu؅!EVuE<ZF%u-u8mF%4ZF%6σ(PP6uu؅uE}r=u4ZF%EX)A%=tE()A%PRP6uSh@^_[̋UQSVWuuuJ3;E(tHtjW^{EZF%EEZF%E9]vXM58mF%4σ(PPE4uuuC;]r%E3PP3h()A%Vh@_^[̋UM`HMHMHM)A%H]̋AfA̋A̋A̋UVuuuu0*A%^]jX̋UVuuuuTl*A%^]jXjX̋UVuuuu*A%^]jX̋UVuuuu*A%^]jXjX̋UVuuuuEF +A%^]jX̋A̋UEVuFPuuuYEFF\+A%^]jX̋UVuuuu+A%^]̋IAB̋A@̋A@3@̋Axu3Ë̋At	xt3ÍA̋UAUAMH]̋UAUA@M]̋UVuuuu+A%^]jXjX̋A=4mF%u3@ÍHf@@fu+̋Vv(A%Y^̋A̋A ̋UVEtV諔Y^]̋U}t}t
}t33@]̋UVEtV^Y^]̋VNW3;t
jw~N;t
jT~N;t
j{~F;t8~_3^̋UVEtVY^]̋VWjkF%W)A%@%FLtP~`t~@tvfv	v艓YNtj(vrYvd@%Wl@%_^j2E%wًue3G;tQtLtG'tBt=t8t3t.t)(t$)ttt3tVXue}C@;EtsL8mF%PC<CLx#t"sL8mF%P$8mF%WPC<xC8uC$P@%EtNhT,A%uEt@C40EWE9C@uCLxK4<{$uVE$nF%u<"t7WjYYEet	@3MCuEuEWst&jC@ĘYYtVjjKpQ33ɉCl;t8MtK`F9MC@HC`tHtHt	HtHtHuC@KCs;t)W3jZQ#YYCN3fWhYYC13fC`9K@tCP8mF%jusLPEui}"tx{@tB8mF%sVjusLPEth8,A%PB6ƍPf@@fuK+1ACP8mF%jusLPEt0h8,A%uh@}th,A%uh@Er̋UQQESVW33G]};uEWM;}H0HHH-t]Ht1HHh$nF%jƖYY;}SW<SVjlh$nF%j蝖YY;TSWS$V~CjX9Et}'uEh$nF%~Pj^YY;M#Qu4SVch$nF%j%YY;SWSv8^`tFPf@@f;u+xh$nF%jڕYY;SjSWv{8^`tFPf@@f;u+x~h$nF%j薕YY;MSjSWv7~89u
9^<uF4h$nF%jbYY;SjSW
t`t=tE2h$nF%jYY;XSWSVjh$nF%jєYY;\h$nF%j趔YY;tqSjHh$nF%j虔YY;tTSjDIh$nF%j|YY;t7SWSjxV'h$nF%jXYY;tSWSW5ZF%3M9uEE_^[̋UVu533fMl,A%^]̋Vl,A%谌YttP@%芌Y^̋UQSVW}3ۋ];uEWM;-HtV-t4Hh$nF%jYY;ƈSjSVh$nF%jђYY;n@h$nF%j趒YY;SƔSjSV">h$nF%j艒YY;&Ɛ8^`tPf@@f;u+xh$nF%jEYY;tSjSW3M-Ht=HHtWQuEh$nF%jYY;SjSjƨVn8^`tPf@@f;u+xh$nF%j螑YY;iSjSWPh$nF%jxYY;tSjS
39u
}2tEE_^[̋UVuu,A%dž:džȯdžxHF%lF%^]jZE%	u,A%e~`t
:貉Yv詉fMY誑jE%謐E3ۉ];uEW}dhvSi8^`tPf@@f;u+xj3_h$nF%jYY;tCSjSWX1h$nF%jYYE];tSjSWPMP3M
PWuGEE9u
}2tEE跐̋UVuuT,A%^]jZE%脏u,A%e~`t
-YM[2̋UQS]VW3};uEWE- ;tgHtSuu_E}~`tPf@@f;u+xj2_h$nF%j茎YYtjjjW33(h$nF%j^YY;tWjWưVs39;u
}2tEE_^[̋UVuu3,A%^]jZE%u,A%etjq'fMŽ̋UQS]VW3};uEW4EH;-WH-txHtFtSuuEh$nF%j YY;ƸWjWVh$nF%jYY;WjWj Vh$nF%jČYY;tpWjWƼV^h$nF%j螌YY;tJƴh$nF%j脌YY;t0ưch$nF%jgYY;tWjW
39;u
}2tEE_^[̋UVuC,A%^]̋UQSVu3W];u	EWT}tVuuE'h$nF%jYY;tSjSW39u
}2tEE_^[̋UVWuuuuu%~`t<}"t6eEP8mF%huvLPuEtP_^]̋USVuWV-hV -A%hVhVhVbA%_^[]̋V -A%^jE%荊U3};uEWM:;wmt@-t
Ht4HtHHuuh$nF%jYY;5WjWV h$nF%j׉YY;WjWjUvdl-Ht@HHtRQuQEh$nF%j{YYEE;|h$nF%jSYYE3@E9}t~WPƜWPPPMP`h$nF%jYYEE;tAh$nF%jYYE};t!WjWPPPMP13ME98u
}2tEEΉ̋US]VWuuuSu8~`tN"ts$tÃtHHt&HHtHu0Ãu*"t%jUj@@%Fduj_hD-A%h@YY_^[]̋;u.;u ;u;u3@3̋USVWuh,u3ҍ-A%h/uqbA%_^[]j.E%bu-A%~`Et"tPYtPYtjMŇjnE%džU33];uEW+M0;0-,HtsHtHRQuE8^`t ;tPf@@f;u+xj@_h$nF%jYY;SjSW?wh$nF%jąYY;_SjSfKh$nF%j蘅YY;3SjSƼVu8^`t ;tPf@@f;u+xj@_h$nF%jCYY;SjSWM1	vttIh$nF%jYYE3@E9]t~SƠPSPPPMPh$nF%j謄YYE];tESƄjh$nF%j艄YY;t(Xh$nF%jrYY;tSjSV3ME9u
}2tEEdjE%duuuuu}"$nF%WjYYEet	+3Muj[~`>eEP8mF%h1uvLP؅qEfP!]!8mF%Wh-uvLP؅/?%ǍHf@@fu+9Wh.uA'vL8mF%P؅9!8mF%Wh0uvLP؅9E
t@Htt8Hu؅؅uo`WhXYYuj[h-A%h@YY+3Whf&YYu
j[h-A%3fL̋;u;u3@3̋USVuWVhV8.A%ǃhVhVwhVfbA%3_ $(^[]jE%zu8.A%~`Et訽 蝽"tPzY tPyY$tj(tjM趁j^E%踀U33];uEWM;u$p	$MDE%h$nF%j"YY;tSjSV3Mh$nF%jYY;tSjSVh$nF%jYY;tSjSjUvdh$nF%jYY;tSjS(Qh$nF%jYY;qSjS$8^`t ;tPf@@f;u+xj@_h$nF%j<YY;'SjSWa8^`t  ;tPf@@f;u+xj@_h$nF%j~YY;SjSW 뮁>	t4h$nF%j~YYEE;f&h$nF%j]~YYEE;>ƼSjSPPPMPh$nF%j~YYE3@E9]SƠP%h$nF%j}YYE];SƄjSPPPMP$h$nF%j}YY;SjSXVRQuAEE9u
}2tEE~{AE%AE%AE%AE%AE%AE%DE%DE%BE%9BE%jE%c}uuuuu؅}"$nF%Wj|YYE!]t	y$3M$uj[MWj|YYEEt	@$3M(tǀ~`eEP8mF%huvLP؅EPָ!]!8mF%WhuvLP؅?ǍPf@@fu(9+WhuA'vL8mF%P؅Y?OǍPf@@fu$9+WhuA'vL8mF%P؅9 !8mF%WhuvLP؅9E$ttHt6HtH"ߍh؅_Q؅uyLWhzYYu
j[h.A%J3WhfzYY u
j[h.A%$3f~du%jUj@@%Fduj[h\.A%h@6YY{̋;u.;u ;u;u3@3̋UEV)A%tVsY^]̋SVWh$nF%D'@#jyYYtWjjS3t#W,A"t3@H
j3_^[̋Vh$nF%jZX3jZQKyYYL^u@h'A%jZPn'3̋VWjLv\P&W6t
j408tvLjPk&_^̋VH(A%vqvfqFfYYt
jPt@%f^jE%xu
hmF%3EEEM;ƍPf@@fu+OujW[V7&؅u	E	Oh(A%&؅Ojhu:؅9EuOV7؅vOV%3;a9uh$nF%hPwYYEu;t	$MuujtG@PRPEuu6PEft39@jΉE3u9uOjfu9;Ojgu8;h$nF%hdvYYȉME;t
VVVdMuuj[;G@PRt
PrPtjW[MtjMtjw̋UQQES3VW]]E9]9] PSuxy};EPSShvd@%up@%Vh/A%s4?hT'A%FPE;tnuGWP#u0@%SVuuh@%up@%VhX/A%%SEPujul@%up@%Vh,/A%h@,3j3!jW^9]tup@%]9]tuɱ_^[̋US3VW]]]9^9^~4mF%u.h$nF%h@tYYF;uEh<0A%|3fF]E*'FM<v8mF%P$ЍEPGPP8mF%RPhMEuxE=t
Qחeu칠+h@%QNQF#}=z=ztFPf@@fu+5ZF%P+h,0A%PF<P"}=zur=zt'FǍPf@@fu+EE;FEFUEPW@%uuh/A%h@,h/A%h@
YYEv;t+4mF%t#3f}tu貖}t
EP @%E_^[̋UV/EtVkY^]jnE%sE}3+EHHHHtmHt<Hwh$nF%hrYYȉMEt
u\3h$nF%h0XrYYȉMEtuNh$nF%h*rYYȉMEtWuh$nF%hqYYȉMEwu4h$nF%hqYYȉMEEuXh$nF%hqYYȉMEWu(h$nF%hjqYYȉM3E;t	WuMt"uWuuuPt
j3Jr̋UVYEtVjY^]̋UQeSV񋆄WtPiY$nF%SWpYY~`t@t61hPEuu@t7PX@%(jUj@@%t8dždžUtPGiYSW
pYYuEE_^[̋UV'EtViY^]̋UVvh$$nF%hoYYF^tuhP]̋UVDEtVhY^]̋UVEtVxhY^]̋UV,A%~EtVLhY^]̋UVEtV&hY^]̋UVEtVhY^]̋UVEtVgY^]̋UVEtVgY^]jE%nEujW[hT2A%h@,YYSPf@@fu+$nF%WX3jZQnYYFuh8'A%jYYjzuSP2j/v@%YY3f@@EHf@@fu+WX3jZQmYYFtuSPWj mYYEetv3MFu
j[h2A%3CSv`+PE5t-u3ہ} h1A%K㮃Wh@Wj#mYYE]tv'3MFu
j[h1A%}vjpPE؅t}u
uh(1A%uuuuh0A%h@bWjlYYE3E;t	3MF;ujXvvv9}t	N;;u-h@jWWV`@%up@%Shx0A%jW[5m̋USVWu}Wuuu؅u
}4u,ujW[h2A%Sh@_^[]fG~`}"teEP8mF%huvLPuEtP~@u	5EP8mF%huvLP!uEt
P謧$؅;EwVE%$VE%3@jXj3fVE%VE%VE%VE%̋UVWu}uuuWwΉE39}u8F`u9ư6cc$$nF%jf#jYY;uE3f}"P8mF%jiuvLPE;ul}EdEeEfEgEhS\EP8mF%SuvLPEu&9Et!SPM	u)eGr[E_^̋UVWuuuuua~`u/ƴ6cb$$nF%jd#iYYuj_33f,}"t&P8mF%h!uvLPu!_^]jE%&iu]uuuS}"h$nF%jhYYE!}t	<3Muj_~`~ύQUfAAfu+M
ɉ8HPj 2veEP8mF%hXuvLPuJEtCP蕤!}EP8mF%hYuvLPuEtP`h̋U32A%HHHHHMH ]2A%̋UE;A|E;As3@3]̋UE;A|E;Aw3@3]̋U},t}-t
}0t33@]̋UEV2A%tV`Y^]̋UQVuW}EEEPEPzEEEEPEPz}uu@;AE_^̋U}uA(
}uA43]̋UEHHt$HtHtHtHt3AXA(
ALA@A4]̋UEtHHtHt3
A@A(A4]̋UVh4A%j蘠}YYu,jW^h3A%h@~YYVh|3A%Vj۠^]Mu
jW^h83A%Du
jW^h3A%uuRuh2A%j!YY̋UVhT5A%j}YYu,jW^h5A%h@YYVh4A%VjI^]Mu
jW^hx4A%Du
jW^h3A%uuuRuh84A%j茟YY̋U}uEfH3@fHfH]̋UE@ȁt(ȁtȁujX5uj33@]̋US]W3Gt\}tVu8mF%Pt	;tuj_tuu
8Ct 
tu@8mF%WuuP,jWX_[]̋U8mF%VuPu8mF%PtWHHt*Hu`EtHHtgHHt
Hu=[TNEtHtHt>Ht!tHu %"	%E
tHtƃ t3%ƃ^]̋UMt!EUt HHtrHu;Nt;ƒt4HHtVHHtKHtAƒ
HH3ttƒ붸f_Xƒ(ttHt*Ht Hu:t)۸t/,]̋UMt6Et/8shh5A%jȜ#8mF%ZF%3jWh5A%j衜jWX]̋UVuttj&V͏^]̋UEVcVh6A%Vh@谜^]̋UEVFVh,6A%Vh@~^]̋UE*PhP6A%Ph@O]̋UU33;ujWX}u9Mu3A
]̋U}SVu WVuuuuuuNtuuh7A%h@X]PMth6A%Wh@蚛S<tlWh6A%h@jW_hx6A%h@YYt?ttj&Wh6A%h@Ϛutt_^[]̋U8mF%SVWu33}3ۉ}PEtjY+u[F%M[F%E9uEPju4uuuueMVdt#P8u04uuuu!Mt
jeG;}rVh7A%VhH7A%h@әMtj_^[̋U8mF%SVu3uuuPEt HHtHu'E[F%EE[F%Ex[F%Eu@9uWEM<EPju7uuuEP7u18mF%WuPltmE0uWh08A%VSQ6=ȅto}WtuvPP8mF%WuuP058mF%4PPWjuuIMjMtt
jeEE;E)jW^h3A%STYYh7A%Wh7A%VS詘_Mtjth7A%VS舘^[̋UQSVW}3ۉ];t9]uh 9A%h@YYM5<;ujW[h8A%h@辗YYMSdu
P؅th8A%v8mF%WW΃hPPuu؅tth8A%AE88mF%PuW΃PPjP}uPWV؅th8A%Sh@xXtHtCt>4u8t8mF%VPuEuEu08mF%P,Eƀttth8A%Sh@_^[̋UEy!t]̋UEHy!t]̋UEyt]̋V38PtRRRRR`^ËH8QuQ;Hu
@8Pt^̋UMw3kQ-TY3sjM {h4E%EPb\̋UMw3k$QSY3$sjMzh4E%EP\̋UMw3kQSY3sjMzh4E%EP[̋UEtM	]̋Lttt	t
tt33@̋UQQ8mF%SWu3ۉ]P}E;uh9A%h@EW肔YYVu_;t^MQSuuPuuE;uqMSdtcPNE;uCM8ȉM9]t}t}u;t;t0VM;tQWPh7A%h@ݓ^M;tj9]_[thl9A%uh@ E̋USVuW3};tN];tG;v8mF%P\uIWEPjj,v}V}E;u*F;EuF;Et3G;jWXh9A%PE.YYE_^[̋U8mF%SVuP39Uˀ㾀uUU9Uuh;A%h@EWҒYYM+WtAHt*HtHtQE2h:A%j$jjj_EPjuuWuuEt"WuE2h:A%h@AMPMCEdu	et
h6A%EWEPh6A%h@ӑM%6W$@%MDM 	ȉE}t1ȁQȃ@QWVPju@%u"p@%h:A%WVPju@%twMj
hE M_M^[tj}tuhx:A%uh@pEEWh3A%Eh@:A%h@ՐYYp@%h :A%EPh@%̋U$8mF%SVWj_u3}uP]EujW^h;A%Vh@ݐ!3jEP@%up@%h;A%hj@@%ЉUuNjR}9uuEPRjjWuu}uZF%MutaEPujjWuuEPuVjWuuEPuVjWuukEfMjPfHjEP@%up@%ht;A%Vh@赏deEP3EP|@%=p@%׃zu:uj@@%uj^1MQPEP|@%u3@%#	ׅujz^thH;A%Vh@8u=@%j_^[̋U8mF%SVWuPuE8mF%P`0u3EEEEEfEEPjV螹@}EEEIut2It Itj2_Ph:A%uu!
u EPEPuuVuWfAtj2_Vuh:A%S΍AMPM?thT<A%WSVtVh <A%S苍}t	u@%Mtjth<A%WSɍ_^[̋U8mF%VWuPuE8mF%P`0fMeeeefMMQMQuuj4uPs@@tj2_j4uh:A%VՌFMPME>thT<A%WVutuh <A%V荌Mtjth<A%WVڌ_^̋U}t}t]hx<A%h@7YYjWX]hhE%Ruuh`=A%h@YYjWXuuj>EeVEXEW@tWh,=A%V贋'
W؅tWh<A%V茋MX;Q̋UQEeVujW^ Eu
jW^h=A%"HURjujj'QP>th=A%h@YYhMSPM<th6A%Vh@QStVh6A%h@ƊM/tx4t	E[Mtj^̋U}SVW*uVjuuuuu=؅tu@uh7A%W<PE;ؿ@}uP0hd>A%Wju؅8-؅ubPE;؅u!}t)u؅u7-t|h6A%SW(jW[P0hd>A%Wf*Sh6A%WUjW[h >A%@W=YYt(Sh=A%W+utVtx_^[]̋UEVjHQuj,pP)th>A%Vh@;^]̋UQ8mF%eVuPMQujPuuMtj^̋UQeS]VWEPujuSuEu'M,tH4xp$S老MtjE_^[̋UUBV0r0~!uVrpI^;QuAJ;uAB]̋UUVp2p~!uVrpI^;QuAJ;QuAPB]̋USVWGpuFPtvދ6~t_^[]̋UUVp2p~uVrpI^;QuAJ;QuAPB]̋V38P!tRRRRRMQ^ËH8Q!uQ3;Hu
@8P!t^̋UMtuuuuu]̋UMtuuuuuf]̋V28Pt@&8QuQe;u
@8Pt8Qu^̋UQQSV3W}EE;9Eu8mF%P}t&tt	t33@uXGGKEPuj3VuW؅M)M);u__t3AMt
tu
tuut 
tut@8mF%QuuP,jW[Mtjth>A%Sh@H_^[̋UQeVW}EPuWutVh,?A%B8mF%WPEZF%t[F%jh$[F%h[F%Pu8mF%uWPDtVh>A%h@Q}tuWju4u@%th>A%Vh@膄_^̋U8mF%SVuWV3PEtv8mF%VPEqEEEEEEуs7Dt18mF%VPutWVuƆt	Vu_^[̋U8mF%SVWu3uu33PEtHHujl[F%[3ۿt[F%CvD4ut0EPu4uuujEuMt
jeF;rM_^[tjE̋U8mF%SVWu3uu33PEtHHtHuL[F%j\[F%D[F%j[vD4ut0EPu4uuuEuMt
jeF;rM_^[tjE̋UQ8mF%eVuPMQuj"PuuYthX?A%Vh@<Mtj^̋UQ8mF%SVWu3}P؍EPWujSuu;uuMWP;tVh7A%uuu;tVht?A%h@;/;t
tu!M;tju}uWuM;tj_^[̋VFF@f;NtW9Q?Y;~u_^̋USVW}!ًuv6W>~!Yt_^[]jjtHt̋Vhv>fY^̋UVWjjuuuuuV}_^]̋UVWjjuuuuuVn_^]̋UVjjtEFtMuFP^]̋S3Sj;tH;tH;tX!@ [̋S3Sj;tH;tH;tX@[̋UW}t*GV0;tu8mF%uvP69wu
^_]̋VWwp @g6_v^̋UQVu=E;FtPuuE	FEEE^̋VN@!@	If^̋VN@@	If^̋UVut,NEpQ<YMNE;u^]j FE%CjjEPu23}]]@%uh@A%p@%P9};}EPWu@%uMeEPEPE@9E]5lF%VT@%Hu3Af;u"jYf;uEjYf;uE}}MtjuuE}tjuuiE}tjuuKE3;}EPWu@%tZu]EPEP˃EC9Eu35lF%VT@%u"uPVuuupEuSMGjXh?A%Ph@Ed|}E%1MGQjXh?A%Ph@E9|E%}th?A%uh@|EB̋UV+EtV9Y^]̋VfF^jDE%@?r+hh@%M2eEPMhE%EPAGujuPVPG؋G;u
XGG}t
G;0u^G;puXCQ;
u8Rzt7;qu
V0_F@F@@FpQLzuABIAp,;1u
V!F@F@@Fp^FydG@@Ew@jDE%w?AU?+;s+hhA%MeEPMhE%EP@‰A@jHnE%?M}t2hL@%MeEPMh8E%EPE@@%$@M0zt_GxtEH;ui{wusMA9xuX9>u^A98u{t	SMQA9xuw{t	S}XMQB\B;Gu{pusWOAMI9yuAO99uAOHHWPOM{;ulFxu@VF\FMxu}zu	PzthPzuBP@FMVPF@V@y\{xu@VFMxuPzuzu@ދvA;X?4zuPBP@\MVPFV@;CW5YMAvHAEM=̋UQQSVWGpذEFPuϋbEt6v~t܋ut0G;uuSjEPE@/MuuFPt	uSu‹E0@_^[̋UESVWux7Pjˋg7F_0^[]̋UQVFM;u9EukF%;Mt WMWEPlM;Mu_E^j8E%<u}8mF%]eeV}PE܅uh@A%h@EWuYqMQjuuPVS3E;QMW;
h$nF%j:YY;t8xxxx3ۉ];ujXh@A%Ph@EuM9}t}t}u!;ut
CS;thJM؉CSF4}$}ĥEPEP]eM3!jXh@A%Ph@E
uMۇE%3=hT@A%h@EvtYY#dt,uh7A%h@[tViE9}t	u2YM;tj9}th,@A%uh@tE:j$E%9jjEPu@%u!h@A%p@%Ph@@t5:3;usEPVu@%t0MeEPEPaxMuh$AA%h@sYYMFhAA%jh@s
E%̋UQVFPQEPv1ffY^̋U0SVW3ۋEEEEEEE-E.E0E/E1E23tPtPutv u؅uGr tthxAA%Sh@rthDAA%Sh@r_^[̋UQSVW^S~Wuv$v ujEGu	E(EH;K|H;wuPE}thAA%uh@ErE_^[jE%p73}EPuuuu;uuuuM;tE;tUEARP}M};tu3;tjuVh BA%Vh@q7jXhAA%Ph@EqMfE%ËűUQeVEPjujuuu/uuuuuuMtjtVhDBA%h@p^jE%5u8mF%3ۉ]]]PVhCA%@WVp3Ƀ;tt	+t&NtjX+u*EZF%EEZF%EEZF%E9MMuh$nF%j*5YYEethEeEMES6hCA%Wouu6uu؅iE9X6hCA%WvoE@M;MuIQuM؅*uuu؅t
tuuuu?؅u8mF%PTt7t
tu'}uEuuuuu8؅EME9AGjuSnMjeE܋E܃;EEƀt}tjuS3MjthpCA%SWn4j[h@CA%W*nYYShCA%WnShBA%ShBA%ShxBA%"jFE%`3uDA%~(WE^4SEEׄ2A%4jE%	3uDA%~(WET^4SKF@PBFLP9FXP0NXEoNLEcN@EWELEA2A%q3jE%s2u(DA%~(WE^4SF@PN@EEEՃ2A%39̋USVWjkF%W@%h\DA%@Vel}YYtjuuujW[h4DA%SVlWl@%_^[]̋US]VW}WSueur8mF%SPWSuE9uV9Et}t}uEWSuu59Eu!u9Etu
8mF%SPTuuuWSu	_^[]̋USVW}EPEPu3ju]u]u]};u[EPuuuu';u@ExM;tju]uuR;uuuuuM;tj9]t8mF%jVuP;thDA%Vh@%k_^[j!E%0uueN(DA%N4EF$,0̋UV_EtV(Y^]juE%/uueN(DA%N4EN@E}NLEqNXEeF$-50̋UVEtV'Y^]jFE%/uueN((DA%N4EN@EF$0/̋UV6EtV'Y^]j<E%.3ۍM]]]]]Mĉ]u8mF%EPEEZF%;tE[F%EPuuu
;WEEPu8mF%h4[F%Sh$[F%Sh,[F%h[F%uuuP;uv9]t5u`@%t(9]u#E;tSSS08mF%uuuPD;u<EE3=@%9]t@EPEPEPu;u+p@%hDA%	;thDA%Vh@Nh9]tEPEPEPu;t9]tEPu9]tEPu9]tEPjuuu;u'9]t"E	EEPuuuuu8mF%PL9]t	u@%;thDA%Vh@gMĈ]MMs-̋U8mF%S]VW3SuuuP}E;ujW^hEA%h@fYY}uWJEEPW8mF%SP}Et_Et
tuqjPx,W7uESWtUhX?A%uSWt
hEA%uSWt
hpEA%uSWthHEA%y}uuWE}t}t
}}tWYthDA%*e}t0pjux8tGh,EA%Vh@e.EZF%u
t}uuSW}ueu}tW}tW3;u69EuD9Eu?8Et9Et5uWt&h>A%Vh@,ehEA%Vh@e_^[̋UEVuWt
LP@%uVuuuuVu;t8mF%jWVP_^]j@E%#*E]EЋEHEȋ3]ԉẺ}܉}; p}॥pEPEPu8mF%uPhC;F|C;Fs3@3u'ju6uuS+HhdFA%msW!uuSTutt	uء8mF%PT3G;u%h$nF%jhw(YYE܃et9u؋/h$nF%jPI(YYE܉}tu؋X3ME܅uSPuXEEEEE3ۋM܋tVPtPuVuuKucCrӋu܋]ԋje8mF%WuPu&!}؍MoE̋M;A7j_h<FA%hFA%Wh@b}t8mF%jWuPM܅tjthEA%Wh@Xbd(̋UQQeSVuW@ujW_hGA%SaYY*EPuV23;tvhTGA%WSa9M9MF t
HF%M
lF%EMMQjguP8mF%P(th4GA%WSaEP8mF%jhuvP(thGA%uvV8mF%jWvPt7hFA%vhTGA%S`<9MtQuvVu$jVj_vhFA%S`thFA%WS`
h|FA%Sd`YY_^[jE%%]3};u9}u"jW_hHA%h@%`YY9}RuƍPf@@f;u+H;~Nf\tf/tI;;
jW_hHA%+	E쾘HA%VCPR}uj_hdHA%h@_YYISuW$3f;EVD"PRju_h0HA%h@c_YYY3}EMWLFF QPFh$F3h$nF%j f^$Eet"r3Mu
j_hHA%Vruu苵thGA%Wh@5_^]EEtCF}tFFuuVthGA%묃}t
t	&E03t6tj}tuQ$̋US@%VuWjVh@A%Ӄtj{_hTIA%h@^YYn~
LIA%ƍPf@@fu+PWVӃtj{_Vh(IA%h@]/ƍPf@@fuu+uuGuujP>_^[]jLGE%"Ej3kF%S}8@%uvMuMV}thIA%W@V]vMv˺juEvV\uxvMvtM!}EEETRM脻tPuRvVnu-E}rϋE	EuEFEF@Sl@%}thIA%hIA%VU\YYthIA%WV\MMF"̋Ujuuuu]̋V3TF8t$Rt=hJA%Vh@D\h@JA%h@[YYth JA%Vh@\^̋T̍T8t	b3@̋UM!~txItqItPIt0IMtItj
j	jMItjjMItj3@3}jx|t~~j~	u`j[jWjSjO"t0t'tItIttIu3j.j*j&j"jjMtIt	ujjj
X]̋X$E%dF%ø(dF%øaF%øHbF%ø<dF%øLcF%øPdF%øbF%ø$cF%øddF%ødF%øpbF%ø\bF%ø8cF%øbF%øcF%øcF%øxdF%ødF%øcF%øaF%ødF%3ÍI+E%7E%=E%CE%IE%1E%E%E%OE%UE%[E%yE%aE%gE%mE%sE%E%E%E%E%E%E%̋UM"NIIItJISMIt6It,It"ItItI:j2j+j$jj
jMIIt,It"ItItIj	j
jjjMIIt,It"ItItIjjjj3@3j~~z~~p!kjfjbj^MIt#ItItItItIuJjEjAj=j9j5j1.t*It#ItItItItIuj!j jj
jjjX]̋X!$E%aF%ø bF%øbF%øaF%ø4bF%øHbF%ødF%ø`cF%øtcF%øcF%øLcF%øbF%ødF%øbF%øbF%øcF%ø$cF%ø8cF%øbF%øcF%ødF%øpbF%ødF%øbF%øbF%øbF%ø\bF%øeF%øeF%øcF%øcF%øcF%øaF%ødF%3ÍIŤE%ˤE%פE%ѤE%ݤE%E%E%E%E%E%E%7E%E%
E%E%E%E%%E%+E%=E%CE%IE%OE%UE%[E%aE%1E%gE%mE%sE%yE%E%E%E%̋UM!teIt[It/IMtIItIjjjMtIItIjj3@3MtItItIj
j|jxj	tt~k~~a\jWjSj
OjK"t'ttItItIu4j/j+j'j#jMtItItIuj
jjjX]̋X$E%,eF%øbF%ø4bF%øHbF%øtcF%øcF%øLcF%øbF%øbF%øcF%ø$cF%ø8cF%øbF%øcF%ø@eF%øbF%øbF%øbF%ø\bF%øcF%øcF%øcF%øaF%ødF%3ÍImE%sE%yE%E%E%E%E%E%E%E%E%E%E%E%ǧE%ͧE%ӧE%٧E%E%ߧE%E%E%E%E%̋UE5t/Ht(tHtHtHHtHHu2jEjAj=3@9j431j,t%HHtHHtHttjj
j
jj	X]̋XwO$@E%TeF%øheF%øcF%øbF%ø|eF%øeF%øeF%øeF%øeF%øeF%øeF%øfF%3ÍIE%E%E%E%
E%E%E%E%"E%(E%.E%4E%̋UEItC%tHttHtHuMjh3@dj_3\jWtHt	u+jFjBj>j:t3Ht,t#tHtHtHtjj	j
j
jj
jX]̋Xwg$E%fF%øDfF%ø$cF%ø\bF%øXfF%ølfF%øfF%øfF%ø0fF%øfF%øfF%øfF%øfF%øfF%øgF%ø gF%3ÍI!E%'E%-E%3E%9E%?E%EE%KE%QE%WE%]E%cE%iE%oE%uE%{E%̋UE.t(Ht!tHttHu,j;j73@3j.3+j&ttt
HHtj
jjj	X]̋X	wC$E%4gF%øHgF%øbF%øbF%øgF%øgF%øgF%øgF%ø\gF%øpgF%3ÍIIE%OE%UE%[E%aE%gE%mE%sE%yE%E%̋UEHt tHttj3@jX3]̋XtHtHtHt3øhF%øgF%øgF%øgF%̋V@DJA%^JA%̋UVJA%EtVGY^]̋UVM3LT\JA%X^]joE%uJA%TetjMJA%p̋UM'uuQeEtYHtKHt=Ht/Ht!HtHtKuQ%@uQ'5uQ*uQhuQIuQ	uQn]̋USVT3;tjT9]ujW[hJA%h@NYYjWPu\Mu}@EQPWLPTƠTuj[w8mF%P\3ɅTH\_^[]̋TVt*pp~^}VhKA%h@N^3^3@^̋UVuPKA%^]̋UVuhKA%^]̋UVuKA%^]̋UVuKA%^]̋UVumKA%^]̋UVuKKA%^]̋UVu)KA%^]̋UVMEPMdLA%LTudž@,LA%u
dž@KA%^]̋UVEtV
Y^]jE%u ujW[hxLA%h@YLYY&u8mF%Pj2[uuR1JJJJtjJt7J=h$nF%h`-YYE EWNh$nF%h`YYE EW@h$nF%h`YYE EWh$nF%h`YYE EWzh$nF%h`pYYE EtYWQh$nF%h`GYYE Et0W((h$nF%h`YYE et
W3Muj[CuMu}u\uW؅u@PRtP萷؅ttj&̋UQQeSVWPLh@MA%h@*JePˋvTplҷuTHl39_v:TURW4LPEu[u艷tXC;_r39_v{TURW4LPEu?u,HtC;_r?G47hMA%#MtjEG47hLA%h@+IE_^[̋UVPKA%^EtVPY^]̋UVhKA%2EtV$Y^]̋UVKA%EtVY^]̋UVKA%EtVY^]̋UVKA%EtVY^]̋UVKA%EtVtY^]̋UVKA%VEtVHY^]̋USVW33MaL6$nF%WjYY;t\QjSXQnE]9]uMIu
MWjYY;tSjSPQnE]9]uMtWj\YY;tSjSTQnE]9]tRuMôvWjYY;tSjS`V1n3;tMV舴u(jhMA%W讳Ph@F_^[̋US]VWHzuSthMA%WYPh@F_^[]̋UVuu^]̋U,EeSXVpW}+x@@%+@%ًU@%yEuxRRS}tEjWVu+jY}EE졌aA%E$]t7MQj-Wmu"K~t=uSjjVet	E}u	E3}t-uuut=uEuuS}tE0_^[̋V>t8S^;^s!W;tGtPQg;^r_FP@%&[^̋VW~U&F@%FF%FF%M}	iF%(_^̋UEuW8,u`H]̋Vt
P
&Yff^̋UE|;A}		A]jjjh@%̋VN3F F$F(^̋UVuW3;uWG;t?,u9~$~ S^ W{uP,@%G;~$|[N ;FP@%&3_^]̋VN3F0F4F8^̋VFP@%N0^̋V.V,}
iF%&^̋U4hF%3ʼnEVx@%hFFhjP<FhPDžh`@%xulr#xulwu
pvFNFFaA%}iF%M3^̋V5hmF%VRN ^̋Vf~.@%u~u$hF%F^̋U]%\@%̋UV5X@%
uYt
uYt^nF%nF%u
nF%{hE%x
YVM'h4E%EP̋UV5X@%
uYt
uYt^ nF%nF%u
 nF%hE%	
YVM&h4E%EPjDE%/hbA%MeEPMthE%EPIjDE%h bA%MgeEPMh8E%EPE@@%̋Ucsm9Eu
uP1YY]3]̋UVu3utу;ur^]hX@%YqF%qF%u@Ã 3̋US3VW9Eu&9(nF%~
(nF%=h@%P|qF%3K}>d
Y=h@%EP|qF%;thT@%jSVׅuExqF%j_t	jc9h@%h@%xqF%YYzh@%h@%#Y=xqF%3Y9]uSV\@%9qF%thqF%
Yt
uWuqF%(nF%whT@%jjVׅuxqF%t
j
YMqF%t0=qF%tЃ;sS\@%%qF%%qF%YjVxqF%\@%3@_^[]j,hF%HM3BU3u
dhF%;u95(nF%uu;t	qF%;t6U,nF%uQuЉEE	MPQYYËe3uu9uEuuuEE	MPQKYYËe3uu9uoMEuQuEE	MPQYYËe3uu}9uEVVuE	MPQYYËe3uEVVuE	MPQYYËe3uqF%;t,EVVuE	MPQ_YYËe3u9ut
}EuuuEE	MPQYYËe3uuqF%;t>95,nF%t6EuuuЉEE	MPQYYËe3uuEEKdhF%̋U}u]jhF%eMx;M+MMUEEEEE8csmtEE@%eEjhF%heuEEeMx)uMUEEq}uuuuu:;
4hF%űU]%@%jE%lueYEEÃeE%%L@%Pd5D$+d$SVW(4hF%3PuEEdPd5D$+d$SVW(4hF%3PeuEEdPd5D$+d$SVW(4hF%3PEuEEdPd5D$+d$SVW(4hF%3PEeuEEd̋Md
Y__^[]Q̋M3̋M3l%\@%%`@%%@%̋UV@%EtVlY^]%@%%@%%@%hE%d5D$l$l$+SVW4hF%1E3PeuEEEEdËMd
Y__^[]Q̋UuuuuhxE%h4hF%]QL$+#ȋ%;r
Y$-%@%jh F%-3EEEE;E}uUuuEEE4}uuuuűUMV3;v(j3X;EsaVVVVV3MQu1YY^]%@%jh@F%iqF%Euud@%YQjYeqF%E䡀qF%EEPEPuE܋E䣄qF%EࣀqF%E	E?jY̋UuiYH]%@%%@%%@%%@%%@%QL$+ȃYQL$+ȃY̋UuY]̋U4hF%3ʼnEffffffEEDž0@h@bA%P@%M3̋U]J%@%hE%d5D$l$l$+SVW4hF%1E3ʼnEPeuEEEEdËM3b%@%%@%̋UMMZf9t3]ËA<8PEu3ҹf9H‹]̋UEH<ASVq3WDv}H;r	X;r
B(;r3_^[]jh`F%_e@%V\Yt=E+PVYYt+@$ЃE E3=ËeE3E%@%%@%̋U4hF%eeSWN@;t
t	У8hF%[VEP@%u3u@%3D@%3H@%3EPL@%E3E3;t4hF%uO@54hF%։58hF%^_[̋U(0oF%
,oF%(oF%$oF%5 oF%=oF%fHoF%f
<oF%foF%foF%f%oF%f-oF%@oF%E4oF%E8oF%EDoF%nF%8oF%<nF%0nF%	4nF%4hF%8hF%j8@%htbA%<@%h	@%P@@%%|@%%x@%%t@%%p@%%l@%%h@%%p@%%@%%@%%8@%%h@%%d@%%@%%@%%@%%@%%@%%@%%$@%%L@%%P@%̋UME;r	M3E]̋U\4hF%3ʼnESVWX@%؁jCXCejEPu,@%ẺEEP(@%e}NF}uKeh@cA%@%uh$cA%@%t)hcA%P@%teMQЃu
EvEMGQPuE|rE!EtEPWu|W?9EsEO#}+}ujXEM;r-jhuW0@%tEPVuW4@%t3@3e_^[M3̋Uud@0jp@%]̋Uud@0jpt@%]̋UQ4hF%3ʼnEEeM3]jhF%T3FeuE3=Ëe3E\̋Ud@0pp@%d
Q0zᆳutP`+Pd s	%qF%U;utPdqF%9Muu@dEqF%s
qF%EqF%E%tqF%EqF%E%tqF%]iF%QRPhF%+ZYฌiF%iF%iF%iF%|iF%xiF%tiF%piF%XiF%iF%iF%iF%wiF%miF%ciF%YiF%OliF%EHiF%;LiF%1PiF%'TiF%iF%\iF%	`iF%diF%hiF%iF%iF%QRPhF%ZY%iF%iF%QRPhF%ZY%iF%iF%%iF%iF%QRPhF%ZY%iF%iF%QRPh$F%{ZY<iF%QRPhDF%`ZY%<iF%8iF%%8iF%4iF%%4iF%0iF%%0iF%,iF%%,iF%@iF%%@iF%(iF%q%(iF%hF%QRPhdF%ZY%hF%iF%QRPhF%ZYiF%iF%iF%iF%iF%iF% iF%%t@%%`@%%d@%%p@%%\@%%X@%%l@%%h@%%@%%@%%@%%@%%@%%@%%@%%|@%%x@%̃=lqF%~hlqF%@%=lqF%uC̋UEA]̋UEA]̋U=lqF%VWuul=@%hlqF%hpqF%5pqF%uhhF%5tqF%up@%+NQjP5tqF%uFPj65tqF%t _^]̋UM3ItItItIItIttjWX]̋VhtqF%hE%hphF%zu5hF%hhF%5tqF%Rt5tqF%5^5tqF%!3%@%%@%%@%%@%%@%̍MʧT$BJ3 E%̋T$BJ3E%̋T$BJ3x E%̋T$BJ3XxE%uYÍMbT$BJ3&E%̋MBT$BJ3E%W̋M!T$BJ38E%,̋MT$BJ3dE%̍M逼T$BJ3}J3sE%̋T$BJ3SE%uYËT$BJ3)HE%uYYËT$BJ3E%[u/YËT$BJ3E%1̍MMT$BJ3LE%̍MT$BJ3}E%̍T$B3DJ3:E%̍T$B3J3E%S̍EL:L/LT$B3J3E%̋T$BJ3~<E%̍T$B3EJ3;E%̍M鴿T$BJ3E%oh$nF%uYYh$nF%uYYËT$BJ3E%/̋T$BJ3E%̋T$BJ3HE%̍MJT$BJ3ktE%̋M闿M,GT$BJ35E%̋T$BJ3E%q̋>$]J(OJ]T$B3J3E%̋T$BJ3E%̋T$BJ3sdE%̋T$BJ3SE%̋T$BJ33E%̋T$BJ3lE%őT$BJ3E%ŐT$BJ3E%/̋T$BJ3tE%̋MT$BJ3E%̍MHM`ËT$BJ3ZE%̍MHM`T$BJ3*E%̍M[M~HM[M`M~`T$BJ3J3E%4̍M[M,HM[M4`M,`T$BJ3J3E%̋T$BJ3fE%̋M钼T$BJ3;<E%̋T$BJ3E%w̋T$BJ3E%W̋T$BJ3DE%7̋T$BJ3E%̋T$BJ3E%̋T$BJ3{LE%̋T$BJ3[E%̋T$BJ3;E%̍MFT$BJ3(F%o̍M(-T$BJ3TF%G̍M-T$BJ3F%̍M,T$BJ3F%̍M,MET$BJ3kF%̍MET$BJ3CF%̍MEMP,T$BJ3@F%o̍M(,M ,T$BJ3tF%?̍M+M+T$BJ3F%̍MET$BJ3F%̋T$BJ3kJ3ahF%̋T$BJ3AF%̋T$BJ3!LF%}̋T$BJ3F%]̋T$BJ30F%=̋MET$BJ3\F%̋MT$BJ3F%̋M*T$BJ3`$F%̍MVT$BJ38F%̍MVME*T$BJ3F%d̍MVT$BJ3F%<uuYYËT$BJ3F%̋T$BJ3F%̍MVT$BJ3jF%̍MUT$BJ3B\F%h$nF%uYYÍMUMUMUT$BJ3F%V̍MUT$BJ3	F%.̍M\Uh$nF%ugYYÍMwUMoUMgUT$BJ3H	F%̍MUT$BJ3Z	F%̍MTMUT$BJ3*
F%̍MTMTT$BJ3|
F%V̋MT$BJ3
F%+h$nF%ulYYËT$BJ3
F%̋T$BJ3(F%̍M@T$BJ3WF%̍M@Md'MTT$BJ3F%{̍1'T$B3J3F%C̍MC@M;@T$BJ3J30
F%	̍MˠT$BJ3\
F%̋T$BJ3e
F%h$nF%uYYËT$BJ35<F%̋MJT$BJ3
hF%ih$nF%uYYËT$BJ3F%9h$nF%uzYYh$nF%ujYYh$nF%uZYYh$nF%uJYYËT$BJ3}F%̋MBM,M,T$BJ39F%h$nF%uYYh$nF%uYYËT$BJ3HF%Uh$nF%uYYËT$BJ3tF%%̋MBM,M	,M@M@T$BJ3iF%h$nF%uYYh$nF%uYYh$nF%uYYh$nF%uYYËT$BJ3	F%eh$nF%uYYh$nF%uYYËT$BJ38F%%h$nF%ufYYh$nF%uVYYËT$BJ3lF%h$nF%u&YYh$nF%uYYh$nF%uYYh$nF%uYYh$nF%uYYh$nF%uYYh$nF%uYYËT$BJ3F%Uh$nF%uYYh$nF%uYYh$nF%uvYYËT$BJ3F%h$nF%uFYYËT$BJ3y0F%̍0T$B3KJ3A\F%̋T$BJ3!F%}̍M?T$BJ3F%ŰT$BJ3J3lF%+̋T$BJ3F%̋T$BJ3F%h$nF%u,YYËT$BJ3_HF%̋MqM(8M4-T$BJ3!F%}̋MqM(M4M@ML٥MXΥT$BJ3F%̋MIqM(雥M4鐥M@酥T$BJ3yF%̋MqM(RT$BJ3FPF%̋MpM(M4M@	MLT$BJ3tF%N̍M9M1T$BJ3F%h$nF%u_YYh$nF%uOYYËT$BJ3J3xF%h$nF%uYYËT$BJ3H0F%̍M6T$BJ3 \F%|̋MT$BJ3F%Th$nF%u YYh$nF%u YYh$nF%u uYYh$nF%u eYYh$nF%u UYYh$nF%u EYYh$nF%u 5YYËT$BJ3hF%̋T$BJ3HF%̋V,jF%BhE%,jF%t'@%5jF%1Y^̡TSF%WF%dSF%WF%tSF%WF%SF%WF%SF%WF%SF%WF%SF%WF%SF%WF%SF%XF%̡dSF%(XF%tSF%,XF%TF%0XF%$TF%4XF%4TF%8XF%̡TSF%LXF%dSF%PXF%tSF%TXF%TTF%XXF%̡TSF%lXF%dSF%pXF%tSF%tXF%tTF%xXF%TF%|XF%TF%XF%TF%XF%TF%XF%TF%XF%̡dSF%XF%tSF%XF%̡TSF%XF%dSF%XF%tSF%XF%TF%XF%UF%XF%UF%XF%̡TSF%XF%dSF%XF%4UF%XF%DUF%XF%TUF%XF%dUF%YF%tUF%YF%UF%YF%UF%YF%̹<mF%hE%3Y̹dmF%3hE%Y̹mF%hE%Y,jF%t'@%,jF%"̹<mF%̹dmF%̹mF%nF%.@%nF%nF%.@%nF%E%"E%TE%\E%DF%A%A%@KA%E%"E%E%@A%E%"E%E%@A%DE%"TE%dE%@A%E%/E%9E%"E%E%aE%"E%E%"0E%E%"\E%E%"E%@AA%E%"E%E%@A%E%4E%"0E%E%@:A%lE%^E%"E%|E%@A%E%E%"E%E%@A%@A%"E%pE%<E%,E%E%E%E%"E%@AA%@A%"`E%8E%E%E%
E%E%ME%XE%"E%E%E%E%E%"E%@A%E%"E%(E%@A%`E%	E%E%"E%pE%LE%"E%A%A%4A%BA%A%DE%PE%lE%DEF%=A%`EF%E%tE%E%"E%@!B%E%"E%E%@!B%E%"$E%4E%E%"lE%E%'E%"E%@=B%@=B%"E%0E%E%E%CB%CB%EB%EB%rE%E%E%E%"E%@ZB%E%"E%E%@B%0E%"@E%PE%@B%E%"E%E%@B%E%"E%E%@B%8E%"HE%XE%@6B%E%"E%E%@ɑB%E%"E%E%@B%@E%"PE%`E%E%"E%B%E%E%lE%GF%(B%mB%E%E%E%lE%GF%(B%˜B%HE%XE%E%lE%GF%(B%E%E%"tE%-E%5E%"E%@B%E%"$E%E%]E%eE%mE%uE%}E%@PB%\E%"E%lE%E%E%E%E%E%@B%E%"E%E%!E%"4E%@B%`E%"pE%E%@B%E%"E%E%@:B%E%" E%0E%@ʿB%hE%"xE%E%@ZB%E%"E%E%@B%E%"(E%8E%@zB%pE%"E%E%@
B%E%"E%E%LE%" F%tE%"LF%E%"xF%E%"F%E%E%"F%E%"F%DE%LE%"0F%tE%|E%"dF%E%E%"F%E%"F%B%B%a
C%e
C%DEF%
C%4F%"DF%TF%@C%@C%"F%F%F%F%DEF%C%F%"(F%8F%DEF%C%DEF%^C%"F%F%F%pF%@%C%F%"F%F%E%"TF%*C%*C%T+C%b+C%+C%+C%R,C%`,C%,C%,C%5-C%C-C%-C%-C%".C%0.C%.C%.C%/C%/C%/C%/C%L0C%Z0C%0C%0C%4C%4C%9C%9C%9C%9C%&:C%4:C%:C%:C%;C%;C%L<C%Z<C%E%"F%E%"F%IGC%WGC%FC%FC%BHC%PHC%(IC%,IC%'E%"F%OE%WE%"F%E%"F%E%"F%OC%OC%OC%OC%@aPC%hF%"xF%F%DEF%TC%F%E%"F%F%DEF%UC% F%E%"DF%0F%DEF%WC%F%"F%F%EE%UE%]E%eE%E%"F%DEF%\[C%$	F%"l	F%4	F%E%E%E%E%E%E%"	F%DEF%5`C%	F%-E%5E%"	F%	F%DEF%-bC%8
F%]E%eE%"\
F%H
F%E%"
F%E%"
F%yC%yC%sC%wC%C%C%C%C%xC%C%C%C%|C%C%GC%UC%DEF%
D%F%"F%F%D%1D%1D%E%"F%0E%8E%@E%"F%hE%"F%E%E%" 
F%E%"T
F%DEF%1D%
F%"
F%
F%D%D%lE%zE%E%E%"E%"4F%RE%"`F%zE%"F%E%E%E%E%"F%
E%E% E%"F%^E%NE%"8F%E%"lF%"F%E%E%E%E%E%NE%>E%.E%E%"F%~E%E%"(F%E%E%"\F%"F%^E%NE%E%>E%E%.E%E%E%E%E%"F%E%"(F%E%"TF%DEF%E%DEF%^E%"F%F%F%F%fE%"F%DEF%E%8F%"HF%XF%DEF%E%F%"F%F%DEF%CE%F%"F%F%E%"@F%(E%0E%;E%"lF%"F%fE%nE%yE%E%E%E%E%E%E%E%"F%E%E%"@F%"F%AE%IE%TE%_E%jE%E%E%"F%E%E%"F%E%"(F%?E%"TF%gE%"F%"F%E%E%E%E%E%E%E%E%E%E%ӾE%E%E%*E%[E%oE%E%E%E%ӿE%E%E%KE%_E%E%E%[E%@E%F%"F%F%E%E%_E%sE%AE%UE%`cLqHi`pcPqicTqicXqic\qic`q(icdqhchqi &:PpZ>,OEoI
)$a.uX
NetApiBufferFreeDsRoleFreeMemoryDsRoleGetPrimaryDomainInformationNetDfsGetClientInfoDsGetDcNameWGetUserNameExWTranslateNameWLsaDeregisterLogonProcessLsaFreeReturnBufferLsaLogonUserLsaLookupAuthenticationPackageLsaConnectUntrustedWNetGetConnectionWPwnsprintfWPathRemoveFileSpecWPathIsRootWPathIsUNCWPathRemoveBackslashWWPathAddBackslashWPathCreateFromUrlWHUrlUnescapeWp ^$<L!'` (,\,-(!--4424D r4t4@4X55|5f5L5.$.<.L.b.~......../ /:/T/h/x/2
2111111x1\1D1(11
100000v0f0P0000///////.^2222223"3>3`333333B25544-,,,,,,,r,\,L,:,,&(4(D(R(b(r(((((((()*)B)Z)r))))))))****6*F*R*h*|******++(+<+V+h++++++++,444~44	ko
+HM:	M
24B4P4b4 44(''""."8"@"H"
""^"h"p"$$$$$$$j$J$<$0$"$$$$############|#r#j#R#D#(##""""""""|""$%*%8%H%d%x%%%%%&&6&R&b&p&&'''$85&5t'\'<','&&&'':-L-`-p-------memcpy_vsnwprintf/swscanf_wcsicmp`wcsrchrrandsrands__CxxFrameHandler3mallocfreememcpy_sc_CxxThrowExceptionUwcscpy_s]wcsncpy_sPwcscat_s_purecallmemsetmemmove_s	??0exception@@QAE@ABQBD@Z9?what@exception@@UBEPBDXZ??1exception@@UAE@XZ??0exception@@QAE@ABV0@@Z_vsnprintf??0exception@@QAE@XZldiv$strrchrQwcschr_wcspbrk[wcsncmpiswspacem_wtol_wcsnicmphwcstoliswxdigit;towlowerdwcsstrj_wtoi64bsearchqsort
_wcsuprmemmove_callnewhj_XcptFilter_initterm_amsg_exit7?terminate@@YAXXZmsvcrt.dll??1type_info@@UAE@XZY_except_handler4_commonreallocV_errno_unlock__dllonexitB_lock_onexitURtlReleaseResourceCRtlAcquireResourceSharedBRtlAcquireResourceExclusiveRtlCopySidRtlLengthSidRtlDeleteCriticalSectionRtlDeleteResourceRtlNtStatusToDosErrorRtlConvertSharedToExclusiveRtlInitializeCriticalSectionRtlInitializeResourceNtAllocateLocallyUniqueIdRtlLeaveCriticalSectionRtlEnterCriticalSectionRtlIdentifierAuthoritySidRtlInitStringRtlEqualSidRtlConvertExclusiveToSharedRtlLookupElementGenericTableAvlRtlInitializeGenericTableAvlRtlInsertElementGenericTableAvlRtlDeleteElementGenericTableAvlNtCloseHRtlFreeHeapNtCreateFileRtlDosPathNameToNtPathName_URtlInitUnicodeStringRtlEnumerateGenericTableAvlRtlNumberGenericTableElementsAvlRtlValidSidRtlValidSecurityDescriptorntdll.dll1CharNextW<CharUpperWUnregisterClassAUSER32.dllRCloseHandleGetLastErrorCreateFileWSLockResourceALoadResourceSizeofResourceNFindResourceWWaitForSingleObjectfMultiByteToWideCharNlstrlenWRaiseExceptionEnterCriticalSection9LeaveCriticalSectionInitializeCriticalSectionDeleteCriticalSectionInterlockedIncrementInterlockedDecrement?LoadLibraryWCGetProcAddressGetModuleHandleWElstrcmpiWGetModuleFileNameWDisableThreadLibraryCallsbFreeLibrary>LoadLibraryExWDLocalAllocWideCharToMultiByteHLocalFreeGetLocalTime%WriteFileGetCurrentProcessIdCreateDirectoryWGetEnvironmentVariableWGetVersionExWDeleteTimerQueueExCreateTimerQueueDeleteTimerQueueTimerCreateTimerQueueTimerGetCurrentThreadGetCurrentProcessGetComputerNameWxGetSystemTimeAsFileTime`CompareFileTimeGetFileAttributesExWDeleteFileWGetFileAttributesWGetVolumeInformationWGetFullPathNameWdCompareStringW^FormatMessageWqSetLastErrorDelayLoadFailureHookInterlockedCompareExchange=LoadLibraryExAGetVersionExAInterlockedExchangeGetVersionSleepOutputDebugStringAQueryPerformanceCounterGetTickCountGetCurrentThreadIdTerminateProcessUnhandledExceptionFilterSetUnhandledExceptionFilterKERNEL32.dllgCoTaskMemAllociCoTaskMemReallochCoTaskMemFreeCoCreateInstanceyStringFromGUID2CLSIDFromStringCLSIDFromProgIDlCoUninitialize?CoInitializeExxStringFromCLSIDole32.dllOLEAUT32.dllLsaCloseLsaFreeMemoryLsaNtStatusToWinErrorLsaOpenPolicyCreateWellKnownSidLsaQueryInformationPolicyHRegDeleteValueW0RegCloseKey9RegCreateKeyExWaRegOpenKeyExW~RegSetValueExWhRegQueryInfoKeyWORegEnumKeyExWLookupAccountNameWLookupAccountSidWlConvertSidToStringSidWtConvertStringSidToSidWnRegQueryValueExW6GetLengthSidSetThreadTokenOpenThreadTokenZGetTokenInformationEqualDomainSidDuplicateTokenExOpenProcessTokenvCopySidSetSecurityDescriptorOwnerSetSecurityDescriptorDaclwInitializeSecurityDescriptorAddAccessAllowedAcevInitializeAclBGetNamedSecurityInfoWSetNamedSecurityInfoWHGetSecurityDescriptorDaclMGetSecurityDescriptorSaclJGetSecurityDescriptorLengthIsValidSid#GetAce$GetAclInformationAddAccessAllowedObjectAceAddAccessAllowedAceExSetSecurityDescriptorSaclAddAuditAccessAceExMakeSelfRelativeSDAdjustTokenPrivilegesCryptReleaseContextCryptDestroyHashCryptGetHashParamCryptHashDataCryptCreateHashCryptAcquireContextWADVAPI32.dllAuthziFreeAuditEventType AuthziInitializeAuditEventTypeAuthziFreeAuditParamsAuthzFreeAuditEvent&AuthziLogAuditEventAuthziInitializeAuditEvent#AuthziInitializeAuditParamsWithRMAuthziAllocateAuditParamsAuthzFreeResourceManagerAuthzInitializeResourceManager	AuthzGetInformationFromContextAuthzFreeContextAuthzAddSidsToContextAuthzInitializeContextFromTokenAuthzInitializeContextFromSidAuthzAccessCheckAUTHZ.dllUuidFromStringWRpcStringFreeWUuidToStringWUuidCreateRpcStringFreeAUuidToStringARPCRT4.dllDsFreeNameResultWDsCrackNamesWfDsUnBindWDsBindWKDsQuoteRdnValueWNTDSAPI.dllODBC32.dllVirtualProtectVirtualAllocqGetSystemInfoVirtualQuerycRtlAllocateHeapRtlImageNtHeaderPerfSetCounterRefValuePerfCreateInstancePerfStopProviderPerfSetCounterSetInfoPerfStartProvidergL7,,56H7e !!`#A*:iBsԾS*2`yPޯ?m23G777778888F8[8z8888888889!939E9U9e9z99999999999:::%:3:C:U:g:	

 !"#$%&'()*+azroles.DLLAzAddPropertyItemAzApplicationCloseAzApplicationCreateAzApplicationDeleteAzApplicationEnumAzApplicationOpenAzAuthorizationStoreDeleteAzCloseHandleAzContextAccessCheckAzContextGetAssignedScopesPageAzContextGetRolesAzFreeMemoryAzGetPropertyAzGroupCreateAzGroupDeleteAzGroupEnumAzGroupOpenAzInitializeAzInitializeContextFromNameAzInitializeContextFromTokenAzOperationCreateAzOperationDeleteAzOperationEnumAzOperationOpenAzRemovePropertyItemAzRoleCreateAzRoleDeleteAzRoleEnumAzRoleOpenAzScopeCreateAzScopeDeleteAzScopeEnumAzScopeOpenAzSetPropertyAzSubmitAzTaskCreateAzTaskDeleteAzTaskEnumAzTaskOpenAzUpdateCacheDllCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServer\@%????????????????????????????????????????????????	???????

 !"#??????

 !"#?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@%{A%A%OA%E%E%D%@%A%A%vA%E%E%D%,@%{A%A%A%E%E%D%<bA%.?AVCAtlException@ATL@@@%@%@%@%@%@%@%@%@%@%<bA%.?AVbad_alloc@std@@<bA%.?AVexception@@@%@%@%@%L@%@%<@%@%\@%@%\@%@%@%@%|@%@%|@%@%<@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%,@%@%<bA%.?AVlogic_error@std@@<bA%.?AVlength_error@std@@<bA%.?AVout_of_range@std@@,@%@%@%@%L@%@%l@%@%l@%@%@%@%@%@%@%@%`lF%:ȯxdHF%eHF%fHF%gHF%hlF% !lP@@@@C%a&C%D%D%D%mD%OD%D%~C%xC%c)C%D%D%D%D%D%D%jC%4D%D%D%B%EC%D%D%mD%	D%D%jC%B%C%UD%D%
D%ymC%aHF%0IF%PYF%YF%MF%AD%.D%\(||,tLtLtLMF%@%GD%vKD%[$D%UD%XD%K$D%)D%9)D%X)D%d@%e@%f@%@%@%gl@%hP@%4@%@% @%!@%@%@%@%@%@%@%x@%@%D@%0@%1@%@%.@%-@%,\@%/0@%d@%$@%T@%@@%@%x@%@%@%@%@%@%@%x@%@%@%T@%\@%0@% @%`NF%OF%4@%OF%|OF%@%p@%OF%OF%@%x@%PF%PPF%@%QF%QF%@%@%PF%PF%x@%QF%RF%RF%SF%VF%pVF%@%@%@@%t@%dH@%f@%e@%g@%h@%@%@%@% @%!@%t@%@%-l@%.<@%0@%,@%/@%1h@%<@%@%@%@%@%@%x@%l@%<@%@%@%P@%SF%(@%TF%@%PTF%@%pTF%@%TF%@%0UF%@%TF%@%UF%WF%XF%@XF%`XF%XF%XF%XF%UF%HVF%XVF%k
 
VF%VF%
VF%HXwGgl@%<@%@%@%@%'@%|@%@%H@%@%@%<@%@%l@%|@%@%H@%@%@%<@%@%.D%UD%}[D%TD%D%VmD%muD%<eD%ZeD%D%@%@%\@% @%t@%@%@%@%@% @%\@% @%@%@%@%@%@%@%@%@%@%@%\@% @%@%@%@%@%@%@%-.01lF%lF%HD%D%gD%D%D%=D%TD%kD%tD%D%pD%D%D%D%rD%^D%D%D%:B%D%KD%.D%2D%OD%cD%OD%D%]D%@%$D%@%yZD%@A%z_E%0!A%!A%/,defigh!1-.0'A%.@A%5E%E%_E%jE%FE%pE%`E%<eD%ZeD%E%ZF%[F%[F%$[F%4[F%

	*++())defghidefigh !1.0- !defghi1		.0-






 !defghi1









 !1,/MA%[F% NA%(\F%,\F%	XNA%(\F%t\F%NA%(\F%\F%NA%(\F%`\F%NA%(\F%\F%(OA%(\F%\F%lOA%_F%OA%_F%OA%_F%OA%_F% PA%_F%XPA%l`F%PA%\F%PA%]F%	PA%x]F%	QA%]F%<QA%]F%xQA%^F%QA%`F%`F%QA%`F%`F%$RA%aF%aF%PRA%$aF%,aF%RA%aF%aF%RA%aF%aF%SA%aF%aF%hSA%aF%aF%SA%aF%aF%TA%aF%`TA%[F%[F%TA%^F%TA%`F%`F%	(UA%$]F%
hUA%^F%UA%aF%aF%VA%aF%aF%hVA%(\F%VA%`F%`F%VA%X]F%WA%^F%<WA%_F%hWA%aF%aF%WA%aF%aF%XNA%(\F%t\F%XA%_F%NA%(\F%\F%0XA%\_F%hXA%$^F%XA%<^F%YA%0^F%pYA%D^F%YA%HaF%LaF%ZA%PaF%TaF%pZA%@aF%DaF%ZA%XaF%\aF%(OA%(\F%\F%[A%(\F%\\F%p[A%<_F%[A%h^F%\A%t^F%x\A%^F%\A%^F%@]A%^F%]A%(\F%P\F%]A%]F%@^A%xaF%|aF%^A%xaF%|aF%_A%paF%taF%`_A%paF%taF%NA%(\F%\F%_A%_F%
_A%`aF%daF%,`A%haF%laF%h`A%P^F%`A%\^F%`A%(\F%\F%,aA%]F%NA%(\F%`\F%VA%X]F%`aA%|_F%	<WA%_F%\@%\@%\@%\@%N@D\@%\@%E%\@%L)Egf2H{I4f2H{I4L)EgddhE%E%E%E%E%E%E%E%E%E%]E%HE%3E%E%E%rE%E%E%E%E%E%$E%.E%8E%BE%E%E%E%zE%pE%fE%\E%RE%HE%E%E%E%E%E%E%LE%E%E%-E%E%|E%E%E%VE%84`x$fghe(u@Xp								z1
h/=
@|REGISTRYFILETYPELIBMUI|4VS_VERSION_INFOjDjD?StringFileInfo040904B0LCompanyNameMicrosoft CorporationFFileDescriptionazroles Moduler)FileVersion6.1.7601.17514 (win7sp1_rtm.101119-1850)0InternalNameazroles.LegalCopyright Microsoft Corporation. All rights reserved.8OriginalFilenameazrolesj%ProductNameMicrosoft Windows Operating SystemBProductVersion6.1.7601.17514DVarFileInfo$Translation	HKCR
{
	AzRoles.AzAuthorizationStore.1 = s 'AzAuthorizationStore Class'
	{
		CLSID = s '{b2bcff59-a757-4b0b-a1bc-ea69981da69e}'
	}
	AzRoles.AzAuthorizationStore = s 'AzAuthorizationStore Class'
	{
		CurVer = s 'AzRoles.AzAuthorizationStore.1'
	}
	NoRemove CLSID
	{
		ForceRemove {b2bcff59-a757-4b0b-a1bc-ea69981da69e} = s 'AzAuthorizationStore Class'
		{
			ProgID = s 'AzRoles.AzAuthorizationStore.1'
			VersionIndependentProgID = s 'AzRoles.AzAuthorizationStore'
			ForceRemove 'Programmable'
			InprocServer32 = s '%MODULE%'
			{
				val ThreadingModel = s 'Both'
			}
		}
	}
	
	AzRoles.AzPrincipalLocator.1 = s 'AzPrincipalLocator Class'
	{
		CLSID = s '{483afb5d-70df-4e16-abdc-a1de4d015a3e}'
	}
	AzRoles.AzPrincipalLocator = s 'AzPrincipalLocator Class'
	{
		CurVer = s 'AzRoles.AzPrincipalLocator.1'
	}
	NoRemove CLSID
	{
		ForceRemove {483afb5d-70df-4e16-abdc-a1de4d015a3e} = s 'AzPrincipalLocator Class'
		{
			ProgID = s 'AzRoles.AzPrincipalLocator.1'
			VersionIndependentProgID = s 'AzRoles.AzPrincipalLocator'
			ForceRemove 'Programmable'
			InprocServer32 = s '%MODULE%'
			{
				val ThreadingModel = s 'Both'
			}
		}
	}
	NoRemove Interface
	{
	    ForceRemove {edbd9ca9-9b82-4f6a-9e8b-98301e450f14} = s 'IAzAuthorizationStore interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {b11e5584-d577-4273-b6c5-0973e0f8e80d} = s 'IAzAuthorizationStore2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {abc08425-0c86-4fa0-9be3-7189956c926e} = s 'IAzAuthorizationStore3 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {987bc7c7-b813-4d27-bede-6ba5ae867e95} = s 'IAzApplication interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {086a68af-a249-437c-b18d-d4d86d6a9660} = s 'IAzApplication2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {181c845e-7196-4a7d-ac2e-020c0bb7a303} = s 'IAzApplication3 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {929b11a9-95c5-4a84-a29a-20ad42c2f16c} = s 'IAzApplications interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {5e56b24f-ea01-4d61-be44-c49b5e4eaf74} = s 'IAzOperation interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {1f5ea01f-44a2-4184-9c48-a75b4dcc8ccc} = s 'IAzOperation2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {90ef9c07-9706-49d9-af80-0438a5f3ec35} = s 'IAzOperations interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {cb94e592-2e0e-4a6c-a336-b89a6dc1e388} = s 'IAzTask interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {03a9a5ee-48c8-4832-9025-aad503c46526} = s 'IAzTask2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {b338ccab-4c85-4388-8c0a-c58592bad398} = s 'IAzTasks interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {00e52487-e08d-4514-b62e-877d5645f5ab} = s 'IAzScope interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {ee9fe8c9-c9f3-40e2-aa12-d1d8599727fd} = s 'IAzScope2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {78e14853-9f5e-406d-9b91-6bdba6973510} = s 'IAzScopes interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {f1b744cd-58a6-4e06-9fbf-36f6d779e21e} = s 'IAzApplicationGroup interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {3f0613fc-b71a-464e-a11d-5b881a56cefa} = s 'IAzApplicationGroup2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {4ce66ad5-9f3c-469d-a911-b99887a7e685} = s 'IAzApplicationGroups interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {859e0d8d-62d7-41d8-a034-c0cd5d43fdfa} = s 'IAzRole interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {95e0f119-13b4-4dae-b65f-2f7d60d822e4} = s 'IAzRoles interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {eff1f00b-488a-466d-afd9-a401c5f9eef5} = s 'IAzClientContext interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {2b0c92b8-208a-488a-8f81-e4edb22111cd} = s 'IAzClientContext2 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {11894fde-1deb-4b4b-8907-6d1cda1f5d4f} = s 'IAzClientContext3 interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {e192f17d-d59f-455e-a152-940316cd77b2} = s 'IAzBizRuleContext interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {fc17685f-e25d-4dcd-bae1-276ec9533cb5} = s 'IAzBizRuleParameters interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {e94128c7-e9da-44cc-b0bd-53036f3aab3d} = s 'IAzBizRuleInterfaces interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {d97fcea1-2599-44f1-9fc3-58e9fbe09466} = s 'IAzRoleDefinition interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {881f25a5-d755-4550-957a-d503a3b34001} = s 'IAzRoleDefinitions interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {55647d31-0d5a-4fa3-b4ac-2b5f9ad5ab76} = s 'IAzRoleAssignment interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {9c80b900-fceb-4d73-a0f4-c83b0bbf2481} = s 'IAzRoleAssignments interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {e5c3507d-ad6a-4992-9c7f-74ab480b44cc} = s 'IAzPrincipalLocator interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {504d0f15-73e2-43df-a870-a64f40714f53} = s 'IAzNameResolver interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	    ForceRemove {63130a48-699a-42d8-bf01-c62ac3fb79f9} = s 'IAzObjectPicker interface'
		{
			ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
			ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
			TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}'
			{
				val Version = s '1.0'
			}
		}
	}
}
HKCR
{
	AzRoles.AzBizRuleContext.1 = s 'AzBizRuleContext Class'
	{
		CLSID = s '{5c2dc96f-8d51-434b-b33c-379bccae77c3}'
	}
	AzRoles.AzBizRuleContext = s 'AzBizRuleContext Class'
	{
		CurVer = s 'AzRoles.AzBizRuleContext.1'
	}
	NoRemove CLSID
	{
		ForceRemove {5c2dc96f-8d51-434b-b33c-379bccae77c3} = s 'AzBizRuleContext Class'
		{
			ProgID = s 'AzRoles.AzBizRuleContext.1'
			VersionIndependentProgID = s 'AzRoles.AzBizRuleContext'
			ForceRemove 'Programmable'
			InprocServer32 = s '%MODULE%'
			{
				val ThreadingModel = s 'Both'
			}
		}
	}
}
CREATE TABLE [dbo].[AzMan_AzApplicationGroup] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ObjectGuid] [uniqueidentifier] NULL,       
    [StoreID]       [int] , 
    [AppID]         [int] ,     
    [ScopeID]       [int] ,         
    [ParentType] [tinyint] NOT NULL ,   
    [Name] [nvarchar] (64) ,
    [Description] [nvarchar] (1024) ,
    [ApplicationData] [ntext]  ,
    [GroupType] [tinyint] NULL,
    [LdapQueryID]   [int] NULL,
    [RowUpdateTimeStamp] [timestamp] NULL , 
    [ChildUpdateTimeStamp] [binary] (8) NULL  
) ON [PRIMARY]
GO


CREATE TABLE [dbo].[AzMan_AzAuthorizationStore] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ObjectGuid] [uniqueidentifier] NULL,   
    [Description] [nvarchar] (1024) ,
    [Name] [nvarchar] (512) ,   
    [ApplicationData] [ntext]  ,
    [DomainTimeout] [int] NULL ,
    [ScriptEngineTimeout] [int] NULL ,
    [MaxScriptEngines] [int] NULL ,
    [TargetMachine] [nvarchar] (50) ,
    [ApplyStoreSacl] [bit] NULL ,
    [GenerateAudits] [bit] NULL ,
    [MajorVersion] [int] NULL,
    [MinorVersion] [int] NULL,
    [RowUpdateTimeStamp] [timestamp] NULL ,     
    [ChildUpdateTimeStamp] [binary] (8) NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_AzApplication] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ObjectGuid] [uniqueidentifier] NULL,   
    [StoreID] [int] NOT NULL ,
    [Name] [nvarchar] (512) ,
    [Description] [nvarchar] (1024) ,
    [ApplicationData] [ntext]  ,
    [ApplyStoreSacl] [bit] NULL ,
    [GenerateAudits] [bit] NULL ,
    [AuthzInterfaceClsId] [int] NULL ,
    [ApplicationVersion] [nvarchar] (50),
    [RowUpdateTimeStamp] [timestamp] NULL ,     
    [ChildUpdateTimeStamp] [binary] (8) NULL  
) ON [PRIMARY]
GO


CREATE TABLE [dbo].[AzMan_BizRule_To_Task] (
    [BizRuleID] [int]   NOT NULL ,
    [TaskID]    [int] NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_BizRule_To_Group] (
    [BizRuleID] [int]   NOT NULL ,
    [GroupID]   [int]   NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_BizRule] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ParentId] [int] NOT NULL ,
    [ParentType] [tinyint] not NULL,
    [BizRuleImportedPath] [nvarchar] (512) ,
    [BizRule] [ntext] ,
    [BizRuleLanguage] [nvarchar] (64), 
    [RowUpdateTimeStamp] [timestamp] NULL           
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_LDAPQuery] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [GroupID] [int] NOT NULL ,
    [LdapQuery] [ntext] ,
    [RowUpdateTimeStamp] [timestamp] NULL           
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_Group_SIDMember] (
    [GroupID] [int] NOT NULL ,
    [MemberSID] [varbinary] (85) NOT NULL ,
    [Member] [bit] Not NULL ,
    [RowUpdateTimeStamp] [timestamp] NULL 
) ON [PRIMARY]
GO


CREATE TABLE [dbo].[AzMan_Group_AppMember] (
    [GroupID]       [int] NOT NULL ,
    [ChildID]       [int] NOT NULL ,
    [Member]        [bit] Not NULL ,
    [RowUpdateTimeStamp] [timestamp] NULL       
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_AzOperation] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ObjectGuid] [uniqueidentifier] NULL,   
    [AppID] [int] NOT NULL ,
    [Name] [nvarchar] (64) ,
    [Description] [nvarchar] (1024) ,
    [ApplicationData] [ntext]  ,
    [OperationID] [int] NULL,
    [RowUpdateTimeStamp] [timestamp] NULL ,         
    [ChildUpdateTimeStamp] [binary] (8) NULL  
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_AzTask] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ObjectGuid] [uniqueidentifier] NULL,   
    [AppID] [int],
    [ScopeID] [int],
    [ParentType] [tinyint] NOT NULL ,       
    [Name] [nvarchar] (64) ,
    [Description] [nvarchar] (1024) ,
    [ApplicationData] [ntext]  ,
    [IsRoleDefinition] [bit] NULL ,
    [RowUpdateTimeStamp] [timestamp] NULL ,     
    [ChildUpdateTimeStamp] [binary] (8) NULL  
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_AzScope] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [AppID] [int] NOT NULL ,
    [Name] [ntext],
    [NameLen]   [int]  NOT NULL,
    [NameHash]  [Binary] (32) NULL,
    [Description] [nvarchar] (1024) ,
    [ApplicationData] [ntext]  ,
    [ObjectGuid] [uniqueidentifier] NULL,
    [RowUpdateTimeStamp] [timestamp] NULL ,     
    [ChildUpdateTimeStamp] [binary] (8) NULL,
    [HasSpecificUsers] [bit] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_AzRoleAssignment] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [AppID] [int],
    [ScopeID] [int],
    [ParentType] [tinyint] NOT NULL ,       
    [Name] [nvarchar] (64) ,
    [Description] [nvarchar] (1024) ,
    [ApplicationData] [ntext]  ,
    [ObjectGuid] [uniqueidentifier] NULL ,
    [RowUpdateTimeStamp] [timestamp] NULL ,     
    [ChildUpdateTimeStamp] [binary] (8) NULL  
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_Role_SIDMember] (
    [RoleID] [int] NOT NULL ,
    [MemberSID] [varbinary] (85) NOT NULL,
    [RowUpdateTimeStamp] [timestamp] NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_Role_AppMember] (
    [RoleID]        [int] NOT NULL ,
    [ChildID]       [int] NOT NULL ,
    [RowUpdateTimeStamp] [timestamp] NULL       
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_Role_To_Task_Link] (
    [TaskID]  [int] NOT NULL ,
    [RoleID]  [int] NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_Role_To_Operation_Link] (
    [OperationID]  [int]    NOT NULL ,
    [RoleID]        [int]   NOT NULL 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AzMan_Task_To_Task_Link] (
    [TaskID]  [int] NOT NULL ,
    [ChildID]   [int]   NOT NULL 
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Azman_SQLRole]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Azman_SQLRole]
GO

CREATE TABLE [dbo].[Azman_SQLRole] (
    [uid]      [int] not null,
    [ObjectID] [int] NULL ,
    [ObjectType] [tinyint] NULL ,
    [SQLRoleName] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,   
    [RoleType] [tinyint] NULL 
) ON [PRIMARY]
GO


CREATE TABLE [dbo].[AzMan_Task_To_Operation_Link] (
    [OperationID]   [int]   NOT NULL ,
    [TaskID]        [int]   NOT NULL 
) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzApplication_StoreID] ON [dbo].[AzMan_AzApplication]([StoreId]) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzApplicationGroup_AppID] ON [dbo].[AzMan_AzApplicationGroup]([AppID]) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzApplicationGroup_ScopeID] ON [dbo].[AzMan_AzApplicationGroup]([ScopeID]) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzApplicationGroup_Name] ON [dbo].[AzMan_AzApplicationGroup]([Name]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_AzOperation_Name] ON [dbo].[AzMan_AzOperation]([Name]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_AzOperation_AppID] ON [dbo].[AzMan_AzOperation]([AppID]) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzRoleAssignment_AppID] ON [dbo].[AzMan_AzRoleAssignment]([AppID]) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzRoleAssignment_ScopeID] ON [dbo].[AzMan_AzRoleAssignment]([ScopeID]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_AzRoleAssignment_Name] ON [dbo].[AzMan_AzRoleAssignment]([Name]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_AzScope_AppID] ON [dbo].[AzMan_AzScope]([AppID]) ON [PRIMARY]
GO
  

CREATE  INDEX [IX_Azman_Scope_Name] ON [dbo].[AzMan_AzScope] ([AppID], [NameHash]) ON [PRIMARY]  
Go  

CREATE  INDEX [IX_AzMan_AzTask_AppID] ON [dbo].[AzMan_AzTask]([AppID]) ON [PRIMARY]
GO

CREATE  INDEX [IX_AzMan_AzTask_ScopeID] ON [dbo].[AzMan_AzTask]([ScopeID]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_AzTask_Name] ON [dbo].[AzMan_AzTask]([Name]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_BizRule_Parent] ON [dbo].[AzMan_BizRule]([ParentId], [ParentType]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_Group_AppMember_GroupID] ON [dbo].[AzMan_Group_AppMember]([GroupId]) ON [PRIMARY]
GO

 CREATE  INDEX [IX_AzMan_LDAPQuery_GroupID] ON [dbo].[AzMan_LDAPQuery]([GroupID]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_AzApplication] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzApplication] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_AzAuthorizationStore] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzAuthorizationStore] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_AzScope] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzScope] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
GO


ALTER TABLE [dbo].[AzMan_AzApplicationGroup] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzApplicationGroup] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] ,
    CONSTRAINT [FK_AzMan_AzAppGroup_AzMan_AzApplication] FOREIGN KEY 
    (
        [AppID]
    ) REFERENCES [dbo].[AzMan_AzApplication] (
        [ID]
    ) ,
    CONSTRAINT [FK_AzMan_AzAppGroup_AzMan_AzAuthorizationStore] FOREIGN KEY 
    (
        [StoreID]
    ) REFERENCES [dbo].[AzMan_AzAuthorizationStore] (
        [ID]
    ) ,
    CONSTRAINT [FK_AzMan_AzAppGroup_AzMan_AzScope] FOREIGN KEY 
    (
        [ScopeID]
    ) REFERENCES [dbo].[AzMan_AzScope] (
        [ID]
    ) 
    
GO

ALTER TABLE [dbo].[AzMan_AzApplicationGroup] WITH NOCHECK ADD 
    CONSTRAINT [CK_AzMan_AzApplicationGroup] CHECK (sign(coalesce([StoreID],0)) + sign(coalesce([AppID],0)) + sign(coalesce([ScopeID],0)) = 1)
GO

ALTER TABLE [dbo].[AzMan_AzRoleAssignment] WITH NOCHECK ADD 
    CONSTRAINT [CK_AzMan_AzRoleAssignment] CHECK (sign(coalesce([AppID],0)) + sign(coalesce([ScopeID],0)) = 1)
GO

ALTER TABLE [dbo].[AzMan_AzTask] WITH NOCHECK ADD 
    CONSTRAINT [CK_AzMan_AzTask] CHECK (sign(coalesce([AppID],0)) + sign(coalesce([ScopeID],0)) = 1)
GO

alter table [dbo].[AzMan_AzApplicationGroup] nocheck constraint [FK_AzMan_AzAppGroup_AzMan_AzApplication]
GO

alter table [dbo].[AzMan_AzApplicationGroup] nocheck constraint [FK_AzMan_AzAppGroup_AzMan_AzAuthorizationStore]
GO

alter table [dbo].[AzMan_AzApplicationGroup] nocheck constraint [FK_AzMan_AzAppGroup_AzMan_AzScope]
GO


ALTER TABLE [dbo].[AzMan_AzOperation] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzOperation] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_AzRoleAssignment] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzRoleAssignment] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] ,
    
    CONSTRAINT [FK_AzMan_Role_To_App] FOREIGN KEY 
    (
        [AppID]
    ) REFERENCES [dbo].[AzMan_AzApplication] (
        [ID]
    ) ,

    CONSTRAINT [FK_AzMan_Role_To_Scope] FOREIGN KEY 
    (
        [ScopeID]
    ) REFERENCES [dbo].[AzMan_AzScope] (
        [ID]
    ) 
    
GO

alter table [dbo].[AzMan_AzRoleAssignment] nocheck constraint [FK_AzMan_Role_To_App]
GO

alter table [dbo].[AzMan_AzRoleAssignment] nocheck constraint FK_AzMan_Role_To_Scope
GO


ALTER TABLE [dbo].[AzMan_AzTask] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_AzTask] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] ,
    CONSTRAINT [FK_AzMan_AzTask_To_App] FOREIGN KEY 
    (
        [AppID]
    ) REFERENCES [dbo].[AzMan_AzApplication] (
        [ID]
    ) ,
    CONSTRAINT [FK_AzMan_AzTask_To_Scope] FOREIGN KEY 
    (
        [ScopeID]
    ) REFERENCES [dbo].[AzMan_AzScope] (
        [ID]
    )   
GO

alter table [dbo].[AzMan_AzTask] nocheck constraint [FK_AzMan_AzTask_To_App]
GO

alter table [dbo].[AzMan_AzTask] nocheck constraint [FK_AzMan_AzTask_To_Scope]
GO

ALTER TABLE [dbo].[AzMan_BizRule] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_BizRule] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_LDAPQuery] WITH NOCHECK ADD 
    CONSTRAINT [PK_AzMan_LDAPQuery] PRIMARY KEY  CLUSTERED 
    (
        [ID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_AzOperation] WITH NOCHECK ADD 
    CONSTRAINT [IX_AzMan_AzOperation_OpID] UNIQUE  NONCLUSTERED 
    (
        [OperationID],
        [AppID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_Group_AppMember] WITH NOCHECK ADD 
    CONSTRAINT [IX_AzMan_Group_AppMember_member] UNIQUE  NONCLUSTERED 
    (
        [GroupID],
        [ChildID],
        [Member]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_Group_SIDMember] WITH NOCHECK ADD 
    CONSTRAINT [IX_AzMan_Group_SIDMember_member] UNIQUE  NONCLUSTERED 
    (
        [GroupID],
        [MemberSID],
        [Member]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_Role_AppMember] WITH NOCHECK ADD 
    CONSTRAINT [IX_AzMan_Role_AppMember_member] UNIQUE  NONCLUSTERED 
    (
        [RoleID],
        [ChildID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_Role_SIDMember] WITH NOCHECK ADD 
    CONSTRAINT [IX_AzMan_Role_SIDMember_member] UNIQUE  NONCLUSTERED 
    (
        [RoleID],
        [MemberSID]
    )  ON [PRIMARY] 
GO


ALTER TABLE [dbo].[AzMan_AzApplication] ADD 
    CONSTRAINT [FK_AzMan_AzApplication_AzMan_AzAuthorizationStore] FOREIGN KEY 
    (
        [StoreID]
    ) REFERENCES [dbo].[AzMan_AzAuthorizationStore] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE 
GO


ALTER TABLE [dbo].[AzMan_AzOperation] ADD 
    CONSTRAINT [FK_AzMan_AzOperation_AzMan_AzApplication] FOREIGN KEY 
    (
        [AppID]
    ) REFERENCES [dbo].[AzMan_AzApplication] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[AzMan_AzScope] ADD 
    CONSTRAINT [FK_AzMan_AzScope_AzMan_AzApplication] FOREIGN KEY 
    (
        [AppID]
    ) REFERENCES [dbo].[AzMan_AzApplication] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE 
GO


ALTER TABLE [dbo].[AzMan_BizRule_To_Group] ADD 
    CONSTRAINT [FK_AzMan_BizRule_To_Group_AzMan_AzApplicationGroup] FOREIGN KEY 
    (
        [GroupID]
    ) REFERENCES [dbo].[AzMan_AzApplicationGroup] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [FK_AzMan_BizRule_To_Group_AzManBizrule] FOREIGN KEY 
    (
        [BizRuleID]
    ) REFERENCES [dbo].[AzMan_BizRule] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_BizRule_To_Group] PRIMARY KEY  CLUSTERED 
    (
        [BizRuleID],
        [GroupID]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_BizRule_To_Task] ADD 
    CONSTRAINT [FK_AzMan_BizRule_To_Task_AzMan_AzTask] FOREIGN KEY 
    (
        [TaskID]
    ) REFERENCES [dbo].[AzMan_AzTask] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [FK_AzMan_BizRule_To_Task_AzManBizrule] FOREIGN KEY 
    (
        [BizRuleID]
    ) REFERENCES [dbo].[AzMan_BizRule] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_BizRule_To_Task] PRIMARY KEY  CLUSTERED 
    (
        [BizRuleID],
        [TaskID]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_Group_AppMember] ADD 
    CONSTRAINT [FK_AzMan_Group_AppMember_AzMan_AzApplicationGroup] FOREIGN KEY 
    (
        [GroupID]
    ) REFERENCES [dbo].[AzMan_AzApplicationGroup] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_Group_AppMember] PRIMARY KEY  CLUSTERED 
    (
        [GroupID],
        [ChildID],
        [Member]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_Group_SIDMember] ADD 
    CONSTRAINT [FK_AzMan_Group_SIDMember_AzMan_AzApplicationGroup] FOREIGN KEY 
    (
        [GroupID]
    ) REFERENCES [dbo].[AzMan_AzApplicationGroup] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_Group_SIDMember] PRIMARY KEY  CLUSTERED 
    (
        [GroupID],
        [MemberSID],
        [Member]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_LDAPQuery] ADD 
    CONSTRAINT [FK_AzMan_LDAPQuery_AzMan_AzApplicationGroup] FOREIGN KEY 
    (
        [GroupID]
    ) REFERENCES [dbo].[AzMan_AzApplicationGroup] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[AzMan_Role_AppMember] ADD 
    CONSTRAINT [FK_AzMan_Role_AppMember_AzMan_AzRoleAssignment] FOREIGN KEY 
    (
        [RoleID]
    ) REFERENCES [dbo].[AzMan_AzRoleAssignment] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_Role_AppMember] PRIMARY KEY  CLUSTERED 
    (
        [RoleID],
        [ChildID]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_Role_SIDMember] ADD 
    CONSTRAINT [FK_AzMan_Role_SIDMember_AzMan_AzRoleAssignment] FOREIGN KEY 
    (
        [RoleID]
    ) REFERENCES [dbo].[AzMan_AzRoleAssignment] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_Role_SIDMember] PRIMARY KEY  CLUSTERED 
    (
        [RoleID],
        [MemberSID]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_Role_To_Operation_Link] ADD 
    CONSTRAINT [FK_AzMan_Role_To_Operation_Link_AzMan_AzOperation] FOREIGN KEY 
    (
        [OperationID]
    ) REFERENCES [dbo].[AzMan_AzOperation] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [FK_AzMan_Role_To_Operation_Link_AzMan_AzRoleAssignment] FOREIGN KEY 
    (
        [RoleID]
    ) REFERENCES [dbo].[AzMan_AzRoleAssignment] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_Role_To_Operation_Link] PRIMARY KEY  CLUSTERED 
    (
        [RoleID],
        [OperationID]
    )  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AzMan_Role_To_Task_Link] ADD 
    CONSTRAINT [FK_AzMan_Role_To_Task_Link_AzMan_AzRoleAssignment] FOREIGN KEY 
    (
        [RoleID]
    ) REFERENCES [dbo].[AzMan_AzRoleAssignment] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [FK_AzMan_Role_To_Task_Link_AzMan_AzTask] FOREIGN KEY 
    (
        [TaskID]
    ) REFERENCES [dbo].[AzMan_AzTask] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE,
    CONSTRAINT [PK_AzMan_Role_To_Task_Link] PRIMARY KEY  CLUSTERED 
    (
        [RoleID],
        [TaskID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_Task_To_Operation_Link] ADD 
    CONSTRAINT [FK_AzMan_Task_To_Operation_Link_AzMan_AzOperation] FOREIGN KEY 
    (
        [OperationID]
    ) REFERENCES [dbo].[AzMan_AzOperation] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [FK_AzMan_Task_To_Operation_Link_AzMan_AzTask] FOREIGN KEY 
    (
        [TaskID]
    ) REFERENCES [dbo].[AzMan_AzTask] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [PK_AzMan_Task_To_Operation_Link] PRIMARY KEY  CLUSTERED 
    (
        [OperationID],
        [TaskID]
    )  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AzMan_Task_To_Task_Link] ADD 
    CONSTRAINT [FK_AzMan_Task_To_Task_Link_AzMan_AzTask] FOREIGN KEY 
    (
        [TaskID]
    ) REFERENCES [dbo].[AzMan_AzTask] (
        [ID]
    ) ON DELETE CASCADE  ON UPDATE CASCADE,
    CONSTRAINT [PK_AzMan_Task_To_Task_Link] PRIMARY KEY  CLUSTERED 
    (
        [TaskID],
        [ChildID]
    )  ON [PRIMARY]
GO

--Trigger for updating Timestamps

CREATE TRIGGER TR_updateStoreTimeStampOnAppDelete ON dbo.[AzMan_AzApplication] 
FOR delete
AS
    UPDATE [AzMan_AzAuthorizationStore] 
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT StoreID FROM deleted)
go

CREATE TRIGGER TR_updateStoreTimeStampOnAppModified ON dbo.[AzMan_AzApplication] 
FOR INSERT,UPDATE
AS

    UPDATE [AzMan_AzAuthorizationStore] 
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT StoreID FROM inserted)
go

CREATE TRIGGER TR_updateAppTimeStampOnScopeDelete ON dbo.[AzMan_AzScope] 
FOR delete
AS
    UPDATE [AzMan_AzApplication] 
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT AppID FROM deleted)
go

CREATE TRIGGER TR_updateAppTimeStampOnScoprModified ON dbo.[AzMan_AzScope] 
FOR INSERT,UPDATE
AS

    UPDATE [AzMan_AzApplication] 
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT AppID FROM inserted)
go

CREATE TRIGGER TR_UpdateAppTimeStampOnOpChange ON dbo.[AzMan_AzOperation] 
FOR INSERT,UPDATE
AS
    UPDATE [AzMan_AzApplication] 
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT AppID FROM inserted)
go

CREATE TRIGGER TR_UpdateAppTimeStampOnOpDelete ON dbo.[AzMan_AzOperation] 
FOR delete
AS
    UPDATE [AzMan_AzApplication] 
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT AppID FROM deleted)
go

Create Procedure UpdateGroupsParentTimeStamp
(
  @ParentId [int]                   
, @ParentType [tinyint]
)
as 
    if @ParentType = 0 
    Begin 
        UPDATE [AzMan_AzAuthorizationStore] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end
    else if @ParentType = 1  -- App
    Begin
        UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end
    else if @ParentType = 4  -- Scope
    Begin
        UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end

GO

Create Procedure UpdateTasksParentTimeStamp
(
  @ParentId [int]                   
, @ParentType [tinyint]
)
as 
    if @ParentType = 1  -- App
    Begin
        UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end
    else if @ParentType = 4  -- Scope
    Begin
        UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end
GO

Create Procedure UpdateRolesParentTimeStamp
(
  @ParentId [int]                   
, @ParentType [tinyint]
)
as 
    if @ParentType = 1  -- App
    Begin
        UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end
    else if @ParentType = 4  -- Scope
    Begin
        UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId 
    end
GO

CREATE TRIGGER TR_UpdateParentTimeStampOnGroupDelete ON dbo.[AzMan_AzApplicationGroup] 
FOR delete
AS
DECLARE @ParentID INT
DECLARE @ParentType TinyInt
Declare @StoreID INT
Declare @AppID INT
Declare @ScopeID INT

    -- We need to find the parent first
    SELECT @StoreID=StoreID, @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM deleted
    if @@RowCount = 1
    Begin
        if @ParentType = 0
        Begin
            set @ParentID = @StoreID
        End
        else if @ParentType = 1
        Begin
            set @ParentID = @AppID
        End
        else if @ParentType = 4
        Begin
            set @ParentID = @ScopeID
        End
        
        exec UpdateGroupsParentTimeStamp @ParentID, @ParentType
    End     
go

CREATE TRIGGER TR_UpdateParentTimeStampOnGroupInsOrUpd ON dbo.[AzMan_AzApplicationGroup] 
FOR INSERT,UPDATE
AS

DECLARE @ParentID INT
DECLARE @ParentType TinyInt
Declare @StoreID INT
Declare @AppID INT
Declare @ScopeID INT

    SELECT @StoreID=StoreID, @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM inserted
    
    if @@RowCount = 1
    Begin
        if @ParentType = 0 
        Begin
            set @ParentID = @StoreID
        End
        else if @ParentType = 1 
        Begin
            set @ParentID = @AppID
        End
        else if @ParentType = 4 
        Begin
            set @ParentID = @ScopeID
        End
    
        exec UpdateGroupsParentTimeStamp @ParentID, @ParentType
    End     
go

CREATE TRIGGER TR_UpdateParentTimeStampOnTaskDelete ON dbo.[AzMan_AzTask] 
FOR delete
AS
DECLARE @ParentID INT
DECLARE @ParentType TinyInt
Declare @AppID INT
Declare @ScopeID INT

    -- We need to find the parent first
    SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM deleted
    if @@RowCount = 1
        Begin
           if @ParentType = 1 
           Begin
        set @ParentID = @AppID
       End
       else if @ParentType = 4 
       Begin
        set @ParentID = @ScopeID
       End

       exec UpdateTasksParentTimeStamp @ParentID, @ParentType
        end    
go

CREATE TRIGGER TR_UpdateParentTimeStampOnTaskInsOrUpd ON dbo.[AzMan_AzTask] 
FOR INSERT,UPDATE
AS
DECLARE @ParentID INT
DECLARE @ParentType TinyInt
Declare @AppID INT
Declare @ScopeID INT

    SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM inserted
    if @@RowCount = 1
        Begin
           if @ParentType = 1 
           Begin
        set @ParentID = @AppID
       End
       else if @ParentType = 4 
       Begin
        set @ParentID = @ScopeID
       End

       exec UpdateTasksParentTimeStamp @ParentID, @ParentType
        end
go


CREATE TRIGGER TR_UpdateParentTimeStampOnRoleDelete ON dbo.[AzMan_AzRoleAssignment] 
FOR delete
AS
DECLARE @ParentID INT
DECLARE @ParentType TinyInt
Declare @AppID INT
Declare @ScopeID INT

    -- We need to find the parent first
    SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM deleted
    if @@RowCount = 1
        Begin
           if @ParentType = 1 
           Begin
        set @ParentID = @AppID
       End
       else if @ParentType = 4 
       Begin
        set @ParentID = @ScopeID
       End
           exec UpdateRolesParentTimeStamp @ParentID, @ParentType
        end
go

CREATE TRIGGER TR_UpdateParentTimeStampOnRoleInsOrUpd ON dbo.[AzMan_AzRoleAssignment] 
FOR INSERT,UPDATE
AS
DECLARE @ParentID INT
DECLARE @ParentType TinyInt
Declare @AppID INT
Declare @ScopeID INT

    SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM inserted
    if @@RowCount = 1
        Begin
           if @ParentType = 1 
           Begin
        set @ParentID = @AppID
       End
       else if @ParentType = 4 
       Begin
        set @ParentID = @ScopeID
       End

           exec UpdateRolesParentTimeStamp @ParentID, @ParentType
        end
go

CREATE TRIGGER TR_UpdateGroupsTimeStampOnSidMemberDel ON dbo.[AzMan_Group_SIDMember] 
FOR delete
AS
    UPDATE [AzMan_AzApplicationGroup]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT GroupID FROM deleted)
go

CREATE TRIGGER TR_UpdateGroupsTimeStampOnSidMemberInsOrUpd ON dbo.[AzMan_Group_SidMember] 
FOR INSERT,UPDATE
AS
    UPDATE [AzMan_AzApplicationGroup]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT GroupID FROM inserted)
go

CREATE TRIGGER TR_UpdateGroupsTimeStampOnAppdMemberDel ON dbo.[AzMan_Group_AppMember] 
FOR delete
AS
    UPDATE [AzMan_AzApplicationGroup]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT GroupID FROM deleted)
go

CREATE TRIGGER TR_UpdateGroupsTimeStampOnAppMemberInsOrUpd ON dbo.[AzMan_Group_AppMember] 
FOR INSERT,UPDATE
AS
    UPDATE [AzMan_AzApplicationGroup]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT GroupID FROM inserted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnSidMemberDel ON dbo.[AzMan_Role_SIDMember] 
FOR delete
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM deleted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnSidMemberInsOrUpd ON dbo.[AzMan_Role_SidMember] 
FOR INSERT,UPDATE
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM inserted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnAppMemberDel ON dbo.[AzMan_Role_AppMember] 
FOR delete
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM deleted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnAppMemberInsOrUpd ON dbo.[AzMan_Role_AppMember] 
FOR INSERT,UPDATE
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM inserted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnOperationDelete ON dbo.AzMan_Role_To_Operation_Link
FOR DELETE
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM deleted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnOperationInsert ON dbo.AzMan_Role_To_Operation_Link
FOR INSERT
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM inserted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnTaskDelete ON dbo.AzMan_Role_To_Task_Link
FOR DELETE
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM deleted)
go

CREATE TRIGGER TR_UpdateRolesTimeStampOnTaskInsert ON dbo.AzMan_Role_To_Task_Link
FOR INSERT
AS
    UPDATE [AzMan_AzRoleAssignment]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT RoleID FROM inserted)
go

CREATE TRIGGER TR_UpdateTaskTimeStampOnOperationDelete ON dbo.AzMan_Task_To_Operation_Link
FOR DELETE
AS
    UPDATE [AzMan_AzTask]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT TaskID FROM deleted)
go

CREATE TRIGGER TR_UpdateTaskTimeStampOnOperationInsert ON dbo.AzMan_Task_To_Operation_Link
FOR INSERT
AS
    UPDATE [AzMan_AzTask]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT TaskID FROM inserted)
go

CREATE TRIGGER TR_UpdateTaskTimeStampOnTaskDelete ON dbo.AzMan_Task_To_Task_Link
FOR DELETE
AS
    UPDATE [AzMan_AzTask]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT TaskID FROM deleted)
go

CREATE TRIGGER TR_UpdateTaskTimeStampOnTaskInsert ON dbo.AzMan_Task_To_Task_Link
FOR INSERT
AS
    UPDATE [AzMan_AzTask]
        SET [ChildUpdateTimeStamp]=@@DBTS 
    WHERE ID in (SELECT TaskID FROM inserted)
go

CREATE TRIGGER TR_DeleteGroupForStore ON dbo.[AzMan_AzAuthorizationStore]
FOR delete
AS
delete [AzMan_AzApplicationGroup] where StoreID in (select ID from deleted)  
go

CREATE TRIGGER TR_DeleteGroupForApp ON dbo.[AzMan_AzApplication]
FOR delete
AS
delete [AzMan_AzApplicationGroup] where AppID in (SELECT ID FROM deleted) 
go

CREATE TRIGGER TR_DeleteGroupForScope ON dbo.[AzMan_AzScope]
FOR delete
AS
delete [AzMan_AzApplicationGroup] where ScopeID in (SELECT ID FROM deleted)
go

CREATE TRIGGER TR_DeleteTaskForApp ON dbo.[AzMan_AzApplication]
FOR delete
AS
delete [AzMan_AzTask] where AppID in (SELECT ID FROM deleted)
go

CREATE TRIGGER TR_DeleteTaskForScope ON dbo.[AzMan_AzScope]
FOR delete
AS
delete [AzMan_AzTask] where ScopeID in (SELECT ID FROM deleted)
go

CREATE TRIGGER TR_DeleteRoleForApp ON dbo.[AzMan_AzApplication]
FOR delete
AS
delete [AzMan_AzRoleAssignment] where AppID in (SELECT ID FROM deleted)
go

CREATE TRIGGER TR_DeleteRoleForScope ON dbo.[AzMan_AzScope]
FOR delete
AS
delete [AzMan_AzRoleAssignment] where ScopeID in (SELECT ID FROM deleted)
go

CREATE TRIGGER TR_DeleteBizRuleForTask ON dbo.[AzMan_BizRule_To_Task]
FOR delete
AS
delete [AzMan_BizRule] where [ID] in (SELECT BizruleID FROM deleted)
go

CREATE TRIGGER TR_DeleteBizRuleForGroup ON dbo.[AzMan_BizRule_To_Group]
FOR delete
AS
delete [AzMan_BizRule] where [ID] in (SELECT BizruleID FROM deleted)
go 
IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_GenerateObjectAudit' and type = 'P')
    DROP PROCEDURE [AzMan_SP_GenerateObjectAudit]
GO

Create Procedure [AzMan_SP_GenerateObjectAudit]  
(
@success int,
@event int,
@actObjectType tinyint,
@actObjectName nvarchar(512),
@actObjectGuid uniqueidentifier,
@targetType tinyint,
@targetName nvarchar(512),
@targetGuid uniqueidentifier,
@otherInfo nvarchar(1024)
)
AS
    DECLARE @UserName nvarchar(256)
    DECLARE @UserSid varbinary(85)
    SELECT @UserName = User_Name()
    SELECT @UserSid = SUSER_SID()
    
    -- events:
    -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
    -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
    -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
    -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
    
    
    Exec master.dbo.AzGenerateAudit @success,
                                    @event, 
                                    @actObjectType, 
                                    @actObjectName, 
                                    @actObjectGuid, 
                                    0, 
                                    @UserName, 
                                    @UserSid, 
                                    @targetType,  
                                    @targetName, 
                                    @targetGuid,
                                    @otherInfo

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_GenerateMemberAudit' and type = 'P')
    DROP PROCEDURE [AzMan_SP_GenerateMemberAudit]
GO

Create Procedure [AzMan_SP_GenerateMemberAudit]  
(
@success int,
@event int,
@actObjectType tinyint,
@actObjectName nvarchar(512),
@actObjectGuid uniqueidentifier,
@memberName nvarchar(256),
@memberSid varbinary(85),
@memberFlag int,
@otherInfo nvarchar(1024)
)
AS
    DECLARE @UserName nvarchar(256)
    DECLARE @UserSid varbinary(85)
    SELECT @UserName = User_Name()
    SELECT @UserSid = SUSER_SID()
    
    -- events:
    -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
    -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
    
    -- memberFlags:
    -- 0 for non-members
    -- 1 for members
    -- 2 for admins
    -- 3 for readers
    -- 4 for delegated users
    
    
    Exec master.dbo.AzGenerateAudit @success,
                                    @event, 
                                    @actObjectType, 
                                    @actObjectName, 
                                    @actObjectGuid, 
                                    0, 
                                    @UserName, 
                                    @UserSid, 
                                    @memberName,  
                                    @memberSid, 
                                    @memberFlag,
                                    @otherInfo

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_GenerateGenericAudit' and type = 'P')
    DROP PROCEDURE [AzMan_SP_GenerateGenericAudit]
GO

Create Procedure [AzMan_SP_GenerateGenericAudit]  
(
@success int,
@actObjectType tinyint,
@actObjectName nvarchar(512),
@actObjectGuid uniqueidentifier,
@otherInfo nvarchar(1024)
)
AS
    DECLARE @UserName nvarchar(256)
    DECLARE @UserSid varbinary(85)
    SELECT @UserName = User_Name()
    SELECT @UserSid = SUSER_SID()
    
    -- events:
    -- 6 for SE_AUDITID_AZ_SQL_OTHER
    
        
    Exec master.dbo.AzGenerateAudit @success,
                                    6, 
                                    @actObjectType, 
                                    @actObjectName, 
                                    @actObjectGuid, 
                                    0, 
                                    @UserName, 
                                    @UserSid, 
                                    @otherInfo

GO


IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPU_SqlRoleUpdated' and type = 'P')
    DROP PROCEDURE AzMan_SPU_SqlRoleUpdated
GO

CREATE PROCEDURE dbo.AzMan_SPU_SqlRoleUpdated 
(
@Return int output,
@ObjectID int,
@ObjectType tinyint
)
AS

DECLARE @OldChildTS timestamp
    
    -- We can't just manually update the row timestamp because it is a timestamp column. 
    -- So we set-and-reset the ChildUpdateTimeStamp for the update of the timestamp column
    
    IF @ObjectType = 0
        BEGIN
            SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzAuthorizationStore] WHERE ID = @ObjectID
            UPDATE [AzMan_AzAuthorizationStore]
                SET [ChildUpdateTimeStamp]=@OldChildTS + 1
                WHERE ID = @ObjectID
                
            UPDATE [AzMan_AzAuthorizationStore]
                SET [ChildUpdateTimeStamp]=@OldChildTS
                WHERE ID = @ObjectID
        END
    ELSE IF @ObjectType = 1
        BEGIN
            SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzApplication] WHERE ID = @ObjectID
            UPDATE [AzMan_AzApplication]
                SET [ChildUpdateTimeStamp]=@OldChildTS + 1
                WHERE ID = @ObjectID
            UPDATE [AzMan_AzApplication]
                SET [ChildUpdateTimeStamp]=@OldChildTS
                WHERE ID = @ObjectID
        END
    ELSE IF @ObjectType = 4
        BEGIN
            SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzScope] WHERE ID = @ObjectID
            UPDATE [AzMan_AzScope]
                SET [ChildUpdateTimeStamp]=@OldChildTS + 1
                WHERE ID = @ObjectID
            UPDATE [AzMan_AzScope]
                SET [ChildUpdateTimeStamp]=@OldChildTS
                WHERE ID = @ObjectID
        END
        
    SET @Return = @@ERROR
    
    RETURN @Return
    
GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_GetRoleMemberCount' and type = 'P')
    DROP PROCEDURE AzMan_SP_GetRoleMemberCount
GO

CREATE PROCEDURE dbo.AzMan_SP_GetRoleMemberCount 
(
@SqlRoleName nvarchar(64),
@count int output
)
AS
    select @count = count(*)  
    from sysusers u, sysusers g, sysmembers m  
    where   g.uid = m.groupuid
        and    g.name = @SqlRoleName
        and    g.issqlrole = 1  
        and    u.uid = m.memberuid
	RETURN
GO


IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_GetSQLRole' and type = 'P')
    DROP PROCEDURE AzMan_SP_GetSQLRole
GO

Create Procedure [AzMan_SP_GetSQLRole]
(
@Return [int] output,
@ID [int]
,@ObjectType [tinyint]
,@RoleType [tinyint]
,@SQLRoleName [nvarchar] (64) output
)
As
    Set @Return = 0
    
    Select @SQLRoleName = SQLRoleName from Azman_SQLRole
    where  ObjectID = @ID and ObjectType = @ObjectType and RoleType = @RoleType
Go

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPI_SQLRole' and type = 'P')
    DROP PROCEDURE AzMan_SPI_SQLRole
GO

Create PROCEDURE dbo.AzMan_SPI_SQLRole
(
 @Return [int] output
,@ID int
,@ObjectType [tinyint]
,@RoleType [tinyint]
,@SQLRoleName [nvarchar] (64) output    
)
AS
    Set @SQLRoleName = ''

    DECLARE @myid   uniqueidentifier
    DECLARE @RoleID smallint
    DECLARE @Ret    [int]
    
    declare @dbName nvarchar (255)

    Set @Return = 0


    SET @myid = NEWID()
    Set @SQLRoleName = CONVERT(varchar(64), @myid)
    Set @RoleID = 1 
    
    If Is_Member('db_owner') = 1 or Is_Member('db_securityadmin') = 1
    Begin
        EXEC @Ret = sp_addrole @SQLRoleName
    End
    else
    begin
        Set @dbName = db_name()
        Exec master.dbo.xp_AzManAddRole @Ret output, @ID, @ObjectType, @dbName, @SQLRoleName
    End
    
    if @Ret = 0 
        Begin
            select @RoleID = uid from sysusers where (name = @SQLRoleName) and (issqlrole = 1)
            
            Insert Into [dbo].[Azman_SQLRole]
            (
                [uid],      
                [ObjectID], 
                [ObjectType],
                [SQLRoleName],
                [RoleType] 
            )
            Values
            (
                @RoleID,
                @ID,
                @ObjectType,
                @SQLRoleName,
                @RoleType
            )
        End     
    Else
        Begin
            Set @Return = -1
        End

    Return @Return  
go

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPI_SQLRole_From_XP' and type = 'P')
    DROP PROCEDURE AzMan_SPI_SQLRole_From_XP
GO

Create PROCEDURE dbo.AzMan_SPI_SQLRole_From_XP
(
 @Return [int] output
,@SQLRoleName [nvarchar] (64) 
)
AS

    DECLARE @RoleID smallint
    DECLARE @Ret    [int]

    Set @Return = -1
    Set @RoleID = -1

    EXEC @Ret = sp_addrole @SQLRoleName
    
    if @Ret = 0 
        Begin
            select @RoleID = uid from sysusers where (name = @SQLRoleName) and (issqlrole = 1)
            if @RoleID <> -1
            Begin
                set @Return = 0
            End
        End     
    Else
        Begin
            Set @Return = -1
        End

    Return @Return  
go

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPI_Add_User_To_SQLRole_From_XP' and type = 'P')
    DROP PROCEDURE AzMan_SPI_Add_User_To_SQLRole_From_XP
GO

CREATE PROCEDURE AzMan_SPI_Add_User_To_SQLRole_From_XP
(
 @Return             [int] output
,@ID                 [int]
,@ObjectType         [tinyint]
,@RoleType           [tinyint]
,@UserName          [nvarchar] (255)
)
AS
    DECLARE @Ret                [int]
    Declare @NameInDB           [nvarchar] (255)
    Declare @SQLRoleName        [nvarchar] (64) 
    DECLARE @RoleMemberCount    [int]
    Set @Return = -1    
    
    Set @SQLRoleName = NULL
    
    Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, 
            @ID, 
            @ObjectType, 
            @RoleType, 
            @SQLRoleName = @SQLRoleName output  

    if len(@SQLRoleName) > 0
    Begin
    
        set @NameInDB = null                          

        SET @Ret = 0

        -- if no such loging yet, then grant the user login
        IF NOT EXISTS (SELECT * FROM master..syslogins WHERE UPPER(loginname) = UPPER(@UserName) AND hasaccess=1)
            BEGIN
                EXEC @Ret = sp_grantlogin @UserName
            END

        -- if the user does not have access to the db
        IF @Ret= 0 AND NOT EXISTS (SELECT * FROM sysusers WHERE UPPER(Name) = UPPER(@UserName) AND hasdbaccess = 1)
            BEGIN
                EXEC @Ret = sp_grantdbaccess @UserName, @NameInDB output
            END
            
        -- workaround for now sp_grantdbaccess returns 1 when the user already has access
        if @Ret= 0 or len(@NameInDB) > 0
            BEGIN
                Exec @Ret = sp_addrolemember  @SQLRoleName, @UserName
                -- if the user is successfully added to a scope's role
                IF @Ret = 0 AND @ObjectType = 4 -- scope
                    BEGIN
                        EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output
                        IF @RoleMemberCount > 0
	                        UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 1 
	                            WHERE dbo.AzMan_AzScope.ID = @ID
                    END
            END
    End
        
    Set @Return = @Ret 
GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPI_Add_User_To_SQLRole' and type = 'P')
    DROP PROCEDURE AzMan_SPI_Add_User_To_SQLRole
GO

CREATE PROCEDURE AzMan_SPI_Add_User_To_SQLRole
(
 @Return             [int] output
,@ID                 [int]
,@ObjectType         [tinyint]
,@RoleType           [tinyint]
,@SQLRoleName        [nvarchar] (64) 
,@UserSid            varbinary(85)
,@UserName          [nvarchar] (255)
,@SaclIsOn          [bit]
)
AS
    DECLARE @Ret    [int]
    Declare @NameInDB [nvarchar] (255)
    DECLARE @ObjectName nvarchar(512)
    DECLARE @ObjectGuid uniqueidentifier
    DECLARE @MemberType int    
    declare @dbName nvarchar (255)
    DECLARE @RoleMemberCount    [int]
    
    Set @Return = -1

    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            IF @ObjectType = 0 -- store
                SELECT @ObjectName = store.Name, @ObjectGuid=store.ObjectGuid FROM [dbo].[Azman_AzAuthorizationStore] store
                    WHERE store.ID=@ID
            IF @ObjectType = 1 -- app
                SELECT @ObjectName = app.Name, @ObjectGuid=app.ObjectGuid FROM [dbo].[Azman_AzApplication] app
                    WHERE app.ID=@ID
            IF @ObjectType = 4 -- scope
                SELECT @ObjectName = scope.Name, @ObjectGuid=scope.ObjectGuid FROM [dbo].[Azman_AzScope] scope
                    WHERE scope.ID=@ID
            
            IF @RoleType = 1  -- admin
                SET @MemberType = 2
            IF @RoleType = 2  -- reader
                SET @MemberType = 3
            IF @RoleType = 3  -- delegated users
                SET @MemberType = 4
        END
                     
    set @NameInDB = null
    If Is_Member('db_owner') = 1
    Begin
        exec AzMan_SPI_Add_User_To_SQLRole_From_XP @Return output, @ID, @ObjectType, @RoleType, @UserName
    End
    else
    Begin
        Set @dbName = db_name()
        Exec master.dbo.xp_AzManAddUserToRole @Return output, @ID, @ObjectType, @RoleType, @dbName, @UserName
    End
    
    -- trigger the parent object's update timestamp
    IF @Return = 0
        BEGIN
            Exec AzMan_SPU_SqlRoleUpdated @Ret output, @ID, @ObjectType
            IF @ObjectType = 4 -- scope
                BEGIN
                    EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output
                    IF @RoleMemberCount > 0
	                    UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 1 
	                        WHERE dbo.AzMan_AzScope.ID = @ID
                END
        END
        
    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateMemberAudit]
                @Return,
                4,  -- 0 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
                @ObjectType,
                @ObjectName,
                @ObjectGuid,
                @UserName,
                @UserSid,
                @MemberType,  -- member type
                N'' -- no other info
        END
            
	Return @Return

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPI_Create_SqlRole_For_Object' and type = 'P')
    DROP PROCEDURE AzMan_SPI_Create_SqlRole_For_Object
GO

CREATE PROCEDURE AzMan_SPI_Create_SqlRole_For_Object
(
 @Return                [int] output
,@ID                    [int]
,@ObjectType        [tinyint]
,@RoleType          [tinyint]  
)
AS
    DECLARE @Ret            [int]
    DECLARE @SQLRoleName    [nvarchar] (255)
    
    DECLARE @SaclIsOn [bit]
    DECLARE @AccessAtObjType tinyint
    Set @SaclIsOn = 0
    Set @Return = 0
    
    Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, 
            @ID, 
            @ObjectType, 
            @RoleType, 
            @SQLRoleName = @SQLRoleName output  
    
    if @SQLRoleName Is NULL
        begin
            Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output
            if @Return <> 1
                begin
                    Set @Return = -5
                    goto Done
                end
            -- we have proper access, then insert the role
            Exec AzMan_SPI_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output
        end
    
Done:

    Return @Return  

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPI_Add_User_To_Role' and type = 'P')
    DROP PROCEDURE AzMan_SPI_Add_User_To_Role
GO

CREATE PROCEDURE AzMan_SPI_Add_User_To_Role
(
 @Return                [int] output
,@ID                    [int]
,@ObjectType        [tinyint]
,@RoleType          [tinyint]
,@UserSid           varbinary(85)
,@UserName          [nvarchar] (255)    
)
AS
    DECLARE @Ret            [int]
    DECLARE @SQLRoleName    [nvarchar] (255)
    Declare @NameInDB       [nvarchar] (255)
    
    DECLARE @SaclIsOn [bit]
    DECLARE @AccessAtObjType tinyint
    Set @SaclIsOn = 0
    Set @Return = 0
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output
    
    IF @Return <> 1
        BEGIN
            Set @Return = -5
            goto Done
        END
        
    Set @Return = -1

    Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, 
            @ID, 
            @ObjectType, 
            @RoleType, 
            @SQLRoleName = @SQLRoleName output  

    if @SQLRoleName  Is NULL
    Begin
        Exec AzMan_SPI_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output
    End
    
    if @SQLRoleName is NOT NULL
    Begin 
        Exec AzMan_SPI_Add_User_To_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName, @UserSid, @UserName, @SaclIsOn
    End
    Else
    Begin
        Set @Return = -1
    End     

Done:

    Return @Return  

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPD_User_From_SQLRole_From_XP' and type = 'P')
    DROP PROCEDURE AzMan_SPD_User_From_SQLRole_From_XP
GO

CREATE PROCEDURE AzMan_SPD_User_From_SQLRole_From_XP
(
@Return              [int] output
,@SQLRoleName        [nvarchar] (64)
,@UserName           [nvarchar] (255)
)
AS
    DECLARE @Ret    [int]
    
    SET NOCOUNT ON
    
    Set @Return = -1
    
    Exec @Ret = sp_droprolemember @SQLRoleName, @UserName
    
    if @Ret <> 0 
    Begin
        Set @Return = -1 
    End
    Else
    Begin
        Set @Return = 0 
    End
    
    SET NOCOUNT OFF
    
    Return @Return  
GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPD_User_From_SQLRole' and type = 'P')
    DROP PROCEDURE AzMan_SPD_User_From_SQLRole
GO

CREATE PROCEDURE AzMan_SPD_User_From_SQLRole
(
 @Return             [int] output
,@ID                 [int]
,@ObjectType         [tinyint]
,@RoleType           [tinyint]
,@SQLRoleName        [nvarchar] (64)
,@UserSid            varbinary(85)
,@UserName           [nvarchar] (255)
,@SaclIsOn           [bit]
)
AS
    DECLARE @Ret    [int]
    DECLARE @ObjectName nvarchar(512)
    DECLARE @ObjectGuid uniqueidentifier
    DECLARE @MemberType int 
    Declare @DbName [nvarchar] (255)    
    DECLARE @RoleMemberCount int
    DECLARE @OtherRoleMemberCount int
    
    DECLARE @OtherRoleName [nvarchar] (64)
    
    Set @Return = -1
    
    If is_Member('db_owner') = 1 or is_Member('db_securityadmin')  = 1 or is_member('db_accessyadmin') = 1
    Begin
        Exec @Ret = sp_droprolemember @SQLRoleName, @UserName
    End
    else
    begin
        Set @DbName = db_name()
        Exec master.dbo.xp_AzManRemoveUserFromRole 
                    @Ret output,
                    @ID,
                    @ObjectType,
                    @DbName,
                    @SQLRoleName,
                    @UserName
    End
    
    if @Ret <> 0 
    Begin
        Set @Return = -1 
    End
    Else
    Begin
        -- trigger the parent object's update timestamp
        Set @Return = 0
        Exec AzMan_SPU_SqlRoleUpdated @Return output, @ID, @ObjectType
        
        -- if the delete is successful to a scope role
        IF @Return = 0 AND @ObjectType = 4
            BEGIN
                -- we need to get the other role's name for the scope
                SET @OtherRoleName = NULL
                IF @RoleType = 1 -- admin
                    Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, 2, @OtherRoleName output
                ELSE IF @RoleType = 2 -- reader
                    Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, 1, @OtherRoleName output  
			    
                SET @RoleMemberCount = 0
                SET @OtherRoleMemberCount = 0
                IF @SQLRoleName IS NOT NULL
			        EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output
                IF @OtherRoleName IS NOT NULL
                    EXEC AzMan_SP_GetRoleMemberCount @OtherRoleName, @OtherRoleMemberCount output
                
                IF @RoleMemberCount = 0 AND @OtherRoleMemberCount = 0
	                UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 0 
	                    WHERE dbo.AzMan_AzScope.ID = @ID
            END
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            IF @ObjectType = 0 -- store
                SELECT @ObjectName = store.Name, @ObjectGuid=store.ObjectGuid FROM [dbo].[Azman_AzAuthorizationStore] store
                    WHERE store.ID=@ID
            IF @ObjectType = 1 -- app
                SELECT @ObjectName = app.Name, @ObjectGuid=app.ObjectGuid FROM [dbo].[Azman_AzApplication] app
                    WHERE app.ID=@ID
            IF @ObjectType = 4 -- scope
                SELECT @ObjectName = scope.Name, @ObjectGuid=scope.ObjectGuid FROM [dbo].[Azman_AzScope] scope
                    WHERE scope.ID=@ID
                    
            IF @RoleType = 1  -- admin
                SET @MemberType = 2
            IF @RoleType = 2  -- reader
                SET @MemberType = 3
            IF @RoleType = 3  -- delegated users
                SET @MemberType = 4

            -- generate an audit
            EXEC [AzMan_SP_GenerateMemberAudit]
                @Return,
                5,  -- 0 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
                @ObjectType,
                @ObjectName,
                @ObjectGuid,
                @UserName,
                @UserSid,
                @MemberType,  -- member type
                N'' -- no other info
        END
	
    Return @Return  

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPD_User_From_Role' and type = 'P')
    DROP PROCEDURE AzMan_SPD_User_From_Role
GO

CREATE PROCEDURE AzMan_SPD_User_From_Role
(
 @Return                [int] output
,@ID                    [int]
,@ObjectType            [tinyint]
,@RoleType              [tinyint]
,@UserSid               varbinary(85)
,@UserName              [nvarchar] (255)    
)
AS
    DECLARE @Ret            [int]
    DECLARE @SQLRoleName    [nvarchar] (64) 
    DECLARE @SaclIsOn [bit]
    DECLARE @AccessAtObjType tinyint
    Set @SaclIsOn = 0
    Set @Return = 0
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output
    
    IF @Return <> 1
        BEGIN
            Set @Return = -5
            goto Done
        END

    Set @Return = -1

    Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output  
    
    if @SQLRoleName Is not NULL
    Begin
        Exec AzMan_SPD_User_From_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName, @UserSid, @UserName, @SaclIsOn
    End
    
Done:
    Return @Return  

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPS_Get_DBOwners' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Get_DBOwners
GO

CREATE PROCEDURE AzMan_SPS_Get_DBOwners
(
@Return [int] output,
@ID     [int]
)
AS
    SET NOCOUNT ON
    -- @ID is not used. But our internal implementation requires non-empty
    -- parameter set where @Return is not considered one of them.
    EXEC @Return = sp_helprolemember 'db_owner'
    
    SET NOCOUNT OFF
    
    Return @Return 

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPS_Get_Role_For_Object' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Get_Role_For_Object
GO

CREATE PROCEDURE AzMan_SPS_Get_Role_For_Object
(
@Return      [int] output
,@ID         [int]
,@ObjectType [tinyint]
,@RoleType   [tinyint]
)
AS
    DECLARE @SQLRoleName [nvarchar] (64)

    SET NOCOUNT ON
    
    Set @SQLRoleName = NULL
    Set @Return = 0

    Select @SQLRoleName = SQLRoleName From [dbo].[Azman_SQLRole]
    where 
      [ObjectID]    = @ID and
      [ObjectType]  = @ObjectType and
      [RoleType]    = @RoleType
    
    if @SQLRoleName is not NULL 
        Begin
            EXEC @Return = sp_helprolemember @SQLRoleName
        End
    
    SET NOCOUNT OFF
    
    Return @Return
    
GO


IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_Get_Object_Path_For_Container' and type = 'P')
    DROP PROCEDURE AzMan_SP_Get_Object_Path_For_Container
GO

Create Procedure [AzMan_SP_Get_Object_Path_For_Container]
(
 @Return                [int]   output
,@ID                    [int]
,@ObjectType            [tinyint]
,@StoreID               [int]   output
,@AppID                 [int]   output
,@ScopeID               [int]   output
)
AS
    DECLARE @RowCount INT, @Error INT
    Declare @ParentID [int]
    Declare @ParentType [int]

    Set @StoreID  = -1
    Set @AppID    = -1
    Set @ScopeID  = -1
    Set @Return   = 0 
    
    if @ObjectType = 0 --Store
    Begin
        Set @StoreID = @ID
    End 
    if @ObjectType = 1 -- App
    Begin
        Select @StoreID=StoreID From AzMan_AzApplication where ID = @ID
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        
        if @RowCount <> 1
        Begin
            if @Error = 0
            Begin
                Set @Return = -1168 -- Record not found
            End
            Else
            Begin
                Set @Return = @Error 
            End
        End
        else
        Begin
            Set @AppID = @ID        
        End
    End

    If @ObjectType = 4 -- Scope
    Begin
        Select @AppID   = AppID From [AzMan_AzScope] where ID = @ID
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
        if @RowCount = 1
        Begin
            Select @StoreID = StoreId From AzMan_AzApplication where ID = @AppID
            
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
            if @RowCount <> 1
            Begin
                if @Error = 0
                Begin
                    Set @Return = -1168 -- Record not found
                End
                Else
                Begin
                    Set @Return = @Error 
                End
            End
            else
            Begin
                Set @ScopeID = @ID
            End
        End
        else
        Begin
            if @Error = 0
            Begin
                Set @Return = -1168 -- Record not found
            End
            Else
            Begin
                Set @Return = @Error 
            End
        End
    End     
    
Return @Return

Go  

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_Get_Object_Path' and type = 'P')
    DROP PROCEDURE AzMan_SP_Get_Object_Path
GO

Create Procedure [AzMan_SP_Get_Object_Path]
(
 @Return [int] output
,@ID [int]
,@ObjectType [tinyint]
,@StoreID [int] output
,@AppID [int]   output
,@ScopeID [int] output
)
AS
    Declare @ParentID [int]
    Declare @ParentType [int]
    DECLARE @RowCount INT, @Error INT

    Set @StoreID  = -1
    Set @AppID    = -1
    Set @ScopeID  = -1
    Set @Return   = 0 
    
    if @ObjectType = 0 --Store
    Begin
        Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output
        goto Return_Get_ObjPath     
    End 
    
    if @ObjectType = 1 -- App
    Begin
        Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output
        goto Return_Get_ObjPath     
    End
    
    If @ObjectType = 2 -- Operation
    Begin
        Select @AppID=   AppID From [AzMan_AzOperation] where ID = @ID
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
        if @RowCount <> 1
        Begin
            if @Error = 0
            Begin
                Set @Return = -1168 -- Record not found
            End
            Else
            Begin
                Set @Return = @Error 
            End
        End
        Else
        Begin
            Select @StoreID =StoreID From AzMan_AzApplication where ID = @AppID
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT
            if @RowCount <> 1
            Begin
                if @Error = 0
                Begin
                    Set @Return = -1168 -- Record not found
                End
                Else
                Begin
                    Set @Return = @Error 
                End
            End
        End
        
        goto Return_Get_ObjPath     
    End     
    
    If @ObjectType = 4 -- Scope
    Begin
        Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output
        goto Return_Get_ObjPath
    End     

    If @ObjectType = 3 -- Task
    Begin
        Select @ParentID = 
                case ParentType
                    when 1 then AppID
                    when 4 then ScopeID
                end,
               @ParentType = ParentType from [AzMan_AzTask] where ID = @ID
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT               
        
    End

    If @ObjectType = 5 -- Group
    Begin
        Select @ParentID = 
                case ParentType
                    when 0 then StoreID
                    when 1 then AppID
                    when 4 then ScopeID 
                end,
              @ParentType = ParentType 
        from [AzMan_AzApplicationGroup] where ID = @ID
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
    End
    
    If @ObjectType = 6 -- Role
    Begin
        Select @ParentID =  
                case ParentType
                    when 1 then AppID
                    when 4 then ScopeID
                end,
            @ParentType = ParentType 
        from AzMan_AzRoleAssignment where ID = @ID
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT        
    End
    

    if @RowCount <> 1
    Begin
        if @Error = 0
        Begin
            Set @Return = -1168 -- Record not found
        End
        Else
        Begin
            Set @Return = @Error 
        End
    End
    else
    Begin
        exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ParentID, @ParentType, @StoreID output, @AppID output, @ScopeID output
    End 
    
Return_Get_ObjPath:
    Return @Return

Go  

-- Access Check Store Procedure

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_AccessCheck_For_Container' and type = 'P')
    DROP PROCEDURE AzMan_SP_AccessCheck_For_Container
GO

Create Procedure [AzMan_SP_AccessCheck_For_Container]
(
 @Return [int] output
,@ID [int] 
,@ObjectType [tinyint]
)

As
    -- Check MemberShip starting with current node and going up
    Declare @SQLRoleName     [nvarchar](64) 
    Declare @SQLRoleType     [TinyInt]  
    
    Set @Return      = -5

    -- Check Admin
    
    Set @SQLRoleType = 1
    Set @SQLRoleName = ''
    
    Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output

    -- Is a member of admin 
    
    if @SQLRoleName <> ''
    Begin
        If Is_Member(@SQLRoleName) = 1
        Begin
            Set @Return = 1 -- Admin Access
            Goto Exit_AzMan_SP_AccessCheck_For_Container
        End
    End

    -- Is a member of Reader?

    Set @SQLRoleType = 2
    Set @SQLRoleName = ''   
    
    Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output
    
    if @SQLRoleName <> ''
    Begin
        If Is_Member(@SQLRoleName) = 1
        Begin
            Set @Return = 2 -- Reader Access
            Goto Exit_AzMan_SP_AccessCheck_For_Container
        End
    End
    
    
    -- Is a member of Delegated Users?

    Set @SQLRoleType = 3
    Set @SQLRoleName = ''   
    
    Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output
    
    if @SQLRoleName <> ''
    Begin
        If Is_Member(@SQLRoleName) = 1
        Begin
            Set @Return = 3 -- Delegated user Access
            Goto Exit_AzMan_SP_AccessCheck_For_Container
        End
    End
    
    
Exit_AzMan_SP_AccessCheck_For_Container:
    Return  @Return
GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_AccessCheck' and type = 'P')
    DROP PROCEDURE AzMan_SP_AccessCheck
GO

Create Procedure [AzMan_SP_AccessCheck]
(
 @Return [int] output
,@AccessAtObjType [tinyint] output 
,@ID [int] 
,@ObjectType [tinyint]
,@CheckSacl [bit] = 0
,@SaclIsOn [bit] output
)

As
    -- Check MemberShip starting with current node and going up
    Declare @SQLRoleName     [nvarchar](64) 
    Declare @SQLRoleType     [TinyInt]  
    
    Declare @StoreID        [int] 
    Declare @AppID          [int]   
    Declare @ScopeID        [int] 
    Declare @StoreAccess    [int]
    
    -- If this bit is set we know access check result, but we need to do SACL
    Declare @CheckSaclOnly  [int]
    Declare @TempRet [int]
    
    Set @Return      = -5
    Set @StoreAccess = -5   
    Set @AccessAtObjType = 0
    
    -- default to SACL off
    Set @SaclIsOn = 0
    Set @CheckSaclOnly = 0
    
    -- If the user is a DB_Owner, he has full control
    
    if  Is_Member('db_owner') = 1
        Begin
            set @Return = 1
            --print 'User is member of db_Owner'
            IF @CheckSacl = 0
                Goto Exit_AzMan_SP_AccessCheck
            ELSE
                Set @CheckSaclOnly = 1
        End
    else if  Is_Member('db_datawriter') = 1
        -- If the user is a data writer he has full control
        Begin
            set @Return = 1
            --print 'User is member of db_datawriter' 
            IF @CheckSacl = 0
                Goto Exit_AzMan_SP_AccessCheck
            ELSE
                Set @CheckSaclOnly = 1
        End
    else if  Is_Member('db_datareader') = 1
        -- If the user is a data reader he has read control
        Begin
            set @Return = 2
            --print 'User is member of db_datareader' 
            IF @CheckSacl = 0
                Goto Exit_AzMan_SP_AccessCheck
            ELSE
                Set @CheckSaclOnly = 1
        End
    
    IF @CheckSaclOnly = 1
        Set @TempRet = @Return
        
    -- Go all the way up to the store
    -- Check Access from top to bottom
    
    Exec AzMan_SP_Get_Object_Path @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output    
    
    -- Error ? Record not found 
    if @Return < 0
    Begin
        goto Exit_AzMan_SP_AccessCheck  
    End
    
    -- we honor application's SACL setting over the store's
    IF @CheckSacl = 1 AND @StoreID <> -1 AND @AppID <> -1
        BEGIN
            SELECT @SaclIsOn = IsNull(ApplyStoreSacl, 0) FROM AzMan_AzApplication App WHERE App.ID = @AppID AND App.StoreID = @StoreID
        END
    ELSE IF @CheckSacl = 1 AND @StoreID <> -1
        BEGIN
            SELECT @SaclIsOn = IsNull(ApplyStoreSacl, 0) FROM AzMan_AzAuthorizationStore Store WHERE Store.ID = @StoreID
        END
            
    -- if we are only to check SACL settings (in other words, we already know the answer of access)
    IF @CheckSaclOnly = 1
        Goto Exit_AzMan_SP_AccessCheck
        
    if @StoreID <> -1
    Begin
        set @AccessAtObjType = 0
        Exec AzMan_SP_AccessCheck_For_Container @Return output, @StoreID, 0
        Set @StoreAccess = @Return
        if @Return <= 2
        Begin
            Goto Exit_AzMan_SP_AccessCheck
        End
    End
    else
    Begin
        Goto Exit_AzMan_SP_AccessCheck      
    End
    
    if @AppID <> -1
    Begin
        set @AccessAtObjType = 1
        Exec AzMan_SP_AccessCheck_For_Container @Return output, @AppID, 1
        if @Return <= 2
        Begin
            Goto Exit_AzMan_SP_AccessCheck
        End
    End
    else
    Begin
        Goto Exit_AzMan_SP_AccessCheck  
    End

    if @ScopeID <> -1
    Begin
        set @AccessAtObjType = 4
        Exec AzMan_SP_AccessCheck_For_Container @Return output, @ScopeID, 4
        if @Return <= 2 
        Begin
            Goto Exit_AzMan_SP_AccessCheck
        End
    End
    Begin
        Goto Exit_AzMan_SP_AccessCheck  
    End
    
    
Exit_AzMan_SP_AccessCheck:

    IF @CheckSaclOnly = 1
        Set @Return = @TempRet
        
    Return  @Return


GO

Create PROCEDURE dbo.AzMan_SPS_Get_StoreIDByName
(
    @Return [int] output,
    @ID int OUTPUT,    
    @Name nvarchar(512)
)
AS
Set @ID = -1    -- this means it doesn't exist
Set @Return = 0 

SELECT @ID = ID FROM AzMan_AzAuthorizationStore WHERE Name = @Name

RETURN @@RowCount

go

Create Procedure [AzMan_SP_Check_Dup_Task_For_Given_Parent]
(
    @Return [int] output,
    @ParentID	[int],
    @ParentType     [tinyint] ,
    @ID [int],
    @Name           [nvarchar](64) 
)
AS

Set @Return = 0

    -- Make sure that the name doesn't exist at the same level
    
    if @ParentType = 1
    Begin
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzTask] 
        where 
            ParentType = @ParentType and
            AppID      = @ParentID   and        
            ID <> IsNULL(@ID,0) and
            LOWER([Name]) = LOWER(@Name) )
        Begin
            Set @Return = -183  -- Same Name exist
        End
    End
    else if @ParentType = 4
    Begin
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzTask] 
        where 
            ParentType = @ParentType and
            ScopeID    = @ParentID   and        
            ID <> IsNULL(@ID,0) and
            LOWER([Name]) = LOWER(@Name) )
        Begin
            Set @Return = -183  -- Same Name exist
        End
    End
    else
    Begin
        Set @Return = -87   -- invalid parameter
    End
Return @Return

go 

Create Procedure [AzMan_SP_Check_Dup_Task]
(
    @Return [int] output,
    @ParentID	[int],
    @ParentType     [tinyint] ,
    @ID [int],
    @Name           [nvarchar](64) 
)
AS

Declare @ParentAppID [int]

Set @Return = 0
Set @ParentAppID = 0

    -- First Check the current Parent
    exec AzMan_SP_Check_Dup_Task_For_Given_Parent @Return output, @ParentID, @ParentType, @ID, @Name
    
    if  @Return <> 0 
    Begin
        Return(@Return)
    End
    
    -- Behave differently depending on the object type of the parent object
    
    -- A task that is a child of an application
    --  cannot have the same name as any tasks that are children of any of the child scopes.
    
    if @ParentType = 1		-- Application
    Begin
        Set @ParentAppID = @ParentID
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzTask] 
        where 
            ( ParentType = 4 ) -- All Child scope
                and 
                LOWER([Name]) = LOWER(@Name)  and 
                (@ParentID IN ( Select AppID from Azman_AzScope where AppID = @ParentID and ID <> IsNULL(@ID,0)) ) )
            
        Begin
            Set @Return = -183  -- Same Name exist
        End
    End
    else if @ParentType = 4		-- Scope
    Begin
    -- A task that is a child of a scope,
    --  cannot have the same name as tasks that are children of the application.
    
        -- Find the Parent App
        Select @ParentAppID = [AppId] 
        from AzMan_AzScope
        where [ID] = @ParentID
        
        if ( @ParentAppID = 0 )
        Begin
            Set @Return = -1 -- General Error
        End
        else
        Begin
            exec AzMan_SP_Check_Dup_Task_For_Given_Parent @Return output, @ParentAppID, 1, @ID, @Name
        End
    End
    
    -- Tasks and operations share a namespace so ensure there 
    -- isn't an operation by this name.			
    if  @Return = 0 
    Begin
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzOperation] 
        where 
            LOWER([Name]) = LOWER(@Name) and
            (@ParentAppID = AppID) )
        Begin
            Set @Return = -183  -- Same Name exist
        End
    End
    

Return @Return

go 

Create Procedure [AzMan_SP_Check_Dup_RoleAssignment]
(
    @Return [int] output,
    @ParentID   [int],
    @ParentType [tinyint],
    @ID [int],
    @Name [nvarchar](64) 
)
AS

Set @Return = 0

    if @ParentType = 1
    Begin   
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzRoleAssignment] 
        where 
            ParentType = @ParentType and
            AppID =   @ParentID and
            ID <> IsNULL(@ID,0) and
            LOWER([Name]) = LOWER(@Name) )
        Begin
            Set @Return = -183  -- Same Name exist
        End
    End
    else if @ParentType = 4
    Begin
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzRoleAssignment] 
        where 
            ParentType = @ParentType and
            ScopeID =   @ParentID and
            ID <> IsNULL(@ID,0) and
            LOWER([Name]) = LOWER(@Name) )
        Begin
            Set @Return = -183  -- Same Name exist
        End
    End
    Else
    Begin
        Set @Return = -1
    End

Return @Return

go 

Create Procedure [AzMan_SP_Check_Dup_Application]
(
    @Return [int] output,
    @StoreID    [int],
    @ID [int],
    @Name [nvarchar](512) 
)
AS



Set @Return = 0

    -- Make sure that the name doesn't exist at the same level
    
    if Exists( Select [Name] from 
        [dbo].[AzMan_AzApplication] 
    where 
        StoreID =   @StoreID and ID <> IsNULL(@ID,0) and
        LOWER([Name]) = LOWER(@Name) )
    Begin
        Set @Return = -183  -- Same Name exist
    End

Return @Return

go 


Create Procedure [AzMan_SP_Check_Dup_Scope]
(
    @Return [int] output,
    @AppID  [int],
    @ID [int],
    @NameHash [binary] (32)
)
AS
    Set @Return = 0
    -- Make sure that the name doesn't exist at the same level

    begin
        if Exists( Select ID from 
            [dbo].[AzMan_AzScope] 
        where 
            ID          <>  IsNULL(@ID,0) and
            AppID       =   @AppID and
            [NameHash]  = @NameHash )
        Begin
            Set @Return = -183  -- Same Name exist
        End
    end

Return @Return



go

Create Procedure [AzMan_SP_Check_Dup_Operation]
(
    @Return [int] output,
    @AppID  [int],
    @ID [int],
    @Name [nvarchar](64) 
)
AS

Set @Return = 0

    -- Make sure that the name doesn't exist at the same level
    
    if Exists( Select [Name] from 
        [dbo].[AzMan_AzOperation] 
    where 
        AppID =   @AppID and
        ID <> IsNULL(@ID,0) and 
        LOWER([Name]) = LOWER(@Name) )
    Begin
        Set @Return = -183  -- Same Name exist
    End

Return @Return

go 


Create Procedure [AzMan_SP_Check_Dup_Group_For_Given_Parent]
(
    @Return [int] output,
    @ParentID   [int],
    @ParentType [tinyint] ,
    @ID [int],
    @Name [nvarchar](64) 
)
AS
    Set @Return = 0
        
    if @ParentType = 0
    Begin
        
    if Exists( Select [Name] from 
        [dbo].[AzMan_AzApplicationGroup] 
    where 
        ( ParentType = @ParentType ) 
        and (StoreID = @ParentID)
        and LOWER([Name]) = LOWER(@Name) 
        and ID <> IsNULL(@ID,0) )
    Begin
        Set @Return = -183  -- Same Name exist
    End
        
    End
    else if @ParentType = 1
    Begin
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzApplicationGroup] 
        where 
            ( ParentType = @ParentType ) 
            and (AppID = @ParentID)
            and LOWER([Name]) = LOWER(@Name) 
            and ID <> IsNULL(@ID,0) )
        Begin
            Set @Return = -183  -- Same Name exist
        End

    End
    else if @ParentType = 4
    Begin
        if Exists( Select [Name] from 
            [dbo].[AzMan_AzApplicationGroup] 
        where 
            ( ParentType = @ParentType ) 
            and (ScopeID = @ParentID)
            and LOWER([Name]) = LOWER(@Name) 
            and ID <> IsNULL(@ID,0) )
        Begin
            Set @Return = -183  -- Same Name exist
        End

    End
    Else
    Begin
        Set @Return = -1
        Return (@Return)
    End
    
Return(@Return)

GO  

Create Procedure [AzMan_SP_Check_Dup_Group]
(
    @Return [int] output,
    @ParentID   [int],
    @ParentType [tinyint] ,
    @ID [int],
    @Name [nvarchar](64) 
)
AS

Declare @ParentStore [int]
Declare @ParentAppID [int]

Set @Return = 0
Set @ParentStore = 0
Set @ParentAppID = 0

    
    -- First Check the current Parent
    exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentID, @ParentType, @ID, @Name
    
    if  @Return <> 0 
    Begin
        Return(@Return)
    End

    -- Behave differently depending on the object type of the parent object
    --
    -- A group that is a child of the authorization store,
    --  cannot have the same name as any groups that are children of any of the child applications, and
    --  cannot have the same name as any groups that are children of any of the grandchild child scopes.

        if @ParentType = 0      -- Auth Store
        Begin

            if Exists( Select ID from 
                [dbo].[AzMan_AzApplicationGroup] 
            where 
                 ( ( ID <> IsNULL(@ID,0) ) and
                   ( [Name] = @Name )      and
                   (   (   ( ParentType = 1 ) and       -- Application
                           ( AppID in ( select ID from AzMan_AzApplication where StoreID = @ParentID ) )
                        )
                    or 
                        (  ( ParentType = 4 ) and   -- Scope
                           ( ScopeID in ( select ID from AzMan_AzScope 
                                            where AppID in (select ID from AzMan_AzApplication where StoreID = @ParentID) ) )
                        )
                    ) 
                 ) 
            )
            Begin
                Set @Return = -183  -- Same Name exist
            End
        End
        else if @ParentType = 1     -- Application
        Begin
        
            -- A group that is a child of an application
            --  cannot have the same name as groups that are children of the authorization store,
            --  and cannot have the same name as any groups that are children of any of the child scopes.
            
            -- Find the parent of Application 
            
            Select @ParentStore = [StoreId] 
            from AzMan_AzApplication
            where [ID] = @ParentID
            
            if ( @ParentStore = 0 )
            Begin
                Set @Return = -1 -- General Error
            End
            Else
            Begin
                -- and Check for conflict 
                exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentStore, 0, @ID, @Name
            End
            
            if ( @Return = 0 )
            Begin
                -- Find All the Child scopes of parent and check for conflicts
                
                if Exists( Select [Name] from 
                    [dbo].[AzMan_AzApplicationGroup] 
                where 
                    ( ParentType = 4 ) -- All Child scope
                      and 
                      LOWER([Name]) = LOWER(@Name)  and 
                     (@ParentID IN ( Select AppID from Azman_AzScope where AppID = @ParentID and ID <> IsNULL(@ID,0)) ) )

                    
                Begin
                    Set @Return = -183  -- Same Name exist
                End
            End             
        End
        else if @ParentType = 4     -- Scope
        Begin
            -- A group that is a child of a scope,
            -- cannot have the same name as groups that are children of the application or authorization store
            
            -- Find the Parent App
            Select @ParentAppID = [AppId] 
            from AzMan_AzScope
            where [ID] = @ParentID
            
            if ( @ParentAppID = 0 )
            Begin
                Set @Return = -1 -- General Error
            End
            else
            Begin
                exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentAppID, 1, @ID, @Name
                
                if  @Return = 0 
                Begin
            
                    -- Find the Parent Store
                    Select @ParentStore = [StoreId] 
                    from AzMan_AzApplication
                    where [ID] = @ParentAppID
                    
                    if ( @ParentStore = 0 )
                    Begin
                        Set @Return = -1 -- General Error
                    End
                    else
                    Begin
                        exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentStore, 0, @ID, @Name
                    End
                End             
            End         
        End         

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzAuthorizationStore]
-- Inserts a new record in [AzMan_AzAuthorizationStore] table
(
  @Return       [int]   output  
, @ID [int] OUTPUT                            
, @ObjectGuid [uniqueidentifier] = Null     
, @DomainTimeout [int] = Null               
, @ScriptEngineTimeout [int] = Null         
, @MaxScriptEngines [int] = Null            
, @ApplyStoreSacl [bit] = Null              
, @GenerateAudits [bit] = 0                 
, @MajorVersion [int] = 1                   
, @MinorVersion [int] = 0                   
, @TargetMachine [nvarchar](50) = Null      
, @Description [nvarchar](1024) = Null      
, @Name [nvarchar] (512)        = NULL
, @ApplicationData [ntext] = Null           

) as 

    DECLARE @RowCount INT, @Error INT
    
    Set @Return = 0
    Set @ID     = 0 

    Set NoCount On
    
    Begin
        Insert Into [dbo].[AzMan_AzAuthorizationStore]
        (
              [ObjectGuid]
            , [Name]
            , [Description]
            , [ApplicationData]
            , [DomainTimeout]
            , [ScriptEngineTimeout]
            , [MaxScriptEngines]
            , [TargetMachine]
            , [ApplyStoreSacl]
            , [GenerateAudits]
            , [MajorVersion]
            , [MinorVersion]
        )

        Values
        (
             @ObjectGuid
            , @Name
            , @Description
            , @ApplicationData
            , @DomainTimeout
            , @ScriptEngineTimeout
            , @MaxScriptEngines
            , @TargetMachine
            , @ApplyStoreSacl
            , @GenerateAudits
            , @MajorVersion
            , @MinorVersion
        )

        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @RowCount = 1 
        Begin
            Set @ID = Cast(SCOPE_IDENTITY() As [int])
        End         
        else
        Begin
            Set @Return = @Error
        End
        
        -- generate a generic audit
        EXEC [AzMan_SP_GenerateGenericAudit]
                @Return,
                0,  -- 0 for store
                @Name,
                @ObjectGuid,
                N'Trying to create an AzAuthorizationStore'
                
        -- generate an audit

        EXEC [AzMan_SP_GenerateObjectAudit]
                @Return,
                0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
                0,  -- 0 for store
                @Name,
                @ObjectGuid,
                0,  -- 0 for store
                @Name,
                @ObjectGuid,
                N'' -- no other info
                
    End
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzApplication]

-- Inserts a new record in [AzMan_AzApplication] table
(
  @Return       [int]   output      
, @ID [int] = Null Output                   
, @ObjectGuid [uniqueidentifier] = Null     
, @StoreId [int]                    
, @ApplyStoreSacl [bit] = Null              
, @GenerateAudits [bit] = Null              
, @AuthzInterfaceClsId [int] = Null         
, @CheckDup [bit] = 1
, @ApplicationVersion [nvarchar](50) = Null 
, @Name [nvarchar](512) = Null              
, @Description [nvarchar](1024) = Null      
, @ApplicationData [ntext] = Null           
)

As

Set NoCount On

    Begin
    
    DECLARE @RowCount INT, @Error INT
    DECLARE @storeName [nvarchar](512)
    DECLARE @storeGuid [uniqueidentifier]
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    Set @Return = 0
    
        Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @StoreId, 0, 1, @SaclIsOn output
        
        -- Require Admin Access
        if @Return <> 1 
        Begin
            if (@Return >= 2)
            Begin
                Set @Return = -5 
            End
            goto Done
        End
    
        -- Check for duplicate name 
        IF @CheckDup = 1
            BEGIN
                Exec AzMan_SP_Check_Dup_Application @Return output, @StoreId, @ID, @Name
            END
        ELSE
            Set @Return = 0
            
        if @Return = 0 
        Begin

            Insert Into [dbo].[AzMan_AzApplication]
            (
                  [ObjectGuid]
                , [StoreId]
                , [Name]
                , [Description]
                , [ApplicationData]
                , [ApplyStoreSacl]
                , [GenerateAudits]
                , [AuthzInterfaceClsId]
                , [ApplicationVersion]
            )

            Values
            (
                  @ObjectGuid
                , @StoreId
                , @Name
                , @Description
                , @ApplicationData
                , @ApplyStoreSacl
                , @GenerateAudits
                , @AuthzInterfaceClsId
                , @ApplicationVersion
            )

            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount = 1
            Begin
                Set @ID = Cast(SCOPE_IDENTITY() As [int])
            End
            Else
            Begin
                Set @Return = @Error
            End
            
            -- generate an audit if SACL is on
            IF @SaclIsOn = 1
                BEGIN
                    -- get the store info
                    SELECT @storeName = Store.Name, @storeGuid = Store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] Store
                        WHERE Store.ID = @StoreId

                    -- generate an audit
                    EXEC [AzMan_SP_GenerateObjectAudit]
                        @Return,
                        0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
                        0,  -- 0 for store
                        @storeName,
                        @storeGuid,
                        1,  -- 1 for Application
                        @Name,
                        @ObjectGuid,
                        N'' -- no other info
               END
        End         
    End

Done:

Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPU_AzApplication]

-- Update an existing record in [AzMan_AzApplication] table

(
  @Return       [int]   output  
, @ID [int] 
, @StoreId [int]                    
, @ConsiderNull_Description bit = 0
, @ConsiderNull_ApplicationData bit = 0
, @ApplyStoreSacl [bit] = Null                      
, @ConsiderNull_ApplyStoreSacl bit = 0
, @GenerateAudits [bit] = Null                      
, @ConsiderNull_GenerateAudits bit = 0
, @AuthzInterfaceClsId [int] = Null                 
, @ConsiderNull_AuthzInterfaceClsId bit = 0
, @ConsiderNull_ApplicationVersion bit = 0
, @ApplicationVersion [nvarchar](50) = Null         
, @Name [nvarchar](512) 
, @Description [nvarchar](1024) = Null              
, @ApplicationData [ntext] = Null                   

)

As
DECLARE @ObjectGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5
        End
        goto Done
    End

Set @Return = 0

If @ConsiderNull_Description Is Null
    Set @ConsiderNull_Description = 0

If @ConsiderNull_ApplicationData Is Null
    Set @ConsiderNull_ApplicationData = 0

If @ConsiderNull_ApplyStoreSacl Is Null
    Set @ConsiderNull_ApplyStoreSacl = 0

If @ConsiderNull_GenerateAudits Is Null
    Set @ConsiderNull_GenerateAudits = 0

If @ConsiderNull_AuthzInterfaceClsId Is Null
    Set @ConsiderNull_AuthzInterfaceClsId = 0

If @ConsiderNull_ApplicationVersion Is Null
    Set @ConsiderNull_ApplicationVersion = 0


    IF @Name Is Not NULL
    Begin
        -- Check for duplicate name 
        Exec AzMan_SP_Check_Dup_Application @Return output, @StoreId, @ID, @Name
    End
    
    If @Return = 0 
    Begin 
        Update [dbo].[AzMan_AzApplication]

        Set
            [Name] = IsNull(@Name, [Name]) 
            ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
            ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
            ,[ApplyStoreSacl] = Case @ConsiderNull_ApplyStoreSacl When 0 Then IsNull(@ApplyStoreSacl, [ApplyStoreSacl]) When 1 Then @ApplyStoreSacl End
            ,[GenerateAudits] = Case @ConsiderNull_GenerateAudits When 0 Then IsNull(@GenerateAudits, [GenerateAudits]) When 1 Then @GenerateAudits End
            ,[AuthzInterfaceClsId] = Case @ConsiderNull_AuthzInterfaceClsId When 0 Then IsNull(@AuthzInterfaceClsId, [AuthzInterfaceClsId]) When 1 Then @AuthzInterfaceClsId End
            ,[ApplicationVersion] = Case @ConsiderNull_ApplicationVersion When 0 Then IsNull(@ApplicationVersion, [ApplicationVersion]) When 1 Then @ApplicationVersion End

        Where
            ([ID] = @ID)
    End              

    -- generate an audit if SACL is on
    IF @SaclIsOn = 1
        BEGIN
            -- get info for auditing
            SELECT @ObjectGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                WHERE app.ID = @ID

            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    1,  -- 0 for application
                    @Name,
                    @ObjectGuid,
                    N'The shallow properties of the application may have been modified'
        END
        
Done:
Set NoCount Off

Return(@Return)


GO

Create Procedure [AzMan_SPI_AzScope]

-- Inserts a new record in [AzMan_AzScope] table
(
  @Return       [int]   output  
, @ID [int] = Null      output
, @AppId [int] = Null                       
, @NameLen [int]         = 0                    
, @NameHash [Binary] (32) = NULL
, @ObjectGuid [uniqueidentifier] = Null         
, @CheckDup [bit] = 1
, @Description [nvarchar](1024) = Null          
, @Name [ntext]
, @ApplicationData [ntext] = Null               

)

As
DECLARE @appName nvarchar(512)
DECLARE @appGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set NoCount On

    Begin
    
    DECLARE @RowCount INT, @Error INT
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppId, 1, 1, @SaclIsOn output
    
    -- Require Admin Access at App
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
    
    IF @CheckDup = 1
        BEGIN
            Exec AzMan_SP_Check_Dup_Scope @Return output, @AppId, -1, @NameHash
        End
    ELSE
        Set @Return = 0
            
    if @Return = 0 
    Begin

        Insert Into [dbo].[AzMan_AzScope]
        (
              [AppId]
            , [Name]
            , [NameLen]
            , [NameHash]
            , [Description]
            , [ApplicationData]
            , [ObjectGuid]
        )

        Values
        (
            @AppId
            , @Name
            , @NameLen
            , @NameHash
            , @Description
            , @ApplicationData
            , @ObjectGuid
        )
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        If @RowCount = 1
        Begin
            Set @ID = Cast(SCOPE_IDENTITY() As [int])               
        End
        Else
        Begin
            Set @Return = @Error
        End
    End
    
    IF @SaclIsOn = 1
        BEGIN
            -- get the store info for auditing
            SELECT @appName = app.Name, @appGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                WHERE app.ID = @AppId

            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                @Return,
                0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
                1,  -- 1 for Application
                @appName,
                @appGuid,
                4,  -- 4 for scope
                @Name,
                @ObjectGuid,
                N'' -- no other info
        END
    End
Done:
Set NoCount Off

Return(@Return)


GO

Create Procedure [AzMan_SPI_AzOperation]

-- Inserts a new record in [AzMan_AzOperation] table
(
  @Return       [int]   output  
, @ID [int] = Null Output                       
, @OperationID [int] = Null                     
, @AppId [int] = Null                       
, @ObjectGuid [uniqueidentifier] = Null         
, @CheckDup [bit] = 1
, @Name [nvarchar](64) = Null                   
, @Description [nvarchar](1024) = Null          
, @ApplicationData [ntext] = Null               

)

As
DECLARE @appName nvarchar(512)
DECLARE @appGuid uniqueidentifier
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set NoCount On
    Begin

    DECLARE @RowCount INT, @Error INT   
    Declare @AccessAtObjType [tinyint]
    Set @Return = 0 
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @AppId, 1, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
    -- if check dup
    IF @CheckDup = 1
        BEGIN
            Exec AzMan_SP_Check_Dup_Operation @Return output, @AppId, @ID, @Name
        End
    ELSE
        Set @Return = 0
            
    if @Return = 0  
    Begin   
            
        Insert Into [dbo].[AzMan_AzOperation]
        (
              [ObjectGuid]
            , [AppId]
            , [Name]
            , [Description]
            , [ApplicationData]
            , [OperationID]
        )

        Values
        (
              @ObjectGuid
            , @AppId
            , @Name
            , @Description
            , @ApplicationData
            , @OperationID
        )

        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        If @RowCount = 1
        Begin
            Set @ID = Cast(SCOPE_IDENTITY() As [int])
        End
        Else
        Begin
            Set @Return = @Error
        End
        
    End
    
    IF @SaclIsOn = 1
        BEGIN
            -- get the store info for auditing
            SELECT @appName = app.Name, @appGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                WHERE app.ID = @AppId

            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                @Return,
                0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
                1,  -- 1 for Application
                @appName,
                @appGuid,
                2,  -- 2 for operation
                @Name,
                @ObjectGuid,
                N'' -- no other info
        END
    End
    
Done:
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzApplicationGroup]

-- Inserts a new record in [AzMan_AzApplicationGroup] table
(
  @Return       [int]   output  
, @ID [int] = Null Output 
, @ParentId [int] 
, @ParentType [int]  
, @GroupType [tinyint] = Null  
, @ObjectGuid [uniqueidentifier] = Null  
, @CheckDup [bit] = 1
, @Name [nvarchar](64) = Null  
, @Description [nvarchar](1024) = Null
)
As

    DECLARE @RowCount INT, @Error INT
    Declare @StoreID int, @AppID int , @ScopeID int
    
    -- parent name and guid is only needed for auditing
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier
    
    Declare @AccessAtObjType [tinyint]
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0

    Set @Return = 0
    
    set @StoreID = 0 
    set @AppID   = 0
    set @ScopeID = 0

    Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ParentId, @ParentType, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    IF @CheckDup = 1
        BEGIN
            Exec AzMan_SP_Check_Dup_Group @Return output, @ParentId, @ParentType, @ID, @Name
        END
    ELSE
        Set @Return = 0
        
    if @Return = 0
    Begin

        if @ParentType = 0
        Begin
            set @StoreID = @ParentId
            -- get info for auditing            
            IF @SaclIsOn = 1
                BEGIN
                    SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
                        WHERE store.ID = @ParentId
                END
        End
        else if @ParentType = 1
        Begin
            set @AppID = @ParentId 
            -- get info for auditing            
            IF @SaclIsOn = 1
                BEGIN
                    SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                        WHERE app.ID = @ParentId 
                END
        End         
        else if @ParentType = 4
        Begin
            set @ScopeID = @ParentId 
            -- get info for auditing            
            IF @SaclIsOn = 1
                BEGIN
                    SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
                        WHERE scope.ID = @ParentId
                END
        End         

        Insert Into [dbo].[AzMan_AzApplicationGroup]
        (
            [ObjectGuid]
            , [StoreId]
            , [AppId]           
            , [ScopeId]                     
            , [ParentType]
            , [Name]
            , [Description]
            , [GroupType]
        )

        Values
        (
            @ObjectGuid
            , @StoreID
            , @AppID            
            , @ScopeID                      
            , @ParentType
            , @Name
            , @Description
            , @GroupType
        )
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        If @RowCount = 1
        Begin
            Set @ID = Cast(SCOPE_IDENTITY() As [int])
        End
        Else
        Begin
            Set @Return = @Error
        End
    End         
    
    IF @SaclIsOn = 1
        BEGIN
        -- generate an audit
        EXEC [AzMan_SP_GenerateObjectAudit]
            @Return,
            0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
            @ParentType,  -- parent type
            @parentName,
            @parentGuid,
            5,  -- 5 for group
            @Name,
            @ObjectGuid,
            N'' -- no other info
        END

Done:

Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzTask]

-- Inserts a new record in [AzMan_AzTask] table
(
  @Return       [int]   output  
, @ID [int] = Null Output 
, @IsRoleDefinition [bit] = 0 
, @ParentId [int] 
, @ParentType [tinyint]  
, @ObjectGuid [uniqueidentifier] = Null  
, @CheckDup [bit] = 1
, @Name [nvarchar](64) = Null  
, @Description [nvarchar](1024) = Null  
, @ApplicationData [ntext] = Null   
)
As

DECLARE @RowCount INT, @Error INT
Declare @AppID [int], @ScopeID [int]
DECLARE @parentName nvarchar(512)
DECLARE @parentGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0
    
Set @Return = 0

Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    Set @AppID = null
    Set @ScopeID = null
    
    if @ParentType = 1
    Begin
        Set @AppID = @ParentId
        -- get info for auditing            
        IF @SaclIsOn = 1
            BEGIN
                SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                    WHERE app.ID = @ParentId 
            END
    End
    Else if @ParentType = 4
    Begin 
        Set @ScopeID = @ParentId
        -- get info for auditing            
        IF @SaclIsOn = 1
            BEGIN
                SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
                    WHERE scope.ID = @ParentId
            END
    End
    Else
    Begin
        Set @Return = -1
        goto Done
    End 

        -- Make sure that the name doesn't exist at the same level
        
        IF @CheckDup = 1
            BEGIN
                Exec AzMan_SP_Check_Dup_Task @Return output, @ParentId, @ParentType, @ID, @Name
            End
        ELSE
            Set @Return = 0
            
        if @Return = 0  
        Begin
            Insert Into [dbo].[AzMan_AzTask]
            (
                  [ObjectGuid]
                , [AppId]
                , [ScopeId]
                , [ParentType]
                , [Name]
                , [Description]
                , [ApplicationData]
                , [IsRoleDefinition]
            )

            Values
            (
                  @ObjectGuid
                , @AppID
                , @ScopeID
                , @ParentType
                , @Name
                , @Description
                , @ApplicationData
                , @IsRoleDefinition
            )
            
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount = 1
            Begin
                Set @ID = Cast(SCOPE_IDENTITY() As [int])
            End
            Else
            Begin
                Set @Return = @Error
            End
        End
        
    IF @SaclIsOn = 1
        -- generate an audit
        EXEC [AzMan_SP_GenerateObjectAudit]
            @Return,
            0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
            @ParentType,  -- parent type
            @parentName,
            @parentGuid,
            3,  -- 3 for task
            @Name,
            @ObjectGuid,
            N'' -- no other info

Done:  
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzTask_Single_Operation]
(
  @Return [int] output
, @TaskID       [int]               -- ID Of task
, @OperationID  [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @taskName nvarchar(512)
DECLARE @taskGuid uniqueidentifier
DECLARE @opName nvarchar(512)
DECLARE @opGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Task_To_Operation_Link] 
        (TaskID, OperationID) 
    VALUES 
        (@TaskID, @OperationID) 
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 --Generic Error
        End
    End
    
    IF @SaclIsOn = 1
        BEGIN
            -- get the info for auditing
            SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
                WHERE Task.ID = @TaskID
            SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
                WHERE Op.ID = @OperationID
                        
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
                    3,  -- 3 for task
                    @taskName,
                    @taskGuid,
                    2,  -- 2 for Operation
                    @opName,
                    @opGuid,
                    N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzTask_Single_Operation]
(
  @Return [int] output
, @TaskID       [int]               -- ID Of task
, @OperationID  [int]
, @SaclIsOn     [bit]
)
As

Set @Return = 0

DECLARE @RowCount INT, @Error INT
DECLARE @taskName nvarchar(512)
DECLARE @taskGuid uniqueidentifier
DECLARE @opName nvarchar(512)
DECLARE @opGuid uniqueidentifier

Set NoCount On

    delete [AzMan_Task_To_Operation_Link] 
    where 
        TaskID = @TaskID and OperationID =  @OperationID 
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End
    End

    IF @SaclIsOn = 1
        BEGIN
            -- get the info for auditing
            SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
                WHERE Task.ID = @TaskID
            SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
                WHERE Op.ID = @OperationID
                        
            -- generate an audit

            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
                    3,  -- 3 for task
                    @taskName,
                    @taskGuid,
                    2,  -- 2 for Operation
                    @opName,
                    @opGuid,
                    N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzTask_Multi_Operations]
(
  @Return [int] output
, @TaskID [int]             -- ID Of Task
, @SepChar [char] (1) = "|"
, @OperationIDs [nvarchar] (4000)
)
As

Set @Return = 0
DECLARE @equal char
DECLARE @addOrDelete nvarchar(10)
DECLARE @isAdd int
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

SET @equal = '='

Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

-- First parse the string
-- Insert each one of them 

DECLARE @OperationID varchar(100), @Pos int
Declare @iOperationID int

    SET @OperationIDs = LTRIM(RTRIM(@OperationIDs))+ @SepChar
    
    SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)

    IF REPLACE(@OperationIDs, @SepChar, '') <> ''
    BEGIN
        WHILE @Pos > 0
        BEGIN
            SET @OperationID = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
            Set @iOperationID = CAST(@OperationID as int)
            
            -- remove the left part (the id)
            SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
            
            -- now move to the pipe separator
            SET @Pos = CHARINDEX(@SepChar, @OperationIDs, 1)
            SET @addOrDelete = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
            
            Set @isAdd = CAST(@addOrDelete as int)
            
            IF @iOperationID <> 0
            BEGIN
                -- if NNNN=0, then it means to delete
                IF @isAdd <> 0
                BEGIN
                    Exec AzMan_SPI_AzTask_Single_Operation @Return output, @TaskID, @iOperationID, @SaclIsOn
                    if @Return <> 0 
                    Begin
                        Break   
                    End
                End
                ELSE
                BEGIN
                    Exec AzMan_SPD_AzTask_Single_Operation @Return output, @TaskID, @iOperationID, @SaclIsOn
                    if @Return <> 0 
                    Begin
                        Break   
                    End
                End
            END
            SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
            SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)
        END
    END 

Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzRoleAssignment_Single_Operation]
(
  @Return [int] output
, @RoleID       [int]               -- ID Of Role
, @OperationID  [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier

DECLARE @opName nvarchar(512)
DECLARE @opGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Role_To_Operation_Link] 
        (RoleID, OperationID) 
    VALUES 
        (@RoleID, @OperationID) 
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 --Generic Error
        End 
    End
    
    IF @SaclIsOn = 1
        BEGIN
            -- get the info for auditing
            SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
                WHERE Role.ID = @RoleID
            SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
                WHERE Op.ID = @OperationID
                        
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    2,  -- 2 for Operation
                    @opName,
                    @opGuid,
                    N'' -- no other info
        END

Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzRoleAssignment_Single_Operation]
(
  @Return [int] output
, @RoleID       [int]               -- ID Of Role assignment
, @OperationID  [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier

DECLARE @opName nvarchar(512)
DECLARE @opGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    delete [AzMan_Role_To_Operation_Link] 
    where 
        RoleID = @RoleID and OperationID =  @OperationID 
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End
    End

    IF @SaclIsOn = 1
        BEGIN
            -- get the info for auditing
            SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
                    WHERE Role.ID = @RoleID
            SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
                    WHERE Op.ID = @OperationID
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    2,  -- 1 for Operation
                    @opName,
                    @opGuid,
                    N'' -- no other info
        END
        
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_Operations]
(
  @Return [int] output  
, @RoleID [int]             -- ID Of Role
, @SepChar [nchar] (1) = "|"
, @OperationIDs [nvarchar] (4000)
)
As

Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0
Set @Return = 0

Set NoCount On

-- First parse the string
-- Insert each one of them 

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

DECLARE @OperationID nvarchar(100), @Pos int
Declare @iOperationID int
DECLARE @equal char
DECLARE @addOrDelete nvarchar(10)
DECLARE @isAdd int
SET @equal = '='

    SET @OperationIDs = LTRIM(RTRIM(@OperationIDs))+ @SepChar
    
    SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)

    IF REPLACE(@OperationIDs, @SepChar, '') <> ''
    BEGIN
        WHILE @Pos > 0
        BEGIN
            SET @OperationID = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
            Set @iOperationID = CAST(@OperationID as int)
            
            -- remove the left part (the id)
            SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
            
            -- now move to the pipe separator
            SET @Pos = CHARINDEX(@SepChar, @OperationIDs, 1)
            SET @addOrDelete = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1)))
            
            Set @isAdd = CAST(@addOrDelete as int)
            
            IF @iOperationID <> 0
            BEGIN
                -- if NNNN=0, then it means to delete
                IF @isAdd <> 0
                BEGIN
                    Exec AzMan_SPI_AzRoleAssignment_Single_Operation @Return output, @RoleID, @iOperationID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End
                ELSE
                BEGIN
                    Exec AzMan_SPD_AzRoleAssignment_Single_Operation @Return output, @RoleID, @iOperationID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                END
            END
            
            SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos)
            SET @Pos = CHARINDEX(@equal, @OperationIDs, 1)
        END
    END 
    
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzTask_Single_Task]
(
  @Return [int] output
, @TaskID       [int]               
, @ChildID      [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @taskName nvarchar(512)
DECLARE @taskGuid uniqueidentifier
DECLARE @refTaskName nvarchar(512)
DECLARE @refTaskGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Task_To_Task_Link] 
        (TaskID, ChildID) 
    VALUES 
        (@TaskID, @ChildID) 
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 --Generic Error
        End 
    End
    
    -- get the info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
                WHERE Task.ID = @TaskID
            SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
                WHERE refTask.ID = @ChildID
                        
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
                    3,  -- 3 for task
                    @taskName,
                    @taskGuid,
                    3,  -- 3 for task
                    @refTaskName,
                    @refTaskGuid,
                    N'' -- no other info
        END
        
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzTask_Single_Task]
(
  @Return [int] output,
  @TaskID       [int]               
, @ChildID      [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @taskName nvarchar(512)
DECLARE @taskGuid uniqueidentifier
DECLARE @refTaskName nvarchar(512)
DECLARE @refTaskGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    Delete From [AzMan_Task_To_Task_Link] 
    where TaskID = @TaskID and
          ChildID  = @ChildID 

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        Set @Return = @Error
    End

    -- get the info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task
                WHERE Task.ID = @TaskID
            SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
                WHERE refTask.ID = @ChildID
                        
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
                    3,  -- 3 for task
                    @taskName,
                    @taskGuid,
                    3,  -- 3 for task
                    @refTaskName,
                    @refTaskGuid,
                    N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzTask_Multi_Tasks]
(
  @Return [int] output
, @ParentTaskId [int]               -- ID Of Task
, @SepChar [char] (1) = "|"
, @TaskIDs [nvarchar] (4000)

)
As

Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set @Return = 0


Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentTaskId, 3, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End


-- First parse the string
-- Insert each one of them 

DECLARE @TaskID varchar(100), @Pos int
Declare @iTaskID int
DECLARE @equal char
DECLARE @addOrDelete nvarchar(10)
DECLARE @isAdd int
SET @equal = '='

    SET @TaskIDs = LTRIM(RTRIM(@TaskIDs))+ @SepChar
    
    SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)

    --IF REPLACE(@TaskIDs, @SepChar, '') <> ''
    BEGIN
        WHILE @Pos > 0
        BEGIN
            SET @TaskID = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
            Set @iTaskID = CAST(@TaskID as int)
            
            -- remove the left part (the id)
            SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
            
            -- now move to the pipe separator
            SET @Pos = CHARINDEX(@SepChar, @TaskIDs, 1)
            SET @addOrDelete = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
            
            Set @isAdd = CAST(@addOrDelete as int)
            
            
            IF @iTaskID <> 0
            BEGIN
                if @isAdd <> 0 
                Begin
                    Exec AzMan_SPI_AzTask_Single_Task @Return output, @ParentTaskId, @iTaskID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End                 
                else
                Begin
                    Exec AzMan_SPD_AzTask_Single_Task @Return output, @ParentTaskId, @iTaskID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End
                
            END
            SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
            SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)
        END
    END 

Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzRoleAssignment_Single_Task]
(
  @Return [int] output,
  @RoleID       [int]               -- ID Of Role
, @TaskID       [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier
DECLARE @refTaskName nvarchar(512)
DECLARE @refTaskGuid uniqueidentifier

Set @Return = 0


Set NoCount On

    INSERT INTO [AzMan_Role_To_Task_Link] 
        (RoleID, TaskID) 
    VALUES 
        (@RoleID, @TaskID) 
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 --Generic Error
        End 
    End
        
    IF @SaclIsOn = 1
        BEGIN
            -- get the info for auditing
            SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
                WHERE role.ID = @RoleID
            SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
                WHERE refTask.ID = @TaskID
                        
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    3,  -- 3 for task
                    @refTaskName,
                    @refTaskGuid,
                    N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure AzMan_SPD_AzRoleAssignment_Single_Task
(
  @Return [int] output,
  @RoleId [int]             -- ID Of Role Assignment
, @TaskID [int]
, @SaclIsOn     [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier
DECLARE @refTaskName nvarchar(512)
DECLARE @refTaskGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    Delete From [AzMan_Role_To_Task_Link] 
    where TaskID    = @TaskID and
          RoleID    = @RoleId
          
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End
    
    -- get the info for auditing
    SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
        WHERE role.ID = @RoleId
    SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask
        WHERE refTask.ID = @TaskID
    
    IF @SaclIsOn = 1
        BEGIN
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    3,  -- 3 for task
                    @refTaskName,
                    @refTaskGuid,
                    N'' -- no other info  
        END
Set NoCount Off

Return(@Return)

go


Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_Tasks]
(
  @Return [int] output
, @RoleId [int]             
, @SepChar [char] (1) = "|"
, @TaskIDs [nvarchar] (4000)
)
As

Set NoCount On

Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set @Return = 0


    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End


-- First parse the string
-- Insert each one of them 

DECLARE @TaskID varchar(100), @Pos int
Declare @iTaskID int
DECLARE @equal char
DECLARE @addOrDelete nvarchar(10)
DECLARE @isAdd int
SET @equal = '='


    SET @TaskIDs = LTRIM(RTRIM(@TaskIDs))+ @SepChar
    
    SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)

    IF REPLACE(@TaskIDs, @SepChar, '') <> ''
    BEGIN
        WHILE @Pos > 0
        BEGIN
            SET @TaskID = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
            Set @iTaskID = CAST(@TaskID as int)
            

            -- remove the left part (the id)
            SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
            
            -- now move to the pipe separator
            SET @Pos = CHARINDEX(@SepChar, @TaskIDs, 1)
            SET @addOrDelete = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1)))
            
            Set @isAdd = CAST(@addOrDelete as int)
            
            
            IF @iTaskID <> 0
            BEGIN
                -- if NNNN=0, then it means to delete
                IF @isAdd <> 0
                Begin           
                    Exec [AzMan_SPI_AzRoleAssignment_Single_Task] @Return output, @RoleId, @iTaskID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End
                else
                Begin
                    Exec [AzMan_SPD_AzRoleAssignment_Single_Task] @Return output, @RoleId, @iTaskID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End                 
            END
            SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos)
            SET @Pos = CHARINDEX(@equal, @TaskIDs, 1)
        END
    END 

Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzRoleAssignment]

(
  @Return [int] output
, @ID [int] = Null Output 
, @ParentId [int] 
, @ParentType [tinyint]  
, @ObjectGuid [uniqueidentifier] = Null  
, @CheckDup [bit] = 1
, @Name [nvarchar](64) = Null  
, @Description [nvarchar](1024) = Null  
, @ApplicationData [ntext] = Null   
)
As

DECLARE @RowCount INT, @Error INT
Declare @AppId [int] , @ScopeID [int]
DECLARE @parentName nvarchar(512)
DECLARE @parentGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set @Return = 0

Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

        IF @CheckDup = 1
            BEGIN
                Exec AzMan_SP_Check_Dup_RoleAssignment @Return output, @ParentId, @ParentType, @ID, @Name
            END
        ELSE
            Set @Return = 0
            
        if @Return = 0 
        Begin 
        
            Set @AppId  = null
            Set @ScopeID= null 
            
            if @ParentType = 1
            Begin
                Set @AppId = @ParentId
                -- get info for auditing
                IF @SaclIsOn = 1
                    BEGIN
                        SELECT @parentName=app.Name, @parentGuid=app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                            WHERE app.ID = @ParentId
                    END
            End
            else if @ParentType = 4
            Begin
                Set @ScopeID = @ParentId
                -- get info for auditing
                IF @SaclIsOn = 1
                    BEGIN
                        SELECT @parentName=scope.Name, @parentGuid=scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
                            WHERE scope.ID = @ParentId
                    END
            End
            else
            Begin
                Set @Return = -1
                Return
            End
    
            Insert Into [dbo].[AzMan_AzRoleAssignment]
            (
                  [ObjectGuid]
                , [AppID]
                , [ScopeID]
                , [ParentType]
                , [Name]
                , [Description]
                , [ApplicationData]
            )

            Values
            (
                  @ObjectGuid
                , @AppId
                , @ScopeID
                , @ParentType
                , @Name
                , @Description
                , @ApplicationData
            )

            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount = 1
            Begin

                Set @ID = Cast(SCOPE_IDENTITY() As [int])
            End
            Else
            Begin
                Set @Return = @Error
            End


        End         
        
    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    0,  -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE
                    @ParentType,
                    @parentName,
                    @parentGuid,
                    6,  -- 6 for role
                    @Name,
                    @ObjectGuid,
                    N'' -- no other info  
        END
Done:
          
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPU_AzAuthorizationStore]

-- Update an existing record in [AzMan_AzAuthorizationStore] table

(
  @Return [int] output
, @ID [int]
, @ConsiderNull_Description bit = 0
, @ConsiderNull_ApplicationData bit = 0
, @DomainTimeout [int] = Null                           
, @ConsiderNull_DomainTimeout bit = 0
, @ScriptEngineTimeout [int] = Null                     
, @ConsiderNull_ScriptEngineTimeout bit = 0
, @MaxScriptEngines [int] = Null                        
, @ConsiderNull_MaxScriptEngines bit = 0
, @ConsiderNull_TargetMachine bit = 0
, @ApplyStoreSacl [bit] = Null                          
, @ConsiderNull_ApplyStoreSacl bit = 0
, @GenerateAudits [bit] = Null                          
, @ConsiderNull_GenerateAudits bit = 0
, @MajorVersion [int] = Null                            
, @ConsiderNull_MajorVersion bit = 0
, @MinorVersion [int] = Null                            
, @ConsiderNull_MinorVersion bit = 0
, @TargetMachine [nvarchar](50) = Null                  
, @Description [nvarchar](1024) = Null                  
, @ApplicationData [ntext] = Null                       
)

As

DECLARE @RowCount INT, @Error INT
DECLARE @ObjectName nvarchar(512)
DECLARE @ObjectGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0
Set @Return = 0

Set NoCount On


    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

Set @Return = 0 -- no error

If @ConsiderNull_Description Is Null
    Set @ConsiderNull_Description = 0

If @ConsiderNull_ApplicationData Is Null
    Set @ConsiderNull_ApplicationData = 0

If @ConsiderNull_DomainTimeout Is Null
    Set @ConsiderNull_DomainTimeout = 0

If @ConsiderNull_ScriptEngineTimeout Is Null
    Set @ConsiderNull_ScriptEngineTimeout = 0

If @ConsiderNull_MaxScriptEngines Is Null
    Set @ConsiderNull_MaxScriptEngines = 0

If @ConsiderNull_TargetMachine Is Null
    Set @ConsiderNull_TargetMachine = 0

If @ConsiderNull_ApplyStoreSacl Is Null
    Set @ConsiderNull_ApplyStoreSacl = 0

If @ConsiderNull_GenerateAudits Is Null
    Set @ConsiderNull_GenerateAudits = 0

If @ConsiderNull_MajorVersion Is Null
    Set @ConsiderNull_MajorVersion = 0

If @ConsiderNull_MinorVersion Is Null
    Set @ConsiderNull_MinorVersion = 0

Update [dbo].[AzMan_AzAuthorizationStore]

Set
    [Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
    ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
    ,[DomainTimeout] = Case @ConsiderNull_DomainTimeout When 0 Then IsNull(@DomainTimeout, [DomainTimeout]) When 1 Then @DomainTimeout End
    ,[ScriptEngineTimeout] = Case @ConsiderNull_ScriptEngineTimeout When 0 Then IsNull(@ScriptEngineTimeout, [ScriptEngineTimeout]) When 1 Then @ScriptEngineTimeout End
    ,[MaxScriptEngines] = Case @ConsiderNull_MaxScriptEngines When 0 Then IsNull(@MaxScriptEngines, [MaxScriptEngines]) When 1 Then @MaxScriptEngines End
    ,[TargetMachine] = Case @ConsiderNull_TargetMachine When 0 Then IsNull(@TargetMachine, [TargetMachine]) When 1 Then @TargetMachine End
    ,[ApplyStoreSacl] = Case @ConsiderNull_ApplyStoreSacl When 0 Then IsNull(@ApplyStoreSacl, [ApplyStoreSacl]) When 1 Then @ApplyStoreSacl End
    ,[GenerateAudits] = Case @ConsiderNull_GenerateAudits When 0 Then IsNull(@GenerateAudits, [GenerateAudits]) When 1 Then @GenerateAudits End
    ,[MajorVersion] = Case @ConsiderNull_MajorVersion When 0 Then IsNull(@MajorVersion, [MajorVersion]) When 1 Then @MajorVersion End
    ,[MinorVersion] = Case @ConsiderNull_MinorVersion When 0 Then IsNull(@MinorVersion, [MinorVersion]) When 1 Then @MinorVersion End

Where
         ([ID] = @ID) 
         

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        Set @Return = @Error
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ObjectName=store.Name, @ObjectGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
                WHERE store.ID = @ID
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    0,  -- 0 for store
                    @ObjectName,
                    @ObjectGuid,
                    N'The shallow properties of the store may have been modified'
        END
Done:
Set NoCount Off

Return(@Return)


GO

Create Procedure [AzMan_SPU_AzScope]

-- Update an existing record in [AzMan_AzScope] table

(
  @Return [int] output
,  @ID [int]                                    
, @AppId [int]              
, @ConsiderNull_Description bit = 0
, @ConsiderNull_ApplicationData bit = 0
, @NameHash [Binary] (32) = Null
, @Description [nvarchar](1024) = Null      
, @Name [ntext] = Null             
, @ApplicationData [ntext] = Null           

)

As
    Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @ObjectGuid uniqueidentifier
    DECLARE @iScopeNameLen int
    Declare @AccessAtObjType [tinyint]    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 4, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
    -- Only store or app admin can modify property of the scope object
    if ( (@AccessAtObjType <> 0) and  (@AccessAtObjType <> 1) )
    begin
        Set @Return = -5 
        goto Done
    end

    Set @Return = 0 

    If @ConsiderNull_Description Is Null
        Set @ConsiderNull_Description = 0

    If @ConsiderNull_ApplicationData Is Null
        Set @ConsiderNull_ApplicationData = 0

    if @Name Is NOT NULL 
    Begin
        Exec AzMan_SP_Check_Dup_Scope @Return output, @AppId, @ID, @NameHash
    End
    
    if @Return = 0 
    Begin               
        set @iScopeNameLen = DATALENGTH(@Name)
        
            Update [dbo].[AzMan_AzScope]
            Set
                 [Name] = IsNull(@Name, [Name]) 
                ,[NameHash] = IsNull(@NameHash, [NameHash]) 
                ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
                ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
            Where
                 ([ID] = @ID) 
                 
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount <> 1
            Begin
                Set @Return = @Error
            End

    End              
    
    IF @SaclIsOn = 1
        BEGIN
            -- get info for auditing
            SELECT @ObjectGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
                WHERE scope.ID = @ID

            -- TODO Should we truncate the name for scopes?        
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    4,  -- 0 for scope
                    @Name,
                    @ObjectGuid,
                    N'The shallow properties of the scope may have been modified'
        END
Done:        
    Set NoCount Off

    Return(@Return)

GO

Create Procedure [AzMan_SPU_AzOperation]

-- Update an existing record in [AzMan_AzOperation] table

(
  @Return [int] output
, @ID [int]     
, @AppId [int]                          
, @ConsiderNull_Description bit = 0
, @ConsiderNull_ApplicationData bit = 0
, @OperationID [int] = Null                 
, @ConsiderNull_OperationID bit = 0
, @Name [nvarchar](64) = Null               
, @Description [nvarchar](1024) = Null      
, @ApplicationData [ntext] = Null           
)

As
    Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @ObjectGuid uniqueidentifier
    Declare @AccessAtObjType [tinyint]
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    Set @Return = 0 
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End 

    
    If @ConsiderNull_Description Is Null
        Set @ConsiderNull_Description = 0

    If @ConsiderNull_ApplicationData Is Null
        Set @ConsiderNull_ApplicationData = 0

    If @ConsiderNull_OperationID Is Null
        Set @ConsiderNull_OperationID = 0
    
    If @Name Is Not NULL
    Begin   
        Exec AzMan_SP_Check_Dup_Operation @Return output, @AppId, @ID, @Name
    End
    
    if @Return = 0  
    Begin   
        Update [dbo].[AzMan_AzOperation]
            Set
                [Name] = IsNull(@Name, [Name]) 
                ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
                ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End
                ,[OperationID] = Case @ConsiderNull_OperationID When 0 Then IsNull(@OperationID, [OperationID]) When 1 Then @OperationID End

            Where
                       ([ID] = @ID)
                     
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        If @RowCount <> 1
        Begin
            Set @Return = @Error
        End
                 
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ObjectGuid = op.ObjectGuid FROM [dbo].[AzMan_AzOperation] op
                WHERE op.ID = @ID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    2,  -- 2 for operation
                    @Name,
                    @ObjectGuid,
                    N'The shallow properties of the operation may have been modified'
        END
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPU_AzApplicationGroup]

-- Update an existing record in [AzMan_AzApplicationGroup] table

(
  @Return [int] output
, @ID [int] 
, @ParentType [tinyint]
, @ParentID   [int]
, @GroupType [tinyint] = Null 
, @ConsiderNull_GroupType bit = 0
, @ConsiderNull_GroupDescription bit = 0
, @Name [nvarchar](64) = Null 
, @Description [nvarchar](1024) = Null 
)

As

DECLARE @RowCount INT, @Error INT
DECLARE @ObjectGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0
Set @Return = 0

Set NoCount On

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
If @ConsiderNull_GroupType Is Null
    Set @ConsiderNull_GroupType = 0
    
    if @Name IS NOT NULL    
    Begin
        Exec AzMan_SP_Check_Dup_Group @Return output, @ParentID, @ParentType, @ID, @Name
    End     
    
    if @Return = 0
    Begin

        Update [dbo].[AzMan_AzApplicationGroup]

        Set
            [Name] = IsNull(@Name, [Name]) 
            ,[GroupType] = 
                Case @ConsiderNull_GroupType 
                    When 0 Then IsNull(@GroupType, [GroupType]) 
                    When 1 Then @GroupType 
                End
            ,[Description] = 
                Case @ConsiderNull_GroupDescription 
                    When 0 Then IsNull(@Description, [Description]) 
                    When 1 Then @Description 
                End
        Where
                 ([ID] = @ID)
                 
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount <> 1
            Begin
                Set @Return = @Error
            End
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ObjectGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                WHERE appGroup.ID = @ID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    5,  -- 5 for application group
                    @Name,
                    @ObjectGuid,
                    N'The shallow properties of the application group may have been modified'
        END
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPU_AzTask]

-- Update an existing record in  table

(
  @Return [int] output
, @ID [int] 
, @ParentID   [int]
, @ParentType [tinyint]
, @ConsiderNull_Description bit = 0
, @IsRoleDefinition [bit] = Null 
, @ConsiderNull_IsRoleDefinition bit = NULL
, @ConsiderNull_ApplicationData bit = NULL
, @Name [nvarchar](64) = Null 
, @Description [nvarchar](1024) = Null 
, @ApplicationData [ntext] = Null           
)

As
    DECLARE @ObjectGuid uniqueidentifier
    Set NoCount On
    
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    Set @Return = 0

    If @ConsiderNull_Description Is Null
        Set @ConsiderNull_Description = 0

    if @ConsiderNull_IsRoleDefinition is NULL
        Set @ConsiderNull_IsRoleDefinition = 0
        
    If @ConsiderNull_ApplicationData Is Null
        Set @ConsiderNull_ApplicationData = 0

    if @Name Is Not NULL
    Begin
        Exec AzMan_SP_Check_Dup_Task @Return output, @ParentID, @ParentType, @ID, @Name
    End     
    
    if @Return = 0      
    Begin 
        Update [dbo].[AzMan_AzTask]

        Set
             [Name] = IsNull(@Name, [Name]) 
            ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
            ,[IsRoleDefinition] = Case @ConsiderNull_IsRoleDefinition When 0 Then IsNull(@IsRoleDefinition, [IsRoleDefinition]) When 1 Then @IsRoleDefinition End
            ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End

        Where
                 ([ID] = @ID)
                 
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        If @RowCount <> 1
        Begin
            Set @Return = @Error
        End
                 
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ObjectGuid = task.ObjectGuid FROM [dbo].[AzMan_AzTask] task
                WHERE task.ID = @ID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    3,  -- 3 for task
                    @Name,
                    @ObjectGuid,
                    N'The shallow properties of the task may have been modified'
        END
Done:
    Set NoCount Off

    Return(@Return)
    
GO

Create Procedure [AzMan_SPU_AzRoleAssignment]

-- Update an existing record in the table

(
  @Return [int] output
, @ID [int] 
, @ParentID   [int]
, @ParentType [tinyint]
, @ConsiderNull_Description bit = 0
, @ConsiderNull_ApplicationData bit = NULL
, @Name [nvarchar](64) = Null 
, @Description [nvarchar](1024) = Null 
, @ApplicationData [ntext] = Null
)

As

Set NoCount On

DECLARE @RowCount INT, @Error INT
DECLARE @ObjectGuid uniqueidentifier
Declare @AccessAtObjType [tinyint]
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    Set @Return = 0

    If @ConsiderNull_Description Is Null
        Set @ConsiderNull_Description = 0
        
    If @ConsiderNull_ApplicationData Is Null
        Set @ConsiderNull_ApplicationData = 0
        

    IF @Name Is Not NULL
    Begin
            Exec AzMan_SP_Check_Dup_RoleAssignment @Return output, @ParentID, @ParentType, @ID, @Name
    End

    if @Return = 0
    Begin
        Update [dbo].[AzMan_AzRoleAssignment]

        Set
             [Name] = IsNull(@Name, [Name]) 
            ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End
            ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End            
        Where
                 ([ID] = @ID)
                 
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        If @RowCount <> 1
        Begin
            Set @Return = @Error
        End
                 
    End              
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ObjectGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
                WHERE role.ID = @ID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    6,  -- 6 for role
                    @Name,
                    @ObjectGuid,
                    N'The shallow properties of the role assignment may have been modified'
        END
Done:
Set NoCount Off

Return(@Return)

GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SPIU_AzApplicationGroup_LDAPQuery' and type = 'P')
    DROP PROCEDURE AzMan_SPIU_AzApplicationGroup_LDAPQuery
GO

Create Procedure [AzMan_SPIU_AzApplicationGroup_LDAPQuery]

-- Inserts or updates a record in [AzMan_LDAPQuery] table
(
  @Return [int] output
, @GroupId [int] = Null     -- ID Of Application Group
, @ConsiderNull_LdapQuery bit = 0
, @LdapQuery [ntext] = Null -- LDAP Query
)

As

Set NoCount On

DECLARE @RowCount INT, @Error INT
DECLARE @Name nvarchar(512)
DECLARE @ID [int] 
DECLARE @ObjectGuid uniqueidentifier
Declare @ExistingLdapQueryID [int]
Declare @AccessAtObjType [tinyint]
Set @ExistingLdapQueryID = Null
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0
    
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

Set @Return = 0

Select @ExistingLdapQueryID = [LdapQueryID] From [dbo].[AzMan_AzApplicationGroup] Where [ID] = @GroupId  
SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

if @Error=0 
Begin 
  if @RowCount = 0
  Begin
  -- Parent Group was not found
  Set @Return = 1
  Return(1)
  End
End
else
Begin
  Return @Error
End

If @ExistingLdapQueryID Is Null
    Begin
        Begin
    
            Insert Into [dbo].[AzMan_LDAPQuery]
            (
                  [GroupId]
                , [LdapQuery]
            )
    
            Values
            (
                  @GroupId
                , @LdapQuery
            )
            
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount = 1
            Begin

                Set @ID = Cast(SCOPE_IDENTITY() As [int])
                
                -- Update the AzApplication Groups with the new ID
                if @ID <> 0
                Begin
                    Update [dbo].[AzMan_AzApplicationGroup] 
                        Set [LdapQueryID] = @ID
                    where [ID] = @GroupId                   
                End             
            End
            Else
            Begin
                Set @Return = @Error
            End
        End
    End
Else
    Begin

        If @ConsiderNull_LdapQuery Is Null
            Set @ConsiderNull_LdapQuery = 0

        Update [dbo].[AzMan_LDAPQuery]
        Set
          [GroupId] = @GroupId
        ,[LdapQuery] = Case @ConsiderNull_LdapQuery When 0 Then IsNull(@LdapQuery, [LdapQuery]) When 1 Then @LdapQuery End
        Where
            [ID] = @ExistingLdapQueryID

        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        
        if @RowCount <> 1 
            Set @ID = @ExistingLdapQueryID
        else
        Begin
            Set @Return = @Error
        End
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @Name=appGroup.Name, @ObjectGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                WHERE appGroup.ID = @GroupId
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    5,  -- 5 for group
                    @Name,
                    @ObjectGuid,
                    N'The LDAP query of the application may have been modified'
        END
Done:
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPIU_Bizrule]
(
  @Return [int] output,
  @ParentId [int] 
, @ParentType [tinyint] 
, @BizRuleImportedPath [nvarchar](512) = Null   -- for [AzMan_BizRule].[BizRuleImportedPath] column
, @ConsiderNull_BizRuleImportedPath bit = 0
, @BizRule [ntext] = Null                       -- for [AzMan_BizRule].[BizRule] column
, @ConsiderNull_BizRule bit = 0
, @BizRuleLanguage [nvarchar](64) = Null        -- for [AzMan_BizRule].[BizRuleLanguage] column
, @ConsiderNull_BizRuleLanguage bit = 0
)

As
DECLARE @RowCount INT, @Error INT
DECLARE @parentName nvarchar(512)
DECLARE @parentGuid uniqueidentifier
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set @Return = 0

Set NoCount On

Declare @ExistingBizruleID [int]
Declare @AccessAtObjType [tinyint]
Set @ExistingBizruleID = Null

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End


Set @Return = 0

if @ParentType = 3 -- task
Begin
    Select @ExistingBizruleID = [BizruleID] 
    From [dbo].[AzMan_BizRule_To_Task]
    Where [TaskID] = @ParentId  
End

else if @ParentType = 5 -- group
Begin
    Select @ExistingBizruleID = [BizruleID] 
    From [dbo].[AzMan_BizRule_To_Group]
    Where [GroupID] = @ParentId  
End
    
SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

If @ExistingBizruleID Is Null or @ExistingBizruleID = 0 
    Begin
        Begin
    
            Insert Into [dbo].[AzMan_BizRule]
            (
                  [ParentId]
                , [ParentType]
                , [BizRuleImportedPath] 
                , [BizRule] 
                , [BizRuleLanguage]
            )
    
            Values
            (
                  @ParentId
                 ,@ParentType
                 ,@BizRuleImportedPath 
                 ,@BizRule 
                 ,@BizRuleLanguage
            )

            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            If @RowCount = 1
            Begin
                Set @ExistingBizruleID = Cast(SCOPE_IDENTITY() As [int])
                
                -- Update the AzApplication Groups or Task with the new ID
            
                if @ExistingBizruleID <> 0
                
                    if @ParentType = 3 -- task
                    Begin
                        insert [dbo].[AzMan_BizRule_To_Task] 
                        (
                            [TaskID] ,
                            [BizRuleID]
                        )
                        Values
                        (
                            @ParentId ,
                            @ExistingBizruleID
                        )
                    End

                    else if @ParentType = 5 -- group
                    Begin
                        insert [dbo].[AzMan_BizRule_To_Group] 
                        (
                            [GroupID] ,
                            [BizRuleID]
                        )
                        Values
                        (
                            @ParentId ,
                            @ExistingBizruleID
                        )
                    End
            End         
            Else
            Begin
                Set @Return = @Error
            End
                    
        End
    End
Else
    Begin

        If @ConsiderNull_BizRuleImportedPath Is Null
            set @ConsiderNull_BizRuleImportedPath = 0 
            
        If @ConsiderNull_BizRule Is Null
            set @ConsiderNull_BizRule = 0
            
        If @ConsiderNull_BizRuleLanguage Is Null
            set @ConsiderNull_BizRuleLanguage = 0 

        Update [dbo].[AzMan_BizRule]
        Set
          [ParentId]   = @ParentId
        , [ParentType] = @ParentType
        , [BizRuleImportedPath] = Case @ConsiderNull_BizRuleImportedPath When 0 Then IsNull(@BizRuleImportedPath, [BizRuleImportedPath]) When 1 Then @BizRuleImportedPath End
        , [BizRule] = Case @ConsiderNull_BizRule When 0 Then IsNull(@BizRule, [BizRule]) When 1 Then @BizRule End
        , [BizRuleLanguage] = Case @ConsiderNull_BizRuleLanguage When 0 Then IsNull(@BizRuleLanguage, [BizRuleLanguage]) When 1 Then @BizRuleLanguage End

        Where
            [ID] = @ExistingBizruleID
            
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
                            
        if @RowCount = 0 
        Begin
            if @Error = 0
            Begin
                Set @Return = -1168 -- Error updating the Record
            End
            Else
            Begin
                Set @Return = @Error 
            End
            
        End
    End
    
    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            -- get info for auditing
            IF @ParentType = 3 -- task
                BEGIN
                    SELECT @parentName=task.Name, @parentGuid = task.ObjectGuid 
                        FROM [dbo].[AzMan_AzTask] task WHERE task.ID = @ParentId
                END
            ELSE IF @ParentType = 5 -- app group
                BEGIN
                    SELECT @parentName=appGroup.Name, @parentGuid = appGroup.ObjectGuid 
                        FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @ParentId
                END
            
            EXEC [AzMan_SP_GenerateGenericAudit]
                    @Return,
                    @ParentType,
                    @parentName,
                    @parentGuid,
                    N'The bizrule of the object may have been modified'
        END
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure dbo.[AzMan_SPIU_AzApplicationGroup_Bizrule]
(
  @Return [int] output
, @GroupId [int] 
, @ConsiderNull_BizRuleImportedPath bit = 0
, @ConsiderNull_BizRule bit = 0
, @ConsiderNull_BizRuleLanguage bit = 0
, @BizRuleLanguage [nvarchar](64) = Null        -- for [AzMan_BizRule].[BizRuleLanguage] column
, @BizRuleImportedPath [nvarchar](512) = Null   -- for [AzMan_BizRule].[BizRuleImportedPath] column
, @BizRule [ntext] = Null                       -- for [AzMan_BizRule].[BizRule] column

)
As

    Set @Return = 0
    exec AzMan_SPIU_Bizrule   @Return output, @GroupId, 5
            , @BizRuleImportedPath 
            , @ConsiderNull_BizRuleImportedPath 
            , @BizRule 
            , @ConsiderNull_BizRule 
            , @BizRuleLanguage 
            , @ConsiderNull_BizRuleLanguage 

Return @Return

Go

Create Procedure dbo.[AzMan_SPIU_AzTask_Bizrule]
(
  @Return [int] output
, @TaskId [int] 
, @ConsiderNull_BizRuleImportedPath bit = 0
, @ConsiderNull_BizRule bit = 0
, @ConsiderNull_BizRuleLanguage bit = 0
, @BizRuleLanguage [nvarchar](64) = Null        -- for [AzMan_BizRule].[BizRuleLanguage] column
, @BizRuleImportedPath [nvarchar](512) = Null   -- for [AzMan_BizRule].[BizRuleImportedPath] column
, @BizRule [ntext] = Null                       -- for [AzMan_BizRule].[BizRule] column

)
As

Set @Return = 0
    exec AzMan_SPIU_Bizrule   @Return output, @TaskId,  3
            , @BizRuleImportedPath 
            , @ConsiderNull_BizRuleImportedPath 
            , @BizRule 
            , @ConsiderNull_BizRule 
            , @BizRuleLanguage 
            , @ConsiderNull_BizRuleLanguage 

Return @Return

Go


Create Procedure [AzMan_SPI_AzApplicationGroup_Single_SidMember]

(
  @Return [int] output,
  @GroupId [int]            -- ID Of Application Group
, @IsMember [bit]           = 0 
, @SidMember varbinary(85)
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @parentName nvarchar(512)
DECLARE @parentGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Group_SIDMember] 
        (MemberSID, Member, GroupID) 
    VALUES 
        (@SidMember, @IsMember, @GroupId)
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 --Generic Error
        End 
    End
    
    -- get the info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @parentName = appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                WHERE appGroup.ID = @GroupId

            -- generate an audit
            IF @IsMember = 1
                EXEC [AzMan_SP_GenerateMemberAudit]
                        @Return,
                        4,  -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
                        5,  -- 5 for group
                        @parentName,
                        @parentGuid,
                        N'',
                        @SidMember,
                        1,  -- 1 for member
                        N'' -- no other info
            ELSE
                EXEC [AzMan_SP_GenerateMemberAudit]
                        @Return,
                        4,  -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
                        5,  -- 5 for group
                        @parentName,
                        @parentGuid,
                        N'',
                        @SidMember,
                        0,  -- 0 for non-member
                        N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzApplicationGroup_Single_SidMember]

(
  @Return [int] output,
  @GroupId [int]            -- ID Of Application Group
, @IsMember [bit] = 1 
, @SidMember varbinary(85)
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @parentName nvarchar(512)
DECLARE @parentGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    Delete From [AzMan_Group_SIDMember] 
    where MemberSID    = @SidMember and
          Member   = @IsMember and
          GroupID = @GroupId

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --REcord not found
        End 
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @parentName = appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                WHERE appGroup.ID = @GroupId

            -- generate an audit
            IF @IsMember = 1
                EXEC [AzMan_SP_GenerateMemberAudit]
                        @Return,
                        5,  -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
                        5,  -- 5 for group
                        @parentName,
                        @parentGuid,
                        N'',
                        @SidMember,
                        1,  -- 1 for member
                        N'' -- no other info
            ELSE
                EXEC [AzMan_SP_GenerateMemberAudit]
                        @Return,
                        5,  -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
                        5,  -- 5 for group
                        @parentName,
                        @parentGuid,
                        N'',
                        @SidMember,
                        0,  -- 0 for non-member
                        N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal]
(
  @Return [int] output
, @GroupId [int]            -- ID Of Application Group
, @IsMember [bit] = 1
, @SidMembers varbinary (4000)
)
As
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set NoCount On

-- SidMembers are aggregated binary data in the following format:
--   The first 4 bytes is a delete/add flag (0/1); the following 4 bytes is the size of the SID, 
--   followed by the actual SID. The over-usage of these pieces of data is for ease of parsing
--   Using string to represent such encoding, the following example which encodes 3 SIDs 
--   of length 24, 36, and 48 in turn, and the second one is a delete
--   00010024NNNNNNNNN00000036NNNNNNNNNN00010048NNNNNNNNNNNNNN
-- Insert each one of them 

    Declare @AccessAtObjType [tinyint]
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

DECLARE @DataLength int
DECLARE @SidLength int
DECLARE @SidMember varbinary(85)
DECLARE @Pos int
DECLARE @isAdd int
SET @DataLength = DATALENGTH(@SidMembers)

Set @Return = 0
Set @Pos = 1

WHILE @DataLength - @Pos > 8
    BEGIN
        SET @isAdd = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
        SET @Pos = @Pos + 1
        
        SET @SidLength = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
        SET @Pos = @Pos + 1

        -- make sure that we the SidLength is not lying to us!
        IF @SidLength >= 12 AND @SidLength < 85 AND @DataLength - @Pos >= @SidLength - 1
            BEGIN
                SET @SidMember = CAST(SUBSTRING(@SidMembers, @Pos, @SidLength) AS varbinary)
                SET @Pos = @Pos + @SidLength        

                -- if NNNN=0, then it means to delete
                IF @isAdd <> 0
                    BEGIN
                        Exec AzMan_SPI_AzApplicationGroup_Single_SidMember @Return output, @GroupId, @IsMember, @SidMember, @SaclIsOn
                        IF @Return <> 0
                            Break
                    End 
                ELSE
                    BEGIN
                        Exec AzMan_SPD_AzApplicationGroup_Single_SidMember @Return output, @GroupId, @IsMember ,@SidMember, @SaclIsOn
                        IF @Return <> 0
                            Break
                    End
            END
        ELSE
            SET @Pos = @DataLength
    END

Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_SidMembers]

(
  @Return [int] output
, @GroupId [int]            -- ID Of Application Group
, @SidMembers varbinary (4000)
)
As
    Exec AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal @Return output, @GroupId, 1 , @SidMembers
    Return(@Return)
go


Create Procedure AzMan_SPI_AzApplicationGroup_Multi_SidNonMembers

(
  @Return [int] output ,    
  @GroupId [int]            -- ID Of Application Group
, @SidMembers varbinary (4000)
)
As
    Exec AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal @Return output, @GroupId, 0 , @SidMembers
    Return(@Return)
go


Create Procedure [AzMan_SPI_AzApplicationGroup_Single_AppMember]
(
  @Return [int] output,
  @GroupId [int]            -- ID Of Application Group
, @ChildID [int] 
, @IsMember [bit]           = 1 
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @groupName nvarchar(512)
DECLARE @groupGuid uniqueidentifier
DECLARE @refGroupName nvarchar(512)
DECLARE @refGroupGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Group_AppMember] 
        (ChildID, Member, GroupID) 
    VALUES 
        (@ChildID, @IsMember, @GroupId)
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 --Generic Error
        End 
    End
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @groupName = appGroup.Name, @groupGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                WHERE appGroup.ID = @GroupId
            SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
                WHERE refGroup.ID = @ChildID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
                    5,  -- 5 for application group
                    @groupName,
                    @groupGuid,
                    5,  -- 5 for application group
                    @refGroupName,
                    @refGroupGuid,
                    N'' -- no other info
        END
Set NoCount Off

Return @Return

GO

Create Procedure [AzMan_SPD_AzApplicationGroup_Single_AppMember]

(
  @Return [int] output,
  @GroupId [int]            -- ID Of Application Group
, @ChildID [int] 
, @IsMember [bit] = 1 
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @groupName nvarchar(512)
DECLARE @groupGuid uniqueidentifier
DECLARE @refGroupName nvarchar(512)
DECLARE @refGroupGuid uniqueidentifier
Set @Return = 0

Set NoCount On

    Delete From [AzMan_Group_AppMember] 
    where ChildID    = @ChildID and
          Member   = @IsMember and
          GroupID = @GroupId
          
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @groupName = appGroup.Name, @groupGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                WHERE appGroup.ID = @GroupId
            SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
                WHERE refGroup.ID = @ChildID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
                    5,  -- 5 for application group
                    @groupName,
                    @groupGuid,
                    5,  -- 5 for application group
                    @refGroupName,
                    @refGroupGuid,
                    N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal]

(
  @Return [int] output,
  @GroupId [int]            -- ID Of Application Group
, @SepChar [char] (1) = "|"
, @IsMember [bit] = 1 
, @AppMemberIDs [nvarchar] (4000)
)
As
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set NoCount On

-- First parse the SidMembers string
-- Insert each one of them 

    Declare @AccessAtObjType [tinyint]
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End


DECLARE @AppMember varchar(100), @Pos int
DECLARE @iAppMemberID int
DECLARE @equal char
DECLARE @addOrDelete nvarchar(10)
DECLARE @isAdd int
SET @equal = '='


    Set @Return = 0

    SET @AppMemberIDs = LTRIM(RTRIM(@AppMemberIDs))+ @SepChar
    
    SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)

    IF REPLACE(@AppMemberIDs, @SepChar, '') <> ''
    BEGIN
        WHILE @Pos > 0
        BEGIN
            SET @AppMember = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
            Set @iAppMemberID = CAST(@AppMember as int)
            
            -- remove the left part (the id)
            SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
            
            -- now move to the pipe separator
            SET @Pos = CHARINDEX(@SepChar, @AppMemberIDs, 1)
            SET @addOrDelete = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
            
            Set @isAdd = CAST(@addOrDelete as int)
            
            
            IF @iAppMemberID > 0
            BEGIN
                
                -- if NNNN=0, then it means to delete
                IF @isAdd <> 0
                BEGIN
                    Exec AzMan_SPI_AzApplicationGroup_Single_AppMember @Return output, @GroupId, @iAppMemberID , @IsMember, @SaclIsOn

                    if @Return <> 0
                    Begin
                        Break
                    End
                End                 
                else
                BEGIN
                    Exec AzMan_SPD_AzApplicationGroup_Single_AppMember @Return output, @GroupId, @iAppMemberID , @IsMember, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End                 
                
            END
            SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
            SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)
        END
    END 

Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppMembers]

(
  @Return [int] output
, @GroupId [int]            -- ID Of Application Group
, @SepChar [char] (1) = "|"
, @AppMemberIDs [nvarchar] (4000)
)
As

    Exec AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal @Return output, @GroupId, @SepChar, 1 , @AppMemberIDs

    Return(@Return)
go

Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppNonMembers]
(
  @Return [int] output
, @GroupId [int]            -- ID Of Application Group
, @SepChar [char] (1) = "|"
, @AppMemberIDs [nvarchar] (4000)
)
As

    Exec AzMan_SPI_AzApplicationGroup_Multi_AppMembers_internal @Return output, @GroupId, @SepChar, 0 , @AppMemberIDs

    Return(@Return)
go


Create Procedure [AzMan_SPI_AzRoleAssignment_Single_SidMember]
(
  @Return [int] output,
  @RoleId [int]             -- ID Of Role
, @SidMember varbinary (85)
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Role_SIDMember] 
        (MemberSID,  RoleID) 
    VALUES 
        (@SidMember,@RoleId)
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount = 0
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 -- General Error
        End
    End
    
    -- get the info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
                WHERE Role.ID = @RoleId

            -- generate an audit
            EXEC [AzMan_SP_GenerateMemberAudit]
                    @Return,
                    4,  -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    N'',
                    @SidMember,
                    1,  -- 1 for member
                    N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzRoleAssignment_Single_SidMember]
(
  @Return [int] output,
  @RoleId [int]             -- ID Of RoleAssignment
, @SidMember varbinary(85)
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier
DECLARE @userName nvarchar(512)

    Set NoCount On
    Set @Return = 0

    Delete From [AzMan_Role_SIDMember] 
    where MemberSID    = @SidMember and
          RoleID = @RoleId
          
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End
    End
    
    -- get the info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role
                WHERE Role.ID = @RoleId
                
            -- We can't lookup names from SID, but XP can do that
            SET @userName = ''

            -- generate an audit
            EXEC [AzMan_SP_GenerateMemberAudit]
                    @Return,
                    5,  -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    N'',
                    @SidMember,
                    1,  -- 1 for member
                    N'' -- no other info
        END
          
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_SidMembers]
(
  @Return [int] output
, @RoleId [int]             -- ID Of Role Assignment
, @SidMembers varbinary (4000)
)
As
DECLARE @SaclIsOn [bit]
Set @SaclIsOn = 0

Set NoCount On

-- First parse the SidMembers string
-- Insert each one of them 
           
    Declare @AccessAtObjType [tinyint]           
	Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output
	
	-- Require Admin Access
	if @Return <> 1 
	Begin
		if (@Return >= 2)
		Begin
		    Set @Return = -5 
		End
		goto Done
	End
DECLARE @DataLength int
DECLARE @SidLength int
DECLARE @Sid varbinary(85)
DECLARE @Pos int
DECLARE @isAdd int
SET @DataLength = DATALENGTH(@SidMembers)
            
Set @Return = 0
Set @Pos = 1

WHILE @DataLength - @Pos > 8
    BEGIN
        SET @isAdd = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
        SET @Pos = @Pos + 1
		
        SET @SidLength = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int)
        SET @Pos = @Pos + 1
        
        -- make sure that we the SidLength is not lying to us!
        IF @SidLength >= 12 AND @SidLength < 85 AND @DataLength - @Pos >= @SidLength - 1
            BEGIN
                SET @Sid = CAST(SUBSTRING(@SidMembers, @Pos, @SidLength) as varbinary)
                SET @Pos = @Pos + @SidLength		

			    -- if NNNN=0, then it means to delete
                IF @isAdd <> 0
                    BEGIN
                        Exec AzMan_SPI_AzRoleAssignment_Single_SidMember @Return output, @RoleId, @Sid, @SaclIsOn
					    IF @Return <> 0
                            Break
                    End	
				ELSE
				    BEGIN
                        Exec AzMan_SPD_AzRoleAssignment_Single_SidMember @Return output, @RoleId, @Sid, @SaclIsOn
                        IF @Return <> 0
                            Break
                    End
            END
        ELSE
            BEGIN
                SET @Pos = @DataLength
            END
    END

Done:
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzRoleAssignment_Single_AppMember]
(
  @Return [int] output,
  @RoleId [int]             -- ID Of Role Assignment
, @ChildID [int]
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier
DECLARE @refGroupName nvarchar(512)
DECLARE @refGroupGuid uniqueidentifier

Set @Return = 0

Set NoCount On

    INSERT INTO [AzMan_Role_AppMember] 
        (ChildID, RoleID) 
    VALUES 
        (@ChildID, @RoleId)
        
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1 
        End 
    End
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
                WHERE role.ID = @RoleId
            SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
                WHERE refGroup.ID = @ChildID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    2,  -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    5,  -- 5 for application group
                    @refGroupName,
                    @refGroupGuid,
                    N'' -- no other info
        END 
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzRoleAssignment_Single_AppMember]
(
  @Return [int] output,
  @RoleId [int]             -- ID Of Role Assignment
, @ChildID [int]
, @SaclIsOn [bit]
)
As

DECLARE @RowCount INT, @Error INT
DECLARE @roleName nvarchar(512)
DECLARE @roleGuid uniqueidentifier
DECLARE @refGroupName nvarchar(512)
DECLARE @refGroupGuid uniqueidentifier
Set @Return = 0

Set NoCount On

    Delete From [AzMan_Role_AppMember] 
    where ChildID    = @ChildID and
          RoleID = @RoleId
          
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role
                WHERE role.ID = @RoleId
            SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup
                WHERE refGroup.ID = @ChildID
                
            -- generate an audit
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    3,  -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE
                    6,  -- 6 for role
                    @roleName,
                    @roleGuid,
                    5,  -- 5 for application group
                    @refGroupName,
                    @refGroupGuid,
                    N'' -- no other info
        END
        
Set NoCount Off

Return(@Return)

GO


Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_AppMembers]
(
  @Return [int] output
, @RoleId [int]             -- ID Of Role Assignment
, @SepChar [char] (1) = "|"
, @AppMemberIDs [nvarchar] (4000)
)
As

    Declare @AccessAtObjType [tinyint]
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0

    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output
    
    -- Require Admin Access
    if @Return <> 1 
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End


Set @Return = 0
DECLARE @equal char
DECLARE @addOrDelete nvarchar(10)
DECLARE @isAdd int
SET @equal = '='

Set NoCount On

-- First parse the SidMembers string
-- Insert each one of them 

DECLARE @AppMember varchar(100), @Pos int
DECLARE @iAppMemberID int


    SET @AppMemberIDs = LTRIM(RTRIM(@AppMemberIDs))+ @SepChar
    
    SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)

    IF REPLACE(@AppMemberIDs, @SepChar, '') <> ''
    BEGIN
        WHILE @Pos > 0
        BEGIN
            SET @AppMember = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
            Set @iAppMemberID = CAST(@AppMember as int)
            
            -- remove the left part (the id)
            SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
            
            -- now move to the pipe separator
            SET @Pos = CHARINDEX(@SepChar, @AppMemberIDs, 1)
            SET @addOrDelete = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1)))
            
            Set @isAdd = CAST(@addOrDelete as int)
            
            IF @iAppMemberID > 0
            BEGIN
                IF @isAdd <> 0
                BEGIN
                    Exec AzMan_SPI_AzRoleAssignment_Single_AppMember @Return output, @RoleId, @iAppMemberID, @SaclIsOn
                    if @Return <> 0
                    Begin
                        Break
                    End
                End
                ELSE
                BEGIN
                    Exec AzMan_SPD_AzRoleAssignment_Single_AppMember @Return output, @RoleId, @iAppMemberID, @SaclIsOn 
                    if @Return <> 0
                    Begin
                        Break
                    End
                End
            END
            SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos)
            SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1)
        END
    END 

Done:
Set NoCount Off

Return(@Return)

GO


Create Procedure [spDrop_AzMan_Table]
as
    drop table [AzMan_Role_To_Operation_Link]
    drop table [AzMan_Role_To_Task_Link]
    drop table [AzMan_Task_To_Task_Link]
    drop table [AzMan_Task_To_Operation_Link]
    drop table [AzMan_AzTask]
    drop table [AzMan_AzOperation]
    drop table [AzMan_LDAPQuery]
    drop table [AzMan_BizRule]
    drop table [AzMan_Group_SIDMember]
    drop table [AzMan_Group_AppMember]
    drop table [AzMan_AzApplicationGroup]
    drop table [AzMan_Role_SIDMember]
    drop table [AzMan_Role_AppMember]
    drop table [AzMan_AzRoleAssignment]
    drop table [AzMan_AzScope_Name] 
    drop table [AzMan_AzScope]
    drop table [AzMan_AzApplication]
    drop table [AzMan_AzAuthorizationStore]
Return(0)
GO 

----------------------------Select queries----------------------------------------------


Create Procedure [AzMan_SPS_Get_AzAuthorizationStoreByName]
-- Retrieve specific records from the [AzMan_AzAuthorizationStore] table depending on the input parameters you supply.
(
    @Return [int] output,
    @Name [nvarchar] (512)
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    DEclare @ID INT

    select @ID=ID from [AzMan_AzAuthorizationStore] where name = @Name

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

    if @Error <> 0 
    Begin
        Set @Return = @Error
    End 
    else
    Begin 
        If @RowCount = 0
        Begin
            Set @Return = -1168 --Record not found
        End
    End     

    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 0, @SaclIsOn output

    if @Return >= 1 
    Begin
            
        Select
             [ID]
            ,[DomainTimeout]
            ,[ScriptEngineTimeout]
            ,[MaxScriptEngines]
            ,[ApplyStoreSacl]
            ,[GenerateAudits]
            ,[MajorVersion]
            ,[MinorVersion]
            ,[ObjectGuid]            
            ,[TargetMachine]            
            ,[Description]
            ,[ApplicationData]
            --,[ChildUpdateTimeStamp]
        From [AzMan_AzAuthorizationStore]
        where Name = @Name 
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
        
    End     
End

Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzApplications]
(
     @Return [int] output,
     @StoreID int
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@StoreID, 0, 0, @SaclIsOn output
    
    if @Return <= 0
        goto Done
    Else if @Return = 1 or @Return = 2
    Begin
        Select
        [ID], 
        [ObjectGuid] ,
        IsNull([ApplyStoreSacl], 0),
        IsNull([GenerateAudits], 0), 
        IsNull([AuthzInterfaceClsId], 0), 
        IsNull([ApplicationVersion], N''),
        [Name],
        IsNull([Description], N''),                
        [ApplicationData]
        --[ChildUpdateTimeStamp] 
        From [AzMan_AzApplication]
        where StoreID = @StoreID  

        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End
    Else if @Return = 3 -- Delegated user
    Begin

        -- Get all the child app where the current user has access
        Select
            [ID], 
            [ObjectGuid] ,
            [ApplyStoreSacl],
            [GenerateAudits], 
            [AuthzInterfaceClsId], 
            [ApplicationVersion],
            [Name],            
            [Description],
            [ApplicationData]
            --[ChildUpdateTimeStamp] 
        From [AzMan_AzApplication]
        where StoreID = @StoreID  and
            ID in ( 
                select ObjectID from [dbo].[Azman_SQLRole]
                where [dbo].[Azman_SQLRole].[ObjectType] = 1 and 
                        is_member([dbo].[Azman_SQLRole].[SQLRoleName]) = 1 ) 
    
    
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    
    End 
        
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Get_AzApplication]
(
     @Return [int] output,
     @ID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 1, 0, @SaclIsOn output

    if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
            [StoreId],
            [ApplyStoreSacl],
            [GenerateAudits], 
            [AuthzInterfaceClsId], 
            [ObjectGuid],
            [ApplicationVersion],
            [Name],
            [Description],
            [ApplicationData]
        From [AzMan_AzApplication]
        where ID = @ID 
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End     
        
End

Return(@Return)

GO


Create Procedure [AzMan_SPS_Enum_AzScope]
(
     @Return [int] output,
     @AppID int
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the App level
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppID, 1, 0, @SaclIsOn output
    
    if @Return <= 0
        goto Done
    Else if @Return = 1 or @Return = 2
    Begin
        Select
            [ID], 
            [NameLen],
            IsNull([HasSpecificUsers], 0) AS HasSpecificUsers,
            [NameHash],
            [ObjectGuid] ,
            [Description],
            [Name],
            [ApplicationData]
        From [AzMan_AzScope]
        where AppID = @AppID  
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    end
    Else if @Return = 3 -- Delegated user
    Begin
    
        Select
            [ID], 
            [NameLen],
            IsNull([HasSpecificUsers], 0) AS HasSpecificUsers,
            [NameHash],
            [ObjectGuid] ,
            [Description],
            [Name],            
            [ApplicationData]
        From [AzMan_AzScope]
        where AppID = @AppID  and 
            ID in ( 
                select ObjectID from [dbo].[Azman_SQLRole]
                where [dbo].[Azman_SQLRole].[ObjectType] = 4 and 
                        is_member([dbo].[Azman_SQLRole].[SQLRoleName]) = 1 ) 
    
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    End
    
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzApplicationGroup]
(
     @Return   int output,
     @ParentID int
    ,@ParentType tinyint
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the parent
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output
    
    if @Return <= 0
        goto Done
    -- The user either has admin, reader or delegated uset at the parent
    -- So he can see the groups
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
    
        if @ParentType = 0
        Begin
            Select
                [ID], 
                [GroupType]  ,
                [ObjectGuid] ,
                [Name]       ,

                ISNULL ( [Description] , N'' ) 
            From [AzMan_AzApplicationGroup] 
            where (StoreID = @ParentID  ) and ParentType = @ParentType

        End
        else if @ParentType = 1
        Begin
            Select
                [ID], 
                [GroupType], 
                [ObjectGuid],
                [Name],
                ISNULL ( [Description] , N'' ) 
            From [AzMan_AzApplicationGroup] 
            where (AppID = @ParentID  ) and ParentType = @ParentType

        End         
        else if @ParentType = 4
        Begin
            Select
                [ID], 
                [GroupType],
                [ObjectGuid],
                [Name],
                ISNULL ( [Description] , N'' ) 
            From [AzMan_AzApplicationGroup] 
            where (ScopeID = @ParentID  ) and ParentType = @ParentType
        End         
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     

End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzTask]
(
     @Return   int output,  
     @ParentID int
    ,@ParentType tinyint
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the parent
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output
    
    if @Return <= 0
        goto Done
    -- The user either has admin, reader or delegated uset at the parent
    -- So he can see the Task
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        if @ParentType = 1
        Begin
            Select
                [ID], 
                [IsRoleDefinition],                
                [ObjectGuid] ,
                [Name]       ,
                [Description],
                [ApplicationData]
            From [AzMan_AzTask] 
            where AppID = @ParentID  
        End else if @ParentType = 4
        Begin
            Select
                [ID], 
                [IsRoleDefinition],                
                [ObjectGuid] ,
                [Name]       ,
                [Description],
                [ApplicationData]
            From [AzMan_AzTask] 
            where ScopeID = @ParentID  
        End else 
        Begin
            Set @Return = -1
            goto Done
        End
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzTask_Operations]
(
     @Return   int output,
     @TaskID int
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the Task
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 0, @SaclIsOn output
    
    if @Return <= 0
        goto Done
    
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see the task
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
        Select
            [ObjectGuid]
        From [AzMan_Task_To_Operation_Link] INNER JOIN AzMan_AzOperation ON [AzMan_Task_To_Operation_Link].[OperationID] = AzMan_AzOperation.ID
        where TaskID = @TaskID  
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzTask_Tasks]
(
     @Return   int output,
     @TaskID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the Task
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 0, @SaclIsOn output
    
    if @Return <= 0
        goto Done
    
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see the task
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
            [ObjectGuid]
        From [AzMan_Task_To_Task_Link] INNER JOIN AzMan_AzTask ON [AzMan_Task_To_Task_Link].[ChildID] = AzMan_AzTask.ID
        where [AzMan_Task_To_Task_Link].[TaskID] = @TaskID  
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     
End

Done:
Return(@Return)

GO


Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_Tasks]
(
     @Return   int output,
     @RoleID int
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the Role 
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    
    -- The user either has admin, reader or delegated uset at the parent
    -- So he can see the Role
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
        [ObjectGuid]
        From [AzMan_Role_To_Task_Link] INNER JOIN AzMan_AzTask ON [TaskID] = AzMan_AzTask.ID
        where [RoleID]  = @RoleID  
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     

End

Done:
Return (@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_Operations]
(
     @Return   int output,
     @RoleID int
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the Role 
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see the role
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
        Select
            [ObjectGuid]
        From [AzMan_Role_To_Operation_Link] 
        INNER JOIN AzMan_AzOperation ON [AzMan_Role_To_Operation_Link].OperationID = AzMan_AzOperation.ID
        where [RoleID]  = @RoleID  
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     
End

Done:
Return(@Return)


GO

Create Procedure [AzMan_SPS_Enum_AzRoleAssignment]
(
     @Return   int output,
     @ParentID int
    ,@ParentType tinyint
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the parent
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
        if @ParentType = 1
        Begin
            Select
                [ID], 
                [ObjectGuid] ,
                [Name],
                [Description],
                [ApplicationData]
            From [AzMan_AzRoleAssignment] 
            where AppID = @ParentID  and ParentType = @ParentType
        End
        else if @ParentType = 4
        Begin
            Select
                [ID], 
                [ObjectGuid] ,
                [Name],
                [Description],
                [ApplicationData]
            From [AzMan_AzRoleAssignment] 
            where ScopeID = @ParentID  and ParentType = @ParentType
        End 
        else
        Begin
            Set @Return = -1
            goto Done
        End
                
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    End     
    
End

Done:
Return(@Return)

GO

Create Procedure AzMan_SPS_Get_AzApplicationGroup
(
     @Return   int output,
     @ID int
)
as 
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
        Begin
            goto Done
        End
    Else if @Return = 1 or @Return = 2 or @Return = 3
        BEGIN
            Begin
                Select
                    [GroupType],
                    [ObjectGuid] ,
                    [Name],
                    IsNull([Description], N'')
                From [AzMan_AzApplicationGroup] 
                where [ID] = @ID

            End 
                
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            if @Error <> 0 
                Set @Return = @Error
            else
                Set @Return = 0
        END

Done:
    Return(@Return)

GO

Create Procedure [AzMan_SPS_Get_AzApplicationGroup_BizruleInfo]
(
     @Return   int output,
     @ID int
)
as 
Begin

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
        Select 
            [BizRuleLanguage],
            [BizRuleImportedPath] ,
            [BizRule]
        From 
            [AzMan_BizRule]
        where ParentID = @ID  and  ParentType = 5 and ID in 
         ( Select [BizruleID] From [AzMan_BizRule_To_Group] where [GroupID] = @ID)
           
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Get_AzTask_BizruleInfo]
(
     @Return   int output,
     @ID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Set @Return = 0

        Select 
            [BizRuleLanguage],         
            [BizRuleImportedPath] ,
            [BizRule]
        From 
            [AzMan_BizRule]
        where ParentID = @ID  and  ParentType = 3 and ID in 
         ( Select [BizruleID] From [AzMan_BizRule_To_Task] where [TaskID] = @ID)
           
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0

            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End     
End

Done:
Return(@Return)

GO


Create Procedure [AzMan_SPS_Get_AzApplicationGroup_LDAPQuery]
(
     @Return   int output,
     @GroupID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Set @Return = 0
        Select 
            [LdapQuery]
        From 
            [AzMan_LDAPQuery]
        where GroupID = @GroupID   and ID  in 
            ( Select [LdapQueryID] From [AzMan_AzApplicationGroup] where ID = @GroupID  )
                
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0

            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_SIDMembers]
(
     @Return   int output,
     @GroupID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the Group
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
        
        Select [MemberSID]
        From [AzMan_Group_SIDMember]
        where GroupID = @GroupID  and [Member] = 1
        
            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            if @Error <> 0 
            Begin
                Set @Return = @Error
            End
            else
            Begin
                Set @Return = 0
            End
        
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_SIDNonMembers]
(
     @Return   int output,
     @GroupID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]

    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the Group
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select [MemberSID]
        From [AzMan_Group_SIDMember]
        where GroupID = @GroupID  and [Member] = 0
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
        
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_AppMembers]
(
     @Return   int output,
     @GroupID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the Group
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select [ObjectGuid]
        From AzMan_AzApplicationGroup 
        where ID in ( Select ChildID from AzMan_Group_AppMember where GroupID = @GroupID and [Member] = 1 )     
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    End 
        
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_AppNonMembers]
(
     @Return   int output,
     @GroupID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the Group
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin
        Select [ObjectGuid]
        From AzMan_AzApplicationGroup 
        where ID in ( Select ChildID from AzMan_Group_AppMember where GroupID = @GroupID and [Member] = 0 )     

            SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
            if @Error <> 0 
            Begin
                Set @Return = @Error
            End
            else
            Begin
                Set @Return = 0
            End
    End 
        
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_SIDMembers]
(
     @Return   int output,
     @RoleID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the Role
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select [MemberSID]
        From [AzMan_Role_SIDMember]
        where RoleID = @RoleID

        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    End 
        
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_AppMembers]
(
     @Return   int output,
     @RoleID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the Role
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select [ObjectGuid]
        From AzMan_AzApplicationGroup where 
        ID IN ( select ChildID from [AzMan_Role_AppMember] where RoleID = @RoleID)
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    End 
End

Done:
Return(@Return)

go

Create Procedure [AzMan_SPS_Get_AzScope]
(
     @Return   int output,
     @ScopeID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ScopeID, 4, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the App
    -- So he can see this object 
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
        [AppId],
        [NameLen],
        IsNull([HasSpecificUsers], 0) AS HasSpecificUsers,
        [NameHash],
        [ObjectGuid] ,
        [Description],
        [Name],
        [ApplicationData]
        From [AzMan_AzScope]
        where ID = @ScopeID 
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End     
        
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Enum_AzOperation]
(
     @Return   int output,
     @AppID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at the Application
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppID, 1, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the App
    -- So he can see the operations
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
        [ID], 
        [OperationID],
        [ObjectGuid] ,
        [Name],
        [Description],
        [ApplicationData]
        From [AzMan_AzOperation]
        where AppID = @AppID  

        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
        if @Error <> 0 
        Begin
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = 0
        End
    End     
        
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Get_AzOperation]
(
     @Return   int output,
     @ID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at object 
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see the operation
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
        [OperationID],        
        [ObjectGuid] ,
        [Name]       ,
        [Description],
        [ApplicationData]
        From [AzMan_AzOperation]
        where ID = @ID
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End
End

Done:
Return (@Return)

GO

Create Procedure [AzMan_SPS_Get_AzTask]
(
     @Return   int output,
     @ID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at object 
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see the object
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
            [IsRoleDefinition],
            [ObjectGuid] ,
            [Name],
            [Description],
            [ApplicationData]
        From [AzMan_AzTask]
        where ID = @ID
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
        
    End     
End

Done:
Return(@Return)

GO

Create Procedure [AzMan_SPS_Get_AzRoleAssignment]
(
     @Return   int output,
     @ID int
)
as 
Begin
    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- we don't care about SACL (0 for the second last parameter)
    -- Check access at object 
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 0, @SaclIsOn output
    
    if @Return <= 0
    Begin
        goto Done
    End
    -- The user either has admin, reader or delegated user at the parent
    -- So he can see the object
    Else if @Return = 1 or @Return = 2 or @Return = 3
    Begin

        Select
        [ObjectGuid] ,
        [Name]       ,
        [Description],
        [ApplicationData]
        From [AzMan_AzRoleAssignment]
        where ID = @ID
        
        SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  

        if @Error <> 0 
        Begin
            Set @Return = @Error
        End 
        else
        Begin 
            If @RowCount = 0
            Begin
                Set @Return = -1168 --Record not found
            End
        End     
    End
    
End

Done:
Return (@Return)


GO


-- Delete Queries

Create Procedure [AzMan_SPD_AzOperation]

-- Delete a specific record from table [AzMan_AzOperation]

(
 @Return   int output,
 @ID [int] 
,@AppId [int] = Null 
)

As

Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier

    DECLARE @childName nvarchar(512)
    DECLARE @childGuid uniqueidentifier
    Declare @AccessAtObjType [tinyint]
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 1, @SaclIsOn output
    
    if @Return <> 1
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    Set @Return = 0

    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @parentName = App.Name, @parentGuid = App.ObjectGuid FROM [dbo].[AzMan_AzApplication] App
                    WHERE App.ID = @AppId
            SELECT @childName = Op.Name, @childGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op
                    WHERE Op.ID = @ID
        END
            
    Delete From [dbo].[AzMan_AzOperation]

    Where
        ((@ID Is Null) Or ([ID] = @ID))
    And ((@AppId Is Null) Or ([AppId] = @AppId))

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End
    End

    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                    1,  -- 1 for application
                    @parentName,
                    @parentGuid,
                    2,  -- 2 for Operation
                    @childName,
                    @childGuid,
                    N'' -- no other info
        END
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzScope]
-- Delete a specific record from table [AzMan_AzScope]

(
 @Return   int output,
 @ID [int]              
,@AppId [int] = Null 
)


As
DECLARE @parentName nvarchar(512)
DECLARE @parentGuid uniqueidentifier

DECLARE @childName nvarchar(512)
DECLARE @childGuid uniqueidentifier
    
Set NoCount On

    DECLARE @RowCount INT, @Error INT
    Declare @AccessAtObjType [tinyint]
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 4, 1, @SaclIsOn output
    
    if @Return <> 1
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    Set @Return = 0

    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @parentName = App.Name, @parentGuid = App.ObjectGuid FROM [dbo].[AzMan_AzApplication] App
                    WHERE App.ID = @AppId
            SELECT @childName = scope.Name, @childGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope
                    WHERE scope.ID = @ID
        END
            
    Delete From [dbo].[AzMan_AzScope]

    Where
        ((@ID Is Null) Or ([ID] = @ID))
    And ((@AppId Is Null) Or ([AppId] = @AppId))
    
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End

    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                @Return,
                1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                1,  -- 1 for application
                @parentName,
                @parentGuid,
                4,  -- 4 for scope
                @childName,
                @childGuid,
                N'' -- no other info
        END

Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzApplication]

-- Delete a specific record from table [AzMan_AzApplication]

(
 @Return   int output,
 @ID [int] -- for [AzMan_AzApplication].[ID] column
,@StoreId [int] = Null 
)

As
    Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier

    DECLARE @childName nvarchar(512)
    DECLARE @childGuid uniqueidentifier
    Declare @AccessAtObjType [tinyint]    
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 1, 1, @SaclIsOn output
    
    if @Return <> 1
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
    Set @Return = 0

    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
                    WHERE store.ID = @StoreId
            SELECT @childName = app.Name, @childGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app
                    WHERE app.ID = @ID
        END
        
    Delete From [dbo].[AzMan_AzApplication]

    Where
        ((@ID Is Null) Or ([ID] = @ID))
    And ((@StoreId Is Null) Or ([StoreId] = @StoreId))

    
    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End
    
    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                    0,  -- 0 for store
                    @parentName,
                    @parentGuid,
                    1,  -- 1 for application
                    @childName,
                    @childGuid,
                    N'' -- no other info
        END
Done:
    Set NoCount Off
            
    Return(@Return)

GO

Create Procedure [AzMan_SPD_AzAuthorizationStore]
-- Delete a specific record from table [AzMan_AzAuthorizationStore]

(
 @Return   int output,
 @ID [int]              
)

As

Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier
    Declare @AccessAtObjType [tinyint]    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output
    
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store
                    WHERE store.ID = @ID
        END
    
    if @Return <> 1
        Begin
            if (@Return >= 2)
                Set @Return = -5
        End
    ELSE
        Begin
            Set @Return = 0
            Delete From [dbo].[AzMan_AzAuthorizationStore]
                Where ((@ID Is Null) Or ([ID] = @ID))
        End

    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                @Return,
                1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                0,  -- 0 for store
                @parentName,
                @parentGuid,
                0,  -- 0 for store
                @parentName,
                @parentGuid,
                N'' -- no other info
        END
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzApplicationGroup]
-- Delete a specific record from table [AzMan_AzApplicationGroup]
(
 @Return   int output,
 @ID [int] 
,@ParentId [int] = Null 
)

As

    Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier

    DECLARE @childName nvarchar(512)
    DECLARE @childGuid uniqueidentifier
    DECLARE @ParentType tinyint
    Declare @AccessAtObjType [tinyint]    
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 1, @SaclIsOn output
    
    if @Return <> 1
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End

    Set @Return = 0

    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ParentType = appGroup.ParentType, 
                    @childName = appGroup.Name, 
                    @childGuid = appGroup.ObjectGuid 
                    FROM [dbo].[AzMan_AzApplicationGroup] appGroup
                    WHERE appGroup.ID = @ID
            IF @ParentType = 0  -- store
                SELECT  @parentName = store.Name, 
                        @parentGuid = store.ObjectGuid 
                        FROM [dbo].[AzMan_AzAuthorizationStore] store
                        WHERE store.ID = @ParentId
            ELSE IF @ParentType = 1  -- app
                SELECT  @parentName = app.Name, 
                        @parentGuid = app.ObjectGuid 
                        FROM [dbo].[AzMan_AzApplication] app
                        WHERE app.ID = @ParentId
            ELSE IF @ParentType = 4  -- scope
                SELECT  @parentName = scope.Name, 
                        @parentGuid = scope.ObjectGuid 
                        FROM [dbo].[AzMan_AzScope] scope
                        WHERE scope.ID = @ParentId
        END
    Delete From [dbo].[AzMan_AzApplicationGroup]
    Where
        ([ID] = @ID)

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End

    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                    @ParentType,
                    @parentName,
                    @parentGuid,
                    5,  -- 5 for group
                    @childName,
                    @childGuid,
                    N'' -- no other info
        END
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzTask]
-- Delete a specific record from table [AzMan_AzTask]
(
 @Return   int output,
 @ID [int] 
,@ParentId [int] = Null 
)

As
    Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier

    DECLARE @childName nvarchar(512)
    DECLARE @childGuid uniqueidentifier
    DECLARE @ParentType tinyint
    Declare @AccessAtObjType [tinyint]    
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 1, @SaclIsOn output
    
    if @Return <> 1
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
    
    Set @Return = 0 
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ParentType = task.ParentType, 
                    @childName = task.Name, 
                    @childGuid = task.ObjectGuid 
                    FROM [dbo].[AzMan_AzTask] task
                    WHERE task.ID = @ID
            IF @ParentType = 1  -- app
                SELECT  @parentName = app.Name, 
                        @parentGuid = app.ObjectGuid 
                        FROM [dbo].[AzMan_AzApplication] app
                        WHERE app.ID = @ParentId
            ELSE IF @ParentType = 4  -- scope
                SELECT  @parentName = scope.Name, 
                        @parentGuid = scope.ObjectGuid 
                        FROM [dbo].[AzMan_AzScope] scope
                        WHERE scope.ID = @ParentId
        END
        
    Delete From [dbo].[AzMan_AzTask]

    Where ([ID] = @ID)

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End
    
    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                    @ParentType,
                    @parentName,
                    @parentGuid,
                    3,  -- 3 for task
                    @childName,
                    @childGuid,
                    N'' -- no other info
        END
Done:
Set NoCount Off

Return(@Return)

GO

Create Procedure [AzMan_SPD_AzRoleAssignment]
-- Delete a specific record from table 
(
 @Return   int output,
 @ID [int] 
,@ParentId [int] = Null 
)
As

    Set NoCount On

    DECLARE @RowCount INT, @Error INT
    DECLARE @parentName nvarchar(512)
    DECLARE @parentGuid uniqueidentifier

    DECLARE @childName nvarchar(512)
    DECLARE @childGuid uniqueidentifier
    DECLARE @ParentType tinyint
    Declare @AccessAtObjType [tinyint]    
    
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    -- Check access at this object
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 1, @SaclIsOn output
    
    if @Return <> 1
    Begin
        if (@Return >= 2)
        Begin
            Set @Return = -5 
        End
        goto Done
    End
    
    Set @Return = 0 
    -- get info for auditing
    IF @SaclIsOn = 1
        BEGIN
            SELECT @ParentType = role.ParentType, 
                    @childName = role.Name, 
                    @childGuid = role.ObjectGuid 
                    FROM [dbo].[AzMan_AzRoleAssignment] role
                    WHERE role.ID = @ID
            IF @ParentType = 1  -- app
                SELECT  @parentName = app.Name, 
                        @parentGuid = app.ObjectGuid 
                        FROM [dbo].[AzMan_AzApplication] app
                        WHERE app.ID = @ParentId
            ELSE IF @ParentType = 4  -- scope
                SELECT  @parentName = scope.Name, 
                        @parentGuid = scope.ObjectGuid 
                        FROM [dbo].[AzMan_AzScope] scope
                        WHERE scope.ID = @ParentId
        END
        
    Delete From [dbo].[AzMan_AzRoleAssignment]
    Where ([ID] = @ID)

    SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT  
    If @RowCount <> 1
    Begin
        if @Error <> 0 
        Begin   
            Set @Return = @Error
        End
        else
        Begin
            Set @Return = -1168 --Record not found
        End 
    End
    
    -- generate an audit
    IF @SaclIsOn = 1
        BEGIN
            EXEC [AzMan_SP_GenerateObjectAudit]
                    @Return,
                    1,  -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE
                    @ParentType,
                    @parentName,
                    @parentGuid,
                    6,  -- 6 for role
                    @childName,
                    @childGuid,
                    N'' -- no other info
        END
Done:
Set NoCount Off

Return(@Return)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp
GO

-- query the timestamps of a store
CREATE PROCEDURE AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp
(
@ReturnCode int output,
@storeID int
)
AS 
SELECT @ReturnCode = 0
 
SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzAuthorizationStore] 
WHERE [ID] = @storeID

Return(@@RowCount)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzApplicationUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzApplicationUpdateTimeStamp
GO

-- query the timestamps of applications
CREATE PROCEDURE AzMan_SPS_Enum_AzApplicationUpdateTimeStamp
(
@ReturnCode int output,
@storeID int
)
AS 
SELECT @ReturnCode = 0

SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzApplication] 
WHERE [StoreID] = @storeID

Return(@@RowCount)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzScopeUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzScopeUpdateTimeStamp
GO

-- query the timestamps of scopes
CREATE PROCEDURE AzMan_SPS_Enum_AzScopeUpdateTimeStamp
(
@ReturnCode int output,
@appID int
)
AS 
SELECT @ReturnCode = 0

SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzScope] 
WHERE [AppID] = @appID

Return(@@RowCount)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp
GO

-- query the timestamps of application groups
CREATE PROCEDURE AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp
(
@ReturnCode int output,
@parentID int,
@parentType tinyint
)
AS 
SELECT @ReturnCode = 0

IF (@parentType = 0)
    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] 
    WHERE [StoreID] = @parentID
IF (@parentType = 1)
    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] 
    WHERE [AppID] = @parentID
IF (@parentType = 4)
    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] 
    WHERE [ScopeID] = @parentID

Return(@@RowCount)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzOperationUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzOperationUpdateTimeStamp
GO

-- query the timestamps of operations
CREATE PROCEDURE AzMan_SPS_Enum_AzOperationUpdateTimeStamp
(
@ReturnCode int output,
@appID int
)
AS 
SELECT @ReturnCode = 0

SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzOperation] 
WHERE [AppID] = @appID

Return(@@RowCount)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp
GO

-- query the timestamps of roles
CREATE PROCEDURE AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp
(
@ReturnCode int output,
@parentID int,
@parentType tinyint
)
AS 
SELECT @ReturnCode = 0

IF (@parentType = 1)

    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzRoleAssignment] 
    WHERE [AppID] = @parentID

ELSE
    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzRoleAssignment] 
    WHERE [ScopeID] = @parentID

Return(@@RowCount)


GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Enum_AzTaskUpdateTimeStamp' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Enum_AzTaskUpdateTimeStamp
GO

-- query the timestamps of tasks
CREATE PROCEDURE AzMan_SPS_Enum_AzTaskUpdateTimeStamp
(
@ReturnCode int output,
@parentID int,
@parentType tinyint
)
AS 
SELECT @ReturnCode = 0

IF (@parentType = 1)

    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzTask] 
    WHERE [AppID] = @parentID

ELSE
    SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzTask] 
    WHERE [ScopeID] = @parentID

Return(@@RowCount)

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPD_SQLRole' and type = 'P')
    DROP PROCEDURE AzMan_SPD_SQLRole
GO

CREATE PROCEDURE AzMan_SPD_SQLRole
(
@Return             [int] output,
@SQLRoleName        [nvarchar] (64)     
)
AS
    DECLARE @Ret    [int]
    DECLARE @member [nvarchar] (64)
    
    DECLARE roleMember_cursor CURSOR
    FOR 
    (
        select u.name from sysusers u, sysusers g, sysmembers m
            where g.name = @SQLRoleName
                and g.uid = m.groupuid
                and g.issqlrole = 1
                and u.uid = m.memberuid
    )
    OPEN roleMember_cursor
    FETCH NEXT FROM roleMember_cursor INTO @member
    WHILE @@FETCH_STATUS = 0
    BEGIN
      EXEC @Ret = sp_droprolemember @SQLRoleName, @member
      FETCH NEXT FROM roleMember_cursor INTO @member
    END
    Close roleMember_cursor
    DEALLOCATE roleMember_cursor
    
    Set @Return = -1
    
    Exec @Ret = sp_droprole @SQLRoleName
    
    if @Ret <> 0 
    Begin
        Set @Return = -1 
    End
    Else
    Begin
        Set @Return = 0 
    End
    
    Return @Return  

GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPD_All_SQLRole_ForObject' and type = 'P')
    DROP PROCEDURE AzMan_SPD_All_SQLRole_ForObject
GO

CREATE PROCEDURE AzMan_SPD_All_SQLRole_ForObject
(
@Return     [int] output,
@ID         [int],
@ObjectType [tinyint]
)
AS
    DECLARE @uid    [int]
    DECLARE @SQLRoleName [nvarchar] (64)

    Set @Return = 0
    
    SELECT @uid = 0
    
    Select @uid=[uid], @SQLRoleName = [SQLRolename] 
    From [dbo].[Azman_SQLRole] 
    where 
      [ObjectID]    = @ID and
      [ObjectType]  = @ObjectType and
      [RoleType]    = 1
    
    IF @uid <> 0
    Begin
        Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName
    End
    
    SELECT @uid = 0 
    Select @uid=[uid], @SQLRoleName = [SQLRolename] 
    From [dbo].[Azman_SQLRole] 
    where 
      [ObjectID]    = @ID and
      [ObjectType]  = @ObjectType and
      [RoleType]    = 2
    
    IF @uid <> 0
    Begin
        Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName
    End
    
    set @uid = 0
    Select @uid=[uid], @SQLRoleName = [SQLRolename] 
    From [dbo].[Azman_SQLRole] 
    where 
      [ObjectID]    = @ID and
      [ObjectType]  = @ObjectType and
      [RoleType]    = 3

    IF @uid <> 0
    Begin
        Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName
    End

    if @Return = 0 
    Begin
        DELETE AzMan_SQLRole WHERE [ObjectID] = @ID AND [ObjectType] = @ObjectType
        Set @Return = 0
    End

Done:
    Return @Return
GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPD_SQLRole_ForObject' and type = 'P')
    DROP PROCEDURE AzMan_SPD_SQLRole_ForObject
GO

CREATE PROCEDURE AzMan_SPD_SQLRole_ForObject
(
@Return     [int] output,
@ID         [int],
@ObjectType [tinyint],
@DeleteFlag [int]       -- bitwise pattern. 0x0001 for deleting only self, 0x0002 for deleting only children
)
AS
    SET NOCOUNT ON
    
    DECLARE @SQLRoleName [nvarchar] (64)
    Declare @AccessAtObjType [tinyint]    
    DECLARE @SaclIsOn [bit]
    Declare @DbName [nvarchar] (255)
    Set @SaclIsOn = 0
    
    Set @Return = -1

    -- such role deletion audit will be generated by the object deletion.
    -- so we don't care about SACL (second last parameter) here
    Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, @ObjectType, 0, @SaclIsOn output
    
    if @Return <> 1 
    Begin
        -- if the object is deleted we will ignore as we still want to delete all the roles for the object
        if @Return = -1168
        Begin
            Set @Return = 0
        End
        Else
        Begin
            if (@Return >= 2)
            Begin
                Set @Return = -5 
            End
            goto Done
        End
    End
    
    -- our deletion flag will switch to delete all because we only need
    -- to make sure that the acting container object's roles are not deleted
    -- so that the user still has access
    -- if we are instructed to delete sub-container's roles
    if (@DeleteFlag & 2) <> 0
        begin
            -- for applications or stores, we also need to delete the sub-container's roles
            DECLARE @locReturn int -- we have to press on for this action. No rollback
            IF @ObjectType = 0
                BEGIN
                    DECLARE @AppID int
                    DECLARE app_cursor CURSOR
                    FOR 
                    (
                        select App.ID FROM AzMan_AzApplication App WHERE App.StoreID = @ID
                    )
                    OPEN app_cursor
                    FETCH NEXT FROM app_cursor INTO @AppID
                    WHILE @@FETCH_STATUS = 0
                        BEGIN
                            -- now call recursively to delete the app's roles
                            EXEC AzMan_SPD_SQLRole_ForObject @locReturn output, @AppID, 1, 3
                            FETCH NEXT FROM app_cursor INTO @AppID
                        END
                    Close app_cursor
                    DEALLOCATE app_cursor
	            END
            ELSE IF @ObjectType = 1
	            BEGIN
                    DECLARE @ScopeID int
                    DECLARE scope_cursor CURSOR
                    FOR 
                    (
                        select Scope.ID FROM AzMan_AzScope Scope WHERE Scope.AppID = @ID
                    )
                    OPEN scope_cursor
                    FETCH NEXT FROM scope_cursor INTO @ScopeID
                    WHILE @@FETCH_STATUS = 0
                        BEGIN
                            -- now call recursively to delete the app's roles
                            EXEC AzMan_SPD_SQLRole_ForObject @locReturn output, @ScopeID, 4, 3
                            FETCH NEXT FROM scope_cursor INTO @ScopeID
                        END
                    Close scope_cursor
                    DEALLOCATE scope_cursor
                END
        end

    -- if we are instructed to delete the self roles
    if (@DeleteFlag & 1) <> 0
        begin
            If Is_Member('db_owner') = 1 or Is_Member('db_securityadmin') = 1
            Begin
                exec AzMan_SPD_All_SQLRole_ForObject @Return output , @ID, @ObjectType
            End
            else
            begin
                Set @DbName = db_name()
                Exec master.dbo.xp_AzManDeleteRole @Return output, @ID, @ObjectType, @DbName 
            End
        end

Done:
    SET NOCOUNT OFF
    Return @Return
    
GO

IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'AzMan_SPS_Get_ObjectSecurityOption' and type = 'P')
    DROP PROCEDURE AzMan_SPS_Get_ObjectSecurityOption
GO

CREATE PROCEDURE AzMan_SPS_Get_ObjectSecurityOption
(
@Return [int] output,
@AccessAtObjType [tinyint] output,
@ID [int],
@ObjectType [tinyint],
@UserType [int] output
)
AS
    DECLARE @SaclIsOn [bit]
    Set @SaclIsOn = 0
    
    SET @Return = -5
    SET @UserType = 0   -- illegal users
    
    IF @ObjectType = 0 OR @ObjectType = 1 OR @ObjectType = 4
        BEGIN
            -- no need to know that SACL (Second last parameter)
	        Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, @ObjectType, 0, @SaclIsOn output
	        IF @Return >= 1 AND @Return <= 3
	            BEGIN
	                SET @UserType = @Return
	                SET @Return = 0
	            END
	    END
	    
	RETURN @Return
	
GO

IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzMan_SP_Grant_Permission' and type = 'P')
    DROP PROCEDURE AzMan_SP_Grant_Permission
GO

CREATE PROCEDURE AzMan_SP_Grant_Permission
AS
    grant execute on AzMan_SP_GetSQLRole                to  public
    grant execute on AzMan_SPI_SQLRole                  to public
    --AzMan_SPI_Add_User_To_SQLRole
    grant execute on AzMan_SPI_Add_User_To_Role         to public
    --AzMan_SPD_User_From_SQLRole
    grant execute on AzMan_SPD_User_From_Role           to public
    --AzMan_SP_Get_Object_Path_For_Container
    --AzMan_SP_Get_Object_Path
    --AzMan_SP_AccessCheck_For_Container
    --AzMan_SP_AccessCheck
    grant execute on AzMan_SPS_Get_StoreIDByName              to public
    --AzMan_SP_Check_Dup_Task
    --AzMan_SP_Check_Dup_RoleAssignment
    --AzMan_SP_Check_Dup_Application
    --AzMan_SP_Check_Dup_Scope
    --AzMan_SP_Check_Dup_Operation
    --AzMan_SP_Check_Dup_Group_For_Given_Parent
    --AzMan_SP_Check_Dup_Group
    grant execute on AzMan_SPI_AzAuthorizationStore     to public
    grant execute on AzMan_SPI_AzApplication            to public
    grant execute on AzMan_SPU_AzApplication            to public
    grant execute on AzMan_SPI_AzScope                  to public
    grant execute on AzMan_SPI_AzOperation              to public
    grant execute on AzMan_SPI_AzApplicationGroup       to public   
    grant execute on AzMan_SPI_AzTask                   to public
    --AzMan_SPI_AzTask_Single_Operation
    --AzMan_SPD_AzTask_Single_Operation
    grant execute on AzMan_SPI_AzTask_Multi_Operations  to public
    --AzMan_SPI_AzRoleAssignment_Single_Operation
    --AzMan_SPD_AzRoleAssignment_Single_Operation
    grant execute on AzMan_SPI_AzRoleAssignment_Multi_Operations    to public
    --AzMan_SPI_AzTask_Single_Task
    --AzMan_SPD_AzTask_Single_Task
    grant execute on AzMan_SPI_AzTask_Multi_Tasks       to public
    --AzMan_SPI_AzRoleAssignment_Single_Task
    --AzMan_SPD_AzRoleAssignment_Single_Task
    grant execute on AzMan_SPI_AzRoleAssignment_Multi_Tasks to public
    grant execute on AzMan_SPI_AzRoleAssignment             to public
    grant execute on AzMan_SPU_AzAuthorizationStore         to public
    grant execute on AzMan_SPU_AzScope                      to public
    grant execute on AzMan_SPU_AzOperation                  to public
    grant execute on AzMan_SPU_AzApplicationGroup           to public
    grant execute on AzMan_SPU_AzTask                       to public
    grant execute on AzMan_SPU_AzRoleAssignment             to public
    grant execute on AzMan_SPIU_AzApplicationGroup_LDAPQuery to public
    grant execute on AzMan_SPIU_Bizrule                      to public
    grant execute on AzMan_SPIU_AzApplicationGroup_Bizrule   to public
    grant execute on AzMan_SPIU_AzTask_Bizrule               to public  
    --AzMan_SPI_AzApplicationGroup_Single_SidMember
    --AzMan_SPD_AzApplicationGroup_Single_SidMember
    grant execute on AzMan_SPI_AzApplicationGroup_Multi_SidMembers  to public
    grant execute on AzMan_SPI_AzApplicationGroup_Multi_SidNonMembers   to public
    --AzMan_SPI_AzApplicationGroup_Single_AppMember
    --AzMan_SPD_AzApplicationGroup_Single_AppMember
    grant execute on AzMan_SPI_AzApplicationGroup_Multi_AppMembers  to public
    grant execute on AzMan_SPI_AzApplicationGroup_Multi_AppNonMembers   to public
    --AzMan_SPI_AzRoleAssignment_Single_SidMember
    --AzMan_SPD_AzRoleAssignment_Single_SidMember
    grant execute on AzMan_SPI_AzRoleAssignment_Multi_SidMembers    to public
    -- AzMan_SPI_AzRoleAssignment_Single_AppMember
    -- AzMan_SPD_AzRoleAssignment_Single_AppMember
    grant execute on AzMan_SPI_AzRoleAssignment_Multi_AppMembers    to public
    -- spDrop_AzMan_Table
    grant execute on AzMan_SPS_Get_AzAuthorizationStoreByName       to public
    grant execute on AzMan_SPS_Enum_AzApplications                  to public
    grant execute on AzMan_SPS_Get_AzApplication                    to public
    --AzMan_SPS_Get_AzApplication_AppData
    --AzMan_SPS_Get_AzScope_AppData
    --AzMan_SPS_Get_AzAuthorizationStore_AppData
    grant execute on AzMan_SPS_Enum_AzScope                         to public
    grant execute on AzMan_SPS_Enum_AzApplicationGroup              to public
    grant execute on AzMan_SPS_Enum_AzTask                          to public
    grant execute on AzMan_SPS_Enum_AzTask_Operations               to public
    grant execute on AzMan_SPS_Enum_AzTask_Tasks                    to public   
    grant execute on AzMan_SPS_Enum_AzRoleAssignment_Tasks          to public
    grant execute on AzMan_SPS_Enum_AzRoleAssignment_Operations     to public
    grant execute on AzMan_SPS_Enum_AzRoleAssignment                to public
    grant execute on AzMan_SPS_Get_AzApplicationGroup               to public
    grant execute on AzMan_SPS_Get_AzApplicationGroup_BizruleInfo   to public
    grant execute on AzMan_SPS_Get_AzTask_BizruleInfo               to public   
    grant execute on AzMan_SPS_Get_AzApplicationGroup_LDAPQuery     to public
    grant execute on AzMan_SPS_Enum_AzApplicationGroup_SIDMembers   to public
    grant execute on AzMan_SPS_Enum_AzApplicationGroup_SIDNonMembers to public
    grant execute on AzMan_SPS_Enum_AzApplicationGroup_AppMembers   to public
    grant execute on AzMan_SPS_Enum_AzApplicationGroup_AppNonMembers    to public
    grant execute on AzMan_SPS_Enum_AzRoleAssignment_SIDMembers     to public
    grant execute on AzMan_SPS_Enum_AzRoleAssignment_AppMembers     to public
    grant execute on AzMan_SPS_Get_AzScope                          to public
    grant execute on AzMan_SPS_Enum_AzOperation                     to public
    grant execute on AzMan_SPS_Get_AzOperation                      to public
    grant execute on AzMan_SPS_Get_AzTask                           to public
    grant execute on AzMan_SPS_Get_AzRoleAssignment                 to public
    grant execute on AzMan_SPD_AzOperation                          to public
    grant execute on AzMan_SPD_AzScope                              to public
    grant execute on AzMan_SPD_AzApplication                        to public
    grant execute on AzMan_SPD_AzAuthorizationStore                 to public
    grant execute on AzMan_SPD_AzApplicationGroup                   to public
    grant execute on AzMan_SPD_AzTask                               to public
    grant execute on AzMan_SPD_AzRoleAssignment                     to public
    grant execute on AzMan_SPD_SQLRole_ForObject                    to public
    grant execute on AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp to public
    grant execute on AzMan_SPS_Enum_AzApplicationUpdateTimeStamp to public
    grant execute on AzMan_SPS_Enum_AzScopeUpdateTimeStamp to public
    grant execute on AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp to public
    grant execute on AzMan_SPS_Enum_AzOperationUpdateTimeStamp to public
    grant execute on AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp to public
    grant execute on AzMan_SPS_Enum_AzTaskUpdateTimeStamp to public
    grant execute on AzMan_SP_GenerateObjectAudit                   to public
    grant execute on AzMan_SP_GenerateMemberAudit                   to public
    grant execute on AzMan_SP_GenerateGenericAudit                  to public
    grant execute on AzMan_SPS_Get_ObjectSecurityOption             to public
    grant execute on AzMan_SPS_Get_DBOwners                         to public
    grant execute on AzMan_SPS_Get_Role_For_Object                  to public
    grant execute on AzMan_SP_GetRoleMemberCount                    to public
    
    grant execute on AzMan_SPI_SQLRole_From_XP                      to dbo
    grant execute on AzMan_SPD_All_SQLRole_ForObject                to dbo
    grant execute on AzMan_SPD_User_From_SQLRole_From_XP            to dbo
    grant execute on AzMan_SPI_Add_User_To_SQLRole_From_XP          to dbo
    grant execute on AzMan_SPU_SqlRoleUpdated                       to public
    grant execute on AzMan_SPI_Create_SqlRole_For_Object            to public
    
GO  


IF not EXISTS (SELECT name FROM sysobjects
        WHERE name = 'AzGenerateAudit' and type = 'X')
    exec sp_addextendedproc 'AzGenerateAudit',                  'AzSqlExt.dll'
GO

IF not EXISTS (SELECT name FROM sysobjects
        WHERE name = 'xp_AzManAddUserToRole' and type = 'X')
    exec sp_addextendedproc 'xp_AzManAddUserToRole',            'AzSqlExt.dll'
GO

IF not EXISTS (SELECT name FROM sysobjects
        WHERE name = 'xp_AzManRemoveUserFromRole' and type = 'X')
    exec sp_addextendedproc 'xp_AzManRemoveUserFromRole',       'AzSqlExt.dll'
GO

IF not EXISTS (SELECT name FROM sysobjects
        WHERE name = 'xp_AzManDeleteRole' and type = 'X')
    exec sp_addextendedproc 'xp_AzManDeleteRole',               'AzSqlExt.dll'
GO

IF not EXISTS (SELECT name FROM sysobjects
        WHERE name = 'xp_AzManAddRole' and type = 'X')
    exec sp_addextendedproc 'xp_AzManAddRole',                  'AzSqlExt.dll'
GO

grant execute on AzGenerateAudit                to  public
grant execute on xp_AzManAddUserToRole          to  public
grant execute on xp_AzManRemoveUserFromRole     to  public
grant execute on xp_AzManDeleteRole             to  public
grant execute on xp_AzManAddRole                to  public
MSFT	A)W d,X Lx@l4`		(


TH

t<|,Pl2$K0TOQ4"Q3H@4" ]`@@(4"]=x@\4"k@Tx(4"tl&@4" u@(4"u @4"|@(4"h}@<	4"	h @L
(4"
8@|
 4"P@
4(4"0h@H
PL4"

@
hP4"@:4"L@D4"@h4"@@`x<4"L@PF4"D@$-4"(@ <(4"@@|\!4"tX@|(4"p@ "4"ؚ@8P4"$@T!4"p@hX'4"ܜ@@4"̞@T(44"@H44"h@(h,4"80@$4" H@$4"!0`@ $&!"ģ h!!#ģ '!$!%"%Lx!%"&L"0%"'L8"@ !(LbX"0HHxx8hP `(@X0@:>20FF킛jO0EŕJ Bld0{'Mk~SHx^m@kۦ5,`$E.}VEjL<FDXN6yXM_/}`"
bA4]C 8LC
ŅӘ.lJ6mI85LOV^aMDě^NtHmF٤UwsB	s
xhjI|Cmj`+ H!@%Oqln^q}J.@Y'l%UPEz@ٙ%DXf4sM;$1}dUZ
O+_իv^DAH[M̌`	H2H%e&	?NF[V(
OKKm]O
_h]M'nS<
(ADSo:=T}^ERw}PjItHDpMPsCpO@qOSH
ciB*yYWKito-\QKC<7̮w]:HpNܡMZ><x 0-stdole2.tlbWWW/D.x (D2.|0P"@*.$+h0/!-1`1( \'$8&##",+-<-0(L)8!`(d"(0d# &<#lT'l!l,h&L0 /)$*"p+(.th/P/10&-`*81H%x")21,'H*&+X!H+t)'*$8"0(H 1<$(
AZROLESLibWW8E5IAzAuthorizationStoreWWW DescriptionWppbstrDescription2ApplicationDataWpbstrApplicationData
7)DomainTimeoutWWWplPropWWЪScriptEngineTimeoutWMaxScriptEngines-GenerateAuditsWW.pbPropWW(Writable]vpfPropWWmGetPropertyW^lPropIdWvarReservedW5pvarProp4'SetPropertyWIvarPropWAddPropertyItemWDeletePropertyItemWW:PolicyAdministrators
RpvarAdminsWW
"PolicyReadersWWWpvarReadersWzAddPolicyAdministratorWW	VbstrAdminWWWRDeletePolicyAdministratorWWWAddPolicyReaderW
bstrReaderWW`JDeletePolicyReaderWW
NInitializeWWlFlagsWW
;bstrPolicyURLWWW(UpdateCacheWxDeleteWWd8IAzApplicationsWdzItemIndexWWW
pvarObtPtrWWd0vCountWWWplCountWdxA_NewEnum	ppEnumPtrWWWnApplicationsppAppCollectionW8uIAzApplicationWWTName	spbstrNameWWWAuthzInterfaceClsidWp	pbstrPropWWWVersionWQApplyStoreSaclWW,	8IAzScopesWWW2ScopesWWppScopeCollectionWWW8IAzScopep8IAzApplicationGroupskWApplicationGroupsWWWppGroupCollectionWWWX8KIAzApplicationGroupWX\TypeX	LdapQueryWWWX
2AAppMembersWWXT
AppNonMembersWWWXtMembersWX
NonMembersWWXTSpAddAppMember3bstrPropXmDeleteAppMemberWXAddAppNonMemberWXKDeleteAppNonMemberWWX	rAddMemberWWWXHDeleteMemberXl4AddNonMemberXc"DeleteNonMemberWX\SubmitWWX
AddMemberNameWWWXFDeleteMemberNameXAddNonMemberNameXHKDeleteNonMemberNameWX$MembersNameWXV@NonMembersNameWWaOpenApplicationGroup
bstrGroupNameWWWVppGroupWF4CreateApplicationGroupWWDeleteApplicationGroupWW8mIAzRolesRolesWWWppRoleCollection 8^.IAzRoleW w;AddTaskW 
BDeleteTaskWW ڑAddOperation ?DeleteOperationW 
~VOperationsWW LTasksWWWSOpenRolebstrRoleName[ppRoleWW
XCreateRoleWW
KDeleteRoleWW48IAzTasksuMppTaskCollection8pIAzTaskWpMBizRuleW	BizRuleLanguageWBizRuleImportedPathW1IsRoleDefinitionObstrOpWW(bstrTaskOpenTask_bstrTaskNameppTaskWW
CreateTaskWW
ϦCanBeDelegatedWWPQBizrulesWritablepPolicyAdministratorsNamed	qPolicyReadersNameWWW$jAddPolicyAdministratorNameWWcDeletePolicyAdministratorNameWWWAddPolicyReaderNameW<>DeletePolicyReaderNameWW	DaOpenScopeWWW
+bstrScopeNameWWWppScopeWѓCreateScopeW|	ZDeleteScopeWL4
8IAzOperationsWWWBppOperationCollectionWWW8IAzOperationtOperationIDW
OpenOperationWWW
|bstrOperationNameWWW`a9ppOperationW(CreateOperationW48IAzClientContextDAccessCheckWbstrObjectNameWW
YvarScopeNamesWWWt
n#varOperationsWWWVvarParameterNamesWWW 	IvarParameterValuesWWvarInterfaceNamesWWW	-varInterfaceFlagsWWW
rvarInterfacesWWW
pvarResultsW
GetBusinessRuleStringWWWXgpbstrBusinessRuleStringWUserDnWW
UserSamCompatWWWH
<UserDisplayWx
UserGuid,
UserCanonicalWWWUserUpnW
1UserDnsSamCompatGetRoles
pvarRoleNamesWWW2RoleForAccessCheckWW pInitializeClientContextFromTokenAyullTokenHandleWWppClientContextWInitializeClientContextFromNameW 
0ClientNameWW
~DomainNameWW3DelegatedPolicyUserspvarDelegatedPolicyUsers#GAddDelegatedPolicyUserWWLbstrDelegatedPolicyUserW`
DeleteDelegatedPolicyUserWWW$ InitializeClientContextFromStringSid	iSidStringWWW\|lOptionsDelegatedPolicyUsersName>AddDelegatedPolicyUserNameWWsDeleteDelegatedPolicyUserNameWWW%OpenApplicationW4
KbstrApplicationNameW(
ڃppApplicationWWWCreateApplicationWWWL
DeleteApplicationWWW

TargetMachineWWW|
gpbstrTargetMachineWW opbApplyStoreSacl CloseApplication|OrlFlagWWWx8IAzAuthorizationStore2WW8lIAzApplication2W@08}mIAzClientContext2WWW@ZGetAssignedScopesPageWWWSPageSizeD
BpvarCursorWW ]pvarScopeNamesWW@;AddRolesvarRoles@AddApplicationGroupsdvarApplicationGroups@
fAddStringSidsWWWP	
varStringSidsWWW@X3LDAPQueryDNWpbstrLDAPQueryDND!InitializeClientContextFromToken2WWWlulTokenHandleLowPartl~ulTokenHandleHighPartWWWInitializeClientContext2IdentifyingStringWWWxJEOpenApplication2xCreateApplication2WW8IAzAuthorizationStore3WW2IsUpdateNeededWW$PpbIsUpdateNeeded`BizruleGroupSupportedWWW?pbSupportedWUpgradeStoresFunctionalLevel8lFunctionalLevel!IsFunctionalLevelUpgradeSupportedWWWGetSchemaVersionOplMajorVersionWWplMinorVersionWW$8mIAzApplication3WScopeExistsWdpbExistWl4	8IAzScope2WWW	8hIAzRoleDefinitionsWWl$
RoleDefinitionsW@ppRoleDefinitionsWWW4
8IAzRoleDefinitionWWW8)IAzRoleAssignmentsWW4pVRoleAssignmentsW
|bRecursiveWW~ppRoleAssignmentsWWW4AddRoleDefinitionWWWhIbstrRoleDefinitionWW4DuDeleteRoleDefinitionl8CreateRoleDefinition4bstrRoleDefinitionNameWWlKuOpenRoleDefinitionWW
8IAzRoleAssignmentWWW0ScopeWWWl	CreateRoleAssignmentObstrRoleAssignmentNameWW
ۮppRoleAssignmentl	]OpenRoleAssignmentWWl]DeleteRoleAssignment
OpenScope2WW&ppScope2TCreateScope2$JDeleteScope2BizRulesEnabledWP	7pbEnabledWWW`	
8
IAzOperation2WWW	h8IAzTask2(
8IAzApplicationGroup2
 8~mIAzClientContext3WWW
\pAccessCheck2
]lOperationWWh#AplResult
IsInRoleAssignmentWW<	
ިpbIsInRoleWW
<
<7GetOperationsWWW
(O]GetTasks
88YIAzBizRuleParameters
RAddParameter

bstrParameterNameWWWl:varParameterValueWWW

AddParametersWWW
nGetParameterValueWWWpvarParameterValueWW
@ϱRemoveWW|]varParameterName
	RemoveAllWWW
QBizRuleParametersWWWppBizRuleParamWWT8IAzBizRuleInterfacesTfAddInterface6bstrInterfaceNameWWWh4lInterfaceFlagWWvarInterfaceT
´AddInterfacesWWWT&GetInterfaceValueWWW
XBizRuleInterfacesWWWppBizRuleInterfacesW
$	(`GetGroupsWWW	[ulOptionsWWWrpGroupArrayW
XSids=pStringSidArrayW80gIAzBizRuleContextWWWTٍBusinessRuleResultWW+BusinessRuleStringWWGetParameter@8IAzPrincipalLocatorW84IAzNameResolverWV3NameFromSidWHٹbstrSidW_pSidType 
%9NamesFromSidsWWWvSidsWWWl
XpvSidTypesWWpvNamesWTNameResolver%ppNameResolverWW`8rIAzObjectPickerWH
8,wireHWND
8_RemotableHandle
cfContext|8Z__MIDL_IWinTypes_0009WWWJhInprocW,ZhRemoteW
luWWW
5GetPrincipalsWWW
4#hParentWndWW8	lbstrTitleWWWD!ZpvSidsWWtSObjectPickerzppObjectPickerWWt8|AzAuthorizationStore8^AzBizRuleContext<`
8ucAzPrincipalLocatorWW8tagAZ_PROP_CONSTANTS0`AZ_PROP_NAME0\AZ_PROP_DESCRIPTIONW0-EAZ_PROP_WRITABLE0
AZ_PROP_APPLICATION_DATA0AZ_PROP_CHILD_CREATE0fYAZ_MAX_APPLICATION_NAME_LENGTHWW0=AZ_MAX_OPERATION_NAME_LENGTH09mAZ_MAX_TASK_NAME_LENGTHW0WAZ_MAX_SCOPE_NAME_LENGTH
0AZ_MAX_GROUP_NAME_LENGTH 0_AZ_MAX_ROLE_NAME_LENGTHW@0$AZ_MAX_NAME_LENGTHWW02AZ_MAX_DESCRIPTION_LENGTHWWW0~bAZ_MAX_APPLICATION_DATA_LENGTHWW0AZ_SUBMIT_FLAG_ABORT0\|AZ_SUBMIT_FLAG_FLUSH0"hAZ_MAX_POLICY_URL_LENGTH!0IAZ_AZSTORE_FLAG_CREATEWW#!0DAZ_AZSTORE_FLAG_MANAGE_STORE_ONLYWWWp0AZ_AZSTORE_FLAG_BATCH_UPDATE8!0ߏAZ_AZSTORE_FLAG_AUDIT_IS_CRITICALWWW"0pgAZ_AZSTORE_FORCE_APPLICATION_CLOSEWW80AZ_AZSTORE_NT6_FUNCTION_LEVELWWW *0AZ_AZSTORE_FLAG_MANAGE_ONLY_PASSIVE_SUBMITWW%0AZ_PROP_AZSTORE_DOMAIN_TIMEOUTWW!0AZ_AZSTORE_DEFAULT_DOMAIN_TIMEOUTWWW%0DAZ_PROP_AZSTORE_SCRIPT_ENGINE_TIMEOUTWWW0EAZ_AZSTORE_MIN_DOMAIN_TIMEOUTWWW$$0<AZ_AZSTORE_MIN_SCRIPT_ENGINE_TIMEOUT!(0 AZ_AZSTORE_DEFAULT_SCRIPT_ENGINE_TIMEOUT"0.AZ_PROP_AZSTORE_MAX_SCRIPT_ENGINESWW%0 3AZ_AZSTORE_DEFAULT_MAX_SCRIPT_ENGINESWWW#0fAZ_PROP_AZSTORE_MAJOR_VERSIONWWW!0AZ_PROP_AZSTORE_MINOR_VERSIONWWW0qAZ_PROP_AZSTORE_TARGET_MACHINEWWh$0RAZ_PROP_AZTORE_IS_ADAM_INSTANCEW	0vAZ_PROP_OPERATION_IDh!0FAZ_PROP_TASK_OPERATIONSW0AZ_PROP_TASK_BIZRULE0wAZ_PROP_TASK_BIZRULE_LANGUAGEWWWL0AZ_PROP_TASK_TASKSWW"0jAZ_PROP_TASK_BIZRULE_IMPORTED_PATHWW,'0AZ_PROP_TASK_IS_ROLE_DEFINITIONW\0AZ_MAX_TASK_BIZRULE_LENGTHWWx%#0pAZ_MAX_TASK_BIZRULE_LANGUAGE_LENGTHWP(0AZ_MAX_TASK_BIZRULE_IMPORTED_PATH_LENGTH
0tAZ_MAX_BIZRULE_STRINGWWWL0AZ_PROP_GROUP_TYPEWWX"0AZ_GROUPTYPE_LDAP_QUERYWh0KAZ_GROUPTYPE_BASICWW$0\AZ_GROUPTYPE_BIZRULE00AZ_PROP_GROUP_APP_MEMBERSWWW0JAZ_PROP_GROUP_APP_NON_MEMBERSWWW 0rAZ_PROP_GROUP_LDAP_QUERYp0QAZ_MAX_GROUP_LDAP_QUERY_LENGTHWW
0vAZ_PROP_GROUP_MEMBERSWWW0mAZ_PROP_GROUP_NON_MEMBERSWWWT0M;AZ_PROP_GROUP_MEMBERS_NAMEWW0iAZ_PROP_GROUP_NON_MEMBERS_NAMEWW%03AZ_PROP_GROUP_BIZRULEWWW0AZ_PROP_GROUP_BIZRULE_LANGUAGEWW #05AZ_PROP_GROUP_BIZRULE_IMPORTED_PATHW0`AZ_MAX_GROUP_BIZRULE_LENGTHW $0CAZ_MAX_GROUP_BIZRULE_LANGUAGE_LENGTH)0*AZ_MAX_GROUP_BIZRULE_IMPORTED_PATH_LENGTHWWW*0AZ_PROP_ROLE_APP_MEMBERS0dAZ_PROP_ROLE_MEMBERS0!0AZ_PROP_ROLE_OPERATIONSW"0AZ_PROP_ROLE_TASKSWW )0.AZ_PROP_ROLE_MEMBERS_NAMEWWW<0]AZ_PROP_SCOPE_BIZRULES_WRITABLEW(0[AZ_PROP_SCOPE_CAN_BE_DELEGATEDWW 0,AZ_PROP_CLIENT_CONTEXT_USER_DNWW&0AZ_PROP_CLIENT_CONTEXT_USER_SAM_COMPATWWD,#0=AZ_PROP_CLIENT_CONTEXT_USER_DISPLAYW 0AZ_PROP_CLIENT_CONTEXT_USER_GUID<.%0AAZ_PROP_CLIENT_CONTEXT_USER_CANONICALWWW#0AZ_PROP_CLIENT_CONTEXT_USER_UPNW**0TAZ_PROP_CLIENT_CONTEXT_USER_DNS_SAM_COMPATWW,0AZ_PROP_CLIENT_CONTEXT_ROLE_FOR_ACCESS_CHECK!$0SAZ_PROP_CLIENT_CONTEXT_LDAP_QUERY_DN$)0G>AZ_PROP_APPLICATION_AUTHZ_INTERFACE_CLSIDWWW0U}AZ_PROP_APPLICATION_VERSIONW,!0eAZ_MAX_APPLICATION_VERSION_LENGTHWWW,0AZ_PROP_APPLICATION_NAME&#0EAZ_PROP_APPLICATION_BIZRULE_ENABLEDW8 0
AZ_PROP_APPLY_STORE_SACL@(0AZ_PROP_GENERATE_AUDITSW\-0.AZ_PROP_POLICY_ADMINSWWWl.0AZ_PROP_POLICY_READERSWW %0}AZ_PROP_DELEGATED_POLICY_USERSWW-0]5AZ_PROP_POLICY_ADMINS_NAMEWW$0<AZ_PROP_POLICY_READERS_NAMEWd #0AZ_PROP_DELEGATED_POLICY_USERS_NAMEWL 0lAZ_CLIENT_CONTEXT_SKIP_GROUP)!0AZ_CLIENT_CONTEXT_SKIP_LDAP_QUERYWWW+%08AZ_CLIENT_CONTEXT_GET_GROUP_RECURSIVEWWW-0BAZ_CLIENT_CONTEXT_GET_GROUPS_STORE_LEVEL_ONLYWWWazroles 1.0 Type LibraryWWIAzAuthorizationStore InterfaceWWWIAzApplications InterfaceWIAzApplication InterfaceWWIAzScopes InterfaceWWWIAzScope InterfaceIAzApplicationGroups InterfaceIAzApplicationGroup InterfaceWIAzRoles InterfaceIAzRole InterfaceWIAzTasks InterfaceIAzTask InterfaceWIAzOperations InterfaceWWWIAzOperation InterfaceIAzClientContext Interface IAzAuthorizationStore2 InterfaceWWIAzApplication2 InterfaceWIAzClientContext2 InterfaceWWW IAzAuthorizationStore3 InterfaceWWIAzApplication3 InterfaceWIAzScope2 InterfaceWWWIAzRoleDefinitions InterfaceWWIAzRoleDefinition InterfaceWWWIAzRoleAssignments InterfaceWWIAzRoleAssignment InterfaceWWWIAzOperation2 InterfaceWWWIAzTask2 ClassIAzApplicationGroup2 InterfaceIAzClientContext3 InterfaceWWWIAzBizRuleParameters InterfaceIAzBizRuleInterfaces InterfaceIAzBizRuleContext InterfaceWWWIAzPrincipalLocator InterfaceWIAzNameResolver InterfaceWIAzObjectPicker InterfaceWAzAuthorizationStore ClassAzBizRuleContext ClassAzPrincipalLocator ClassWW@@@
@

d (,8@PXXhp L(0@H@X`px@4l@
T(0@H
`H
xWW$LDT
$ D!$$LD
$(D!$,LD
$0D!$4LD
$8D!$<LD	
$	@D!$
DLD4
$HD!
$LLD\
<
Pl	D

<Td	<Xd	<\d	$`LDP
$dLD
0hT	0lT	0pT	0tT	<xd	l$|D	$D	$TD0
<t	DP
<t	DP
0T	$TD`
<t	Dx
< t	D x
0!T	!8"l	"l1$#LD#D
0$T	$0%T	%$&LD&`
$'LD(
$(D!'$)LD)P
$*LD*
0+T	+0,T	,0-T	-0.T	.$/LD/D
00T	001T	102T	2``````````
`
``
``````````````````` `!`"`#`$`%`&`'`'`)`*`+`,`-`.`/`0`1`2`<<ppHp0h4Tt$`$hD88 Ll4X$Hl DhL<l,Pt@| Dt4X<lx0\D
$ LD4
$$LD\
 H0T4$LD
$ D!$$LDT
$(D!$,LD
$0D!$4LD
$8D!$<LD	
$	@D!$
DLD4
$HD!
$LLD
4
$
PD!$TLD\
<Xl	D
<\d	$`LDP
$dLD
0hT	0lT	0pT	0tT	$xTDH
<|t	D
<t	D
0T	$TD$

<t	D
 

<t	D
 

0T	
$TD`

< t	D 8P
<!t	D!8P
0"T	"8$#TD#`
<$t	D$x
<%t	D%x
0&T	&$'TD' 	
<(t	D(	

<)t	D)	

0*T	*	<+t	D+8
<,d	,<-d	-8.l	.l1X/	T/18
$0LD0D
01T	102T	2H3	D3 8
$4LD4P
$5LD5
06T	607T	708T	809T	9$:LD:D
0;T	;0<T	<``````````
`
````````````````````` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/`0`1`2`3`4`5`6`7`8`9`:`;`<`<<pp$$88Hp0h4l	x

		$dd	`		
4
d$h Ll4X$Hl DhX<l8h4X$`,hL	0	`				 
P



x0\D
$ LD4
$$LD\
 H0T$LD
$ D!$$LDT
$(D!$,LD
$0D!$4LD\
<8l	D
<<d	<	@d		<
Dd	
$HLDP
$LLD
0
PT	
0TT	0XT	0\T	$`TD`
<dt	Dx
<ht	Dx
0lT	$pTD 	
<tt	D	

<xt	D	

0|T		$TD`

<t	D8P
<t	D8P
0T	88l	l1$LD\
$LD\
$ LD P
$!LD!
0"T	"0#T	#0$T	$0%T	%`````````	`
```
``````````````````` `!`"`#`$`%`<<ppHp0h4`		
4
	$dd	| Ll$Hl8t4dT \(X Px0\D
$ LD4
$$LD\
 H0T$LD
$ D!$$LD
$(D!$,LD
$0D!$4LD
$8LD
$<LD
$	@LD	
$
DLDT
$HD!
0LT	0
PT	
0TT	0XT	0\T	0`T	0dT	0hT	$lLD\
<pl	D
<td	<xd	<|d	8l	l10T	0T	0T	0T	$LD
$LD
`````````	`
`
``
```````````````````44DD\t<< @XpHp,D$Hl Dh@p0TD|<`x0\D
$ LD4
$$LD\
 H0T$LD
$ D!$$LDT
$(D!$,LD
$0D!04T	08T	0<T	0	@T		0
DT	
0HT	0LT	0
PT	
$TLD\
<Xl	D
<\d	$`LD
$dLD
$hLD
$lLD
<pd	<td	8xl	l10|T	0T	$LD
`````````	`
```
``````````````<<ppP	d	|		@XHp\		,$Hl8h(X|<`4dx0\D
$ LD4
$$LD\
 H0TL$LD
$ D!$$LDT
$(D!$,LD
$0D!$4LD
$8D!$<LD	
$	@D!$
DLD
$HD!
$LLD
\
$
PD!$TLD
$XLD
0\T	
0`T	
0dT	0hT	$lLD\
<pl	D
<td	<xd	<|d	8l	l1``````````
`
```````````````<<pp







		|		P	d	Hp$Hl Dh@p$`x0\D
$ LD4
$$LD\
 H0T$LD
$ D!$$LDT
$(D!$,LD
$0D!$4LD
$8D!$<LD\
<	@l	D	
<
Dd	
8Hl	l1`````````	`
``<<pp`
`
Hp$Hl D`	D	8Tp
$ L	DH
$$LD
$(LD
$,LD
$0LD
$4LD
$8LD
$<LD
<	@l	D	
8
Dt	T
1(
$HLD
$LD!`````````	`
```$lpDD8\<x<t	D
<t	D
``$@<H	Dh
<t	Dh
``lHHP	D Pd|
0TT	$XD	$\D	$`D!$dLDP
``````,88Hx$L	D
$L	D
$D	 0\	D 
0d	`````<l$HlL0\	D
0d	D
0 d	D
$$D	$(TD\
0,d	D\
00d	D\
$4D	$8TD
0	<d	D	(L
0
@d	D
(L
$DD	($HLD
 
$
LD!`````````	`
````@pPh0`8\(P$TD\
0d	D\
0d	D\
$D	$TD
0d	D(L
0d	D(L
$D	(````````@pPh$T,x0\D
$ LD4
$$LD\
 H0T<t	D
$D	0$D	0$TD\
````P@<`x0\D
$ LD4
$$LD\
 H0T$D	0$D	0$TD\
$TD
````P@$Hl<<Lt	D
`<<t	D
`$LD
$D!$LD
$D!$LD
$D!<t	D
```````





$HlHh|	D
<ll	D	
0pd	D$

0td	D`

$xTD 
$|TD8
<l	D
$LD
````````$@ptH,h0T	0 T	p0$\	D
$(D	<,4	$0LD4
``````t(X 0`<d	 < d	<$t	 $(D	,4	$0LD4
``````8T(X <x$D!$ D!$$LDH
0(\	D
````Hhh$HlH$TDP 
$ TD!
``x !$x<t	D 
< t	D8 L d 
`` <xT	Dp!!L d !
$ LD
``h!T($X$@@ X!($$@@0!D!4444444@4@4	4@
4@44
4444444444 44d4:4e444ȯ4f4x 4g!4h"4i#4j$4%4,&4-'4.(4/)40*41+4,4@-4.4/404142434445464748494:4;4<4=4>4?4@@4A4B4C4D4E4F4XG4YH4I4J4K4L4M4N4O4P4Q4 R4!S4T4"U4#V4W4X4Y4Z4[4\4]4^4_4`4a4@@@@@@@@@	@
@@@
@@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@x"""""#<#d#####$<$h$$$$$ %H%x%%%&8&h&&&&,'\''''(@(`((((( )L)t))))*@*`*****$+H+p++++,D,l,,,,-<-\----.<.l....0/h////(0L0|0000181`11112D2(<Pdx,@Th|0DXl 4H\p$8L`t(<Pdx,@Th|0DXl)1
B}3b)6\:FILEREGISTRYTYPELIBMUIMUIen-US444444444445|666666666666666666667P:T:X:<=@=D=H=L=P=T=X=`=d=h=l=p=t=x=|=================================>>>>>>>> >$>(>,>0>4>8><>@>D>H>L>P>T>X>\>`>h>l>p>t>x>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???????? ?$?(?,?0?4?8?<?@?D?H?L?P?T?X?\?`?d?h?l?p?t?x?|????????????????????????????????? l00000000 0$0(0,0004080<0@0D0H0L0P0T0X0\0`0d0h0l0p0t0x0|0000000000000000000000000000000011111111 1$1(1,1014181<1@1D1H1L1P1T1X1\1`1d1h1l1p1t1x1|1111111111111111111111111111111122222222 2$2(2,2024282<2@2D2H2L2P2T2X2\2`2d2h2l2p2t2x2|22222222222222222222222222222222233333333 3$3(3,3034383<3@3D3H3L3P3T3X3\3`3d3h3l3p3t3x3|333333333333333333333h4p4x444444444444 6,6d6p6|6666 7$7(7,707D7H7L7P7T7X7\7`7d7h7l7p7t7x7|77777777777777`8d8h8l8p8t8>>>0L12222222222223333,3034383<3@3D3H3L3P3T3X3\3`3d3p3px1|11111111111111111111111111111111122222222 2$2(2,2024282<2@2D2H2L2P2T2X2\2`2d2h2l2p2t2x2|22222222222222222222222222222222233333333 3$3(3,3034383<3@3D3H3L3P3T3X3\3`3d3h3l3p3t3x3|33333333333333333333333333333333344444444 4$4(4,4044484<4@4D4H4L4P4T4X4\4`4d4h4l4p4t4x4|4444444444444444444444444444444555`5d5h5l5p5t5x5|55555555555555555555555555555555566666666 6$6(6,6064686<6@6D6H6L6P6T6X6\6`6d6h6l6p6t6x6|666666666666666666777777 7$7(7,7074787<7@7D7H7L7P7T7X7\7`7d7h7l7p7t7x7|777777777777777788888888 8$8(8,8084888<8@8D8H8L8P8T8X8\8`8d8h8l8p8t8x8|8888888888888888888888888888888899999999 9$9(9,9094989<9@9D9H9L9P9T9X9\9`9d9h9l9p9t9x9|9999999999999:::: :$:(:,:0:4:8:<:@:D:H:L:P:T:X:\:`:d:h:l:p:t:x:|::::::::::::::::::::::::::::::::;;;;;;;; ;$;(;,;0;4;8;<;@;D;H;L;P;T;X;\;`;d;h;l;p;t;x;|;;;;;;;;;;;;;;;;;;;;<<<<<<<< <$<(<,<0<4<8<<<@<D<H<L<P<T<X<\<`<d<h<l<p<t<x<|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====X=\=`=d=h=l=p=t=x=|=================================>>>>>>>> >$>(>,>0>4>8><>@>D>H>L>P>T>X>\>`>d>h>l>p>t>x>|>>>>>>>>>>>>0004181<1@1D1H1`4d4h4l4p4t4x4|444444444444444445555555$5L5P5T5X5\5`5d5h5l5p5t5x55555555555555566666 6$6(6,6064686D6l6p6t6x6|666666666666666666666677777 7$7(7,7074787D7l7p7t7x7|777777777$P5T5X5\5`5d5h5l5p5t5x5|5(>66 \=`=d=h=l=p=x======:::::::;; <8@8D8H8888888889999999 9$9999:::::::: :$:(:,:0:4:8:<:@:D:H:L:P:T:X:\:`:d:h:l:p:t:x:|:::::::::::::::::::::::::::::::::;;;;;;;; ;$;(;,;0;4;8;<;@;D;H;L;P;T;X;\;`;d;h;l;p;t;x;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<l<p<t<x<|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<======== =$=(=,=0=4=8=<=@==========8><>@>D>H>L>P>T>X>0222@4444 4$4(4,404:::::::::::P;T;X;\;`;d;h;l;p;t;x;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;d<h<l<p<t<`L11111112<2t2x2<4@466778Q8_8m8{88999:::G:<===pH111%2256X:i:::::{;;<n<<<=(=B=>>4>>>J>(?K?u???`00:111282u222:4A4H4N4n4t444444595;;;</<f<f=v==X>??#?*?4?:?C?J?w???0J0t000001o122&232<2C2G2M2Q2W2[2a2e2k2u2~22223;333s44445D5555617777|8889P999=::::::;;;;5<B<h<==
>/>>^?{????70001!1112i2222333G4f44566!636W6t666666737P7778'878H88889+9<9B:R:}::::::;*;;;;;<9<<g=== >K>>>>?=?h?~?????l0000F12223B3k333w4445D555?666a77778888999:<:::B;;[<q<<<<====>|901p2
44 404`44444	5595g555~6666789::::::;/;G;h;;;;;<"<F<^<<<<<=-=D===>>>>>?{?000000151w1	2#2t222
3(384L44444788888889
9n9w9999S:Y:f:~::::(;1;b;;;;;%<O<y<<<=7=R=Y=|==>>X>_>y>>>?a?h????0/0t000,1y111122O2u2223I3u333333
464_444444)5{5555(6Q6r666	7%7777777 8=8Z8x888889929899E::::?;q;x;;;;0<B<>=V=i=====">:>M>b>i>~>>>??k?x?00*0V0000111!1C1W1o111111$2-2S22D3K33444)5a5555696`66666667T7x77778$848:8888889$9T9^9~9999:-::::::;4;\;;;;<-<X<|<<<<<!=+=\=f======X>^>>>>>>?c?????0000\0000001C1l1111222222333-3a33334.4Z4444
565T5e5l555+6N666666707?7y777788E8R88888889999999:5:i:p:::::";K;t;;;;!<M<y<<<<<Z=`======>D>m>>>>???????0
070C0000011K1122!2'242I2}22222T3Z3`333333a4g444444455555&6,667-7H7z7777778"8F8W8k8888888!9M9y99999:F:r::::: ;&;,;Q;i;|;;;;;;
<<#<t<z<<<<<=?=F=V=a==!>6>I>j>u>>>>>>???'?D?Y?f???? 0001c11233&4]4z44444"5M55555556(66666677r7777	8M8~888
9J9b9s99990:::	;;/;G;N;_;q;;;;;;;;<<l<w<<<<<-=8=j=u====
><>G>\>o>>> ?+?@?S??0
00-0@0000001R1]111111122>2P2m2222233.3A3O333334$4244444	555555	6W6b666667 7T7l7s77777788.8?8X8_8888c99:,:;<8===>>?2?D?????@0g0000021A1K1[1f1l1r111122&2B2M2^2r2y22383[3m33334'424C4g4n4t44@556666#6^6667r777)8b888888919S9e999990:o:::,;k;;;;<(<J<\<<<=P===>'>J>\>}>>>>>?)?L?^???P0V0001V11112(2I2l2~22263v333*4X4444455P5556>6x6667d7777#848U8z888889(999t999=:::;I;;;;
<<?<d<u<<<<<=#=D=i=z====
>F>>>>>>?Y???`
0I000051p111202A2b222222353F3g33334N4e4t444444
5#525[5l5556[666
7E7s77778.8{889}999:::;'=.=s=8>Y>>>>?"?7?L?R?x?~?????p00D0J01&161Q11111
222?2S2_2222223366!6.66667A7777Z8a8g888z999::::::<<<<!=(=.=}===>>>"?)?/?b??X'0.0;0000001113#3*373<6<]<r<<<<<==.=:=T=`=j====>_>>><???0_000;11132T2x22222323J3k333334%4I4a4444455V5w55555616U6m666667'7H7l777778&8>8_8888889=9b::::;U;;;<3<]<o<<<<<====6>L>i>t>000i44G55555m66666@7L7Y77868\8t8888<9n999999:4:V:]:m:w:|:::;#;3;=;B;;;;;;<<Y<<<<<<<=K=o=v====>C>l>>>>>>>'?Q?????00112s22R3^3~44445;5A5a5555556W6x66666767Z7u7{777783898Y8888889K9999993:9:Y::::::;O;p;;;;;;;<(<5<R<_<|<<<<=>f>>>????0_00061112V2n2222q6w6666666666666666667#7B7H7x778848L8_888%9/9N9]9u99999::*:B:V:::::;;F;N;f;u;;;;;<!<9<H<e<v<<<<<==8=I=}======>>P>Z>>>>>>>#?-?c?m?????c0000000/17111112222`2h22333<3P3W3333333-4;4A4g4|444495\5b5i55555$696O6`6t667%717H7v7777E8e8t888889$9;9J9S9c9j999999:::%:g:t:::::::::+;8;D;J;P;p;;;;;;"</<Q<e<l<<<<<<=D=R=X=x=====>O>U>q>>>>??A?b??00<0N0W00000181>1D1m11112?2F2N2)5A5T555566S6666667<7N777778+8Q8b88888899"9(9.9|9	:::#:O:j:}::;;;;@<<<<Y===>>>@>K>f>y>>?!?6?I????0000(11162<2223&3W3344"464m4444455?5d5r5x555555555566#6(6.6;6A6J6O6V6^6e6l6r6x6~6666666|7788J999j:::::;;Y;z;;;<<%<X<<<<<==%=0=b=l====$>*>d>r>???70H0_0w00000+1J1[1}111112'2>2{222223333334*5I5b5h5w5555566
66N666667737:7v77778 8%8a88888999+939;9G9L9Q9r9x99999999999::':,:6:B:O:T:/=K=R====>>>?0 0+0^2h223i5u5{555555666!7a778a8g888F99:9:I:;$;*;c;;;;;<,<D<S<]<m<{<h===#>;>q>>>>>-?G?~?? 0000"111#2.2E2h2222223@3Q333304y4556707778M8[88839N99[:f:z::::;*;i;n;;;;<'<k<p<<<<=N=S=u=====>;>@>c>>>>>?B?Q???000&0e0j00000.1i111122 2?2U22222303Y3`3g3n3u3|334#4Y4t4444455	6646P6c666667/787M7Y777777778'8:888888889#9D9_9h9n9z99999?:D:e:::::*;/;P;b;t;};;;<e<j<<<<<=j=~=>>>>>?Z?`???@30j0s00000011/151:1Q1e111112(282\222313C4R444555*666667-7b77777777	8[88888889939S9~9999:4:d::::%;b;;;;<#<b<;=l====>>>?e????P0$000012-282q444/55566777h88888889)9c999999d::;d;x;;;V<m<<<<<<<=2=S=n====>>>?\?r????`=0J00051g111152O222223!313J33R4n4t44455#5p55555555G6^667>7M7W7j7y777888888879\9f9n9999999::^:::];g;o;<*<2<U<s<<=L=P=T=X=\=`=d=h=l=p==n>>>>>>?2?N?V?`?h???p50]0}000003111@22*3>3J3v333333D4p444444455 5I5k5{5556;6K6`6s6666667/7[77^888888889d9u99D:n:::;;;;S<<+=0=H=g=o=|===3>>>????]1222444444R5556"6)6I6P6^6}666666677^7l777888&9I9T9\9999:A:G:S:t:::;;;;<F<<<<==>>>???01d1v12e22'3C3Y3s333334A4_445S5556(6u6667I7o777777 8>8H8j88"9=9E9l9z999999:C:W:b:j:::::/;9;A;j;;<<0<Q<Y<<<<<<<<=j=t=|===<>B>
??*0]0t001M1
2%2;2j2222N4Z4z44465<555P6]666678888839t999:$;T;f;;;<,<D<<&=a==>>>M>W>>>????0001111)2A2q333U44444)5N5i5%6@66666667777888889999:::2;9;v;<====>\>x>}>4?:?R?X?000D0K0000n222223323s33334o44444585I5R5[555555566=66667Q8888%9<9P9l99999:#:::H:\:~:::*;Z;`;w;};;;;<e<k<<<<<=7=A=I=k===	>>>>{?*00b1111112+23345;5A555*6v667(707J7w77*8K888889!91989q999999::6:a::;;+;F;;;;;t<y<~<<=C=J====(>Q>>>`?000112222=203P333333#44&5Q5W5g5m555556"6266666667R7X7m7s7777788.8888C9c99999:3:F:t:::;(;\;u;;;$<=<<<<<====>>1?d+02001103>3S3f333334&4A4R4d44R555566:8Q889::D;X;^;;;]<<<<=0?c?j???0$001V1\1n1v112;22t3333^45 5K5Q5a5566)7/7977889s::::::::::::;@;H;\;;;;><X<<<<<=8=j===>H>d>>>>6?M?v??d0Y0q0001*1I1o111'2/2L222313L3n33333C4g4|4E5889E<u<<v===>.>>>>>>I??? +0K0n00111C2{222222"3+3333
434<444444$5:5556666663777Q8Z88M:_:g::4;Q;;;<<<<H=N=\=b====>>>?/???M?V?????0030;0L0k000q1|1112O22k33333334=4o4444444E55555K6667)7>7{777M8W889O99999#:>:W:::::::);Q;;;;;8<U<y<<<@==>w>>O???@=0l0"1*1Y111T22223'3C3M3w3333A4444444
5$5D55555566Z7777778~88C::T;*<<<=%==>u>>>?j?|?????P0J0{0000191112%2>2c22233T3333334494K4s4444575m55556'6:6F6i6w6677M888'959D9T9_9u99999?::::J;`;;;;<<<:<A<X<y<<<<<8=B=K=i=======>9>M>u>>?5?E?w????`00%050O0`00000000
1C1s11111112q2233344#4~444445!556,6>6J6a6f6t66666667B7777898I8O8o8|8888888)979=9b9u9999:8:d:k::::::::::*;R;e;;;;;;;<$<6<<<<z======>U>q>?E?L?j????p0 0=0Y0p0000001 1G1`1w111b2228333333333404>4J4l4x4444444451585 62676N6c6h6r778J8Y8h8p8x888889u999:G:::;H;Y;;;;$<<<<<==9=g====>$>=>>>>>>??%?}???0;0E0p0000&1P1X1^1l1~11111112]2e2222 3333344+4V444455<5v55556;6D6f6u6666-787?7L7[7h7r777778$8J8a8w888889999:7:X:k:::';M;;<<M<p<<<<====>>0>O>W>v>>>>>?)?v?????
0C000=1{11222F33334444405>5o5~556E666667,7;7n777808@8J8V8d8r88889
99F9]999":H:e:~::::::;*;A;L;f;;;;Q<[<g<<<<<<<	==+=Q=`=r====>>Z>?p?00-070C00000#1`1p1112;2W2g2222333!3)373H3Z3{33333
4#4r4444
5'5B5P5j5t55656R6^6h6666666-747V7r7w77777788M8R8f8888889C9999Q:\:t:::::::::	;;,;7;i;;;<S<a<i<<=2=:=D=h===>>h00.000011123/4#5M5U5i55556N6l667!7V7t7778:8i888-959M9999<:n:::<<>x00000003494n44444475t5 6%6*666P6w66-7Y7778v888999T:m::::::;T;===>>?????&0-0:0C0`0~0000u11111252x2222&3>3E3_3333m455X555556778$8<8E8{8888992999:$::5;W;a;{;;;;	<-<L<e<=
??????????00012+2a2}222383a3333334!404A4I4S4c44444%515:5R5556
6H6O6_66677$747C7S7m7~77I8O8Z888899:::;;&<-<j<<Q====><>J>X>k>u>>>>K?R?a?u?|?????d00001-2i334C444415Q5X5h555667>8S88888<9T9d9p9x9}99999:_:i:s::::::::;%;,;3;:;@;R;m;;;;;;;<<(<<<I<`<w<<<<<<<<	===8=H=V=]=h=|==========	>>>!>&>,>s>>>>??'?>???????00)070Z0c0}00000&1;111o222223I3333X44444455<5D5d5l5555555 686L6666h7u7777778-8{888889Z999::q::;;;;;<)<Q<_<z<<<K====>=>>>>>>?L?f???x0000!1111]222383M3[33444555F5P5}555777,888=8@9M9994:=:m:v::0;;;;<n>w>>>>?'?Y?h?? X0\0`0d0h0l0p0t0x0|0111111L2\2q222L33336444555666S7Z7i777	8(8488999:,:G::;;;y;;<<<<<<="=F=]==>&>>>>?Y??00&0000004111I2\2l23@3333~444557555X6667S777#8K88899$:M:~::;;;<[<<<=,=|===6>>>E?w??@'0f0v0(1w1|11112b223A3333M4Q4U4Y4]4a4e4i4m4q4}44.5p556@6677'777%8V8899"999:;;;;;;<
<<)<1<]<<<<=5=v===3>?>S>s>>>?C?q???P010041F11^2313X333-4^4444{55556^6666666_777_8888x999::;;;<%<?<Z<q<<<<<}====????`0K0z01/1N1e11112222223[3|333
44$4E4{44445"5Q555567Q77788809W999:Z::::;;;W;z;;;;;;
<<<.<x<=
==8=>=P=j=z=====;>>>>>?)?<?????px&0H0Y000(1L1x11%2g2223363336Z7777777778:8C8h8889;9E99999b:::;";Z=>>>>>$?+??&0-0b0x00001-1J1i2222223o666677778=8d8z88888899:::';G;a;;;;<=<I<Y<t<<<p=>7>G>X>`>h>>>>>>[?m?}?????&070h001111:2Y222P333333333
4$4I4i4p4{45)525s555H6b6|6667*7777808|889'9U9:2:9:R:q:::
;;1;?;T;j;;;;;;;<8<<<<<<=r====>J>[>q>>>>	?1??,000000'2,22282>2D2J2P2V2\2b2h2n2t2z222222222222222222222222222233	34444444444455555 5&5,52585>5D5J5P5V5\5b5h5n5t5z55555555555555555555555555555556666666i7n7t7z777777777777777777777788888888#8'8+8/83878;8?8C8G8K8O8S8W8[8_8888899999#9)9/959@9D9H9L9P9T9X9\9`9d9h9l9:":(:.:4:::@:F:L:R:X:^:d:j:p:v:|:::::::::::::::::E;J;P;V;\;b;h;n;t;z;;;;;;;;;;;;<<<<<<K<c<<<<<=>[>>>>>?<?^?????0 0n0000+1T1}132
323Z3333
464b44566666778
8889+9k9999:K:Z:x::::::;;;,;J;l;r;z;;;;;;;;< <<<<<<<<<<	=!=6=;=A=Y=^=j=z==========>>>>3>L>V>r>>?t$0.00001z11111292t223$303C3b3n3z33333B4N4555-5A5I5j5r555555R66677.7n7z78*88888888899!9)9C9I9O9U9[9a9h9o9v9}9999999999999999::: :,:8:D:P:\:h:t::::::::::::;;P;^;;;;;;;;;s<<<<<'======>>>>>%>.>;>I>S>]>g>q>{>>>>>>>>>>>>>>???%?/?9?C?M?W?d?x?}???????????,000/040D0I0Y0^0n0s0000000000000111*161B1N1Z1f1r1~1111111111112	2J2b2g2n2v2~22222333*3/353F3Z3n3z3333334!4S4~4445&5P5z5555?6666>7f7u777778D8d8889&9F9f99999:O:::;>;^;~;;;;;<><f<<<<=6=f====>8>X>x>>>>?A?q????070F000001O111111"2Z22223#3D3l3{3333333@4O4_444455/5?5O5p5555555566/6?6O6_6666666787X7777778X889399999::1:Y:::::::::;1;C;O;U;Y;_;q;v;{;;;;;;;;;;;;;;;;;;;;;;;;;;	<<<<<"<'<,<7<<<A<F<K<P<U<Z<_<d<i<n<s<x<}<<<<<<<<<<<<<<<<<<<<<<<====== =%=*=/=4=9=>=C=H=S=]=n=x============>>
>>(>P>X>`>>>>>>>>?(?0?P?t?????????0040@0`0l00000001,1<1P1X1x111111112282H2T2\2222222333$3H3\3d3|333333333484D4L4l4444444455,50585@5H5L5T5h5p555555556 6D6P6X6p6|66666677@7T7l7p777777777888<8`8l8t88888899$9D9h9t9|999999:$:,:L:p:|::::::::::;;;;; ;4;<;D;L;P;T;\;p;x;;;;;;;;<<0<8<@<H<P<h<|<<<<<<<<<== =8=D=l========>@>L>T>t>>>>>>>?$?H?T?\?|??????00$000P0\0|00000001141<1H1h1p1|11111122,20282@2d2p2x22222333$3H3T3\3t3|33333334,484@4X4d44444444444445555,505L5P5X5\5d5h5p5t55555555555555556 6,6\6`6h6l6t6x66666666667$7T7X7`7d7t7777777788$8,8@8H8d8l888888888889(909D9P9X9p99999999999::$:<:D:X:`:p:::::::;;,;0;L;P;l;p;;;;;;;;;;<$<0<8<h<<<<<<<<<<=$=,=8=X=d========>>,>0>8>D>d>p>>>>>>>>????<?D?P?p?|??????????00,040@0`0h0t0000000000011,181X1d11111111222<2D2h2t2|222222223$3,3D3P3p3x33333333334444$4D4L4X4|444444444455,585X5d55555555556 6(6,64686@6D6L6P6X6\6d6h6p6t6|66666667787X7t7x777@`04444 4$4(4,4044484D4H4L4P4T4X4\4h4l4p4444444455(5,5D5`5x5|55555555566 6$6<6@6X6\6t6x666666666777 787<7T7X7p7t77777788$8(8@8D8\8`8x8|8888888899 9999999999999999999::: :$:(:,:0:4:8:@:H:L:P:T:\:h::::::::=4>8><>@>D>H>L>P>T>X>p>>>>>>>??(?<?P?d?|???????P0$080`0t0000011,1@1T1h1|1111112,2@2T2p2x2222222222222222222222233D3H3T3d3t33333334444$444T4t44444445545D5T5d5t555555555555566666 6$6(6,6064686<6@6D6P6`666666667777$7(74787D7H7d7h7t7x777777777777777777888888 8$8@8D8H8`8d8h8888888888888@9X9l9p9t9x9|9999999999999999999999999999999::::::::::::::;;,;<;`11111112222 2$2,24282@2H2L2T2\2`2p2t22222222222222333$3(383<3L3P3X3`3d3l3t3x333333333333333333334444 4(4,4<4@4H4P4T4d4h4x4|444444444444444455555$5,50585@5D5T5X5`5h5l5|555555555555555566666 6(60646<6D6H6X6\6l6p666666666666666667777 7$7,74787@7H7L7\7`7h7p7t7|7777777777777777888$8(8,808<8@8P8`889999999 9(9,9094989<9@9H9L9P9T9X9\9`9d9h9l9p9t9x9|99999999999999999999

Anon7 - 2022
AnonSec Team