first commit
This commit is contained in:
commit
a78bffee63
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
!.gitignore
|
||||||
|
sqlite/*
|
||||||
|
log/*
|
||||||
|
tmp/*
|
||||||
|
export/*
|
||||||
|
config.ini
|
24
.vscode/launch.json
vendored
Normal file
24
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
|
||||||
|
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
|
||||||
|
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "PowerShell",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "PowerShell Launch Current File",
|
||||||
|
"script": "${file}",
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${file}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "PowerShell",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "PowerShell Launch Current File",
|
||||||
|
"script": "${file}",
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${file}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
ews/EwsManagedApi.msi
Normal file
BIN
ews/EwsManagedApi.msi
Normal file
Binary file not shown.
145
functions/activedirectory_function.ps1
Normal file
145
functions/activedirectory_function.ps1
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
# Active Directory Modul laden
|
||||||
|
Import-Module ActiveDirectory
|
||||||
|
|
||||||
|
|
||||||
|
function SYNC-ADUser {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$USERNAME,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
$Position,
|
||||||
|
[Parameter(Position = 3, Mandatory = $true)]
|
||||||
|
$Abteilung,
|
||||||
|
[Parameter(Position = 4, Mandatory = $true)]
|
||||||
|
$Tel,
|
||||||
|
[Parameter(Position = 5, Mandatory = $true)]
|
||||||
|
$Fax,
|
||||||
|
[Parameter(Position = 6, Mandatory = $false)]
|
||||||
|
$Manager,
|
||||||
|
[Parameter(Position = 7, Mandatory = $true)]
|
||||||
|
$Mobile,
|
||||||
|
[Parameter(Position = 8, Mandatory = $true)]
|
||||||
|
$HomeMobile
|
||||||
|
|
||||||
|
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "Start SYNC-ADUser"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
$ADUSER = Get-AdUser $USERNAME -Properties Title, telephoneNumber, SamAccountName, OfficePhone, Manager, facsimileTelephoneNumber, Department, mehrkanalHomemobile, mobile, ipphone
|
||||||
|
if ($?) {
|
||||||
|
if ($ADUSER.Enabled -eq $true) {
|
||||||
|
if ($ADUSER.telephoneNumber -ne $Tel.trim()) {
|
||||||
|
if ($Tel.trim() -eq "") {
|
||||||
|
Set-ADuser -identity $USERNAME -Clear 'telephoneNumber'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'telephoneNumber' = $Tel.trim()}
|
||||||
|
}
|
||||||
|
Write-Log -Message "$($USERNAME): Tel angepasst $($Tel.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
if ($null -eq $ADUSER.ipphone) {
|
||||||
|
if ( $Tel -match "020127303-") {
|
||||||
|
$IPPHONE = $tel.Replace("020127303-", "")
|
||||||
|
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
|
||||||
|
}elseif ( $Tel -match "0201-27303-") {
|
||||||
|
$IPPHONE = $tel.Replace("0201-27303-", "")
|
||||||
|
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
|
||||||
|
}elseif ( $Tel -match "0201 27303-") {
|
||||||
|
$IPPHONE = $tel.Replace("0201 27303-", "")
|
||||||
|
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
|
||||||
|
}elseif ( $Tel -match "0201273034") {
|
||||||
|
$IPPHONE = $tel.Replace("020127303", "")
|
||||||
|
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
|
||||||
|
}
|
||||||
|
Write-Log -Message "$($USERNAME): IP-Phone angepasst $($Tel.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
if ($ADUSER.facsimileTelephoneNumber -ne $Fax.trim()) {
|
||||||
|
if ($Fax.trim() -eq "") {
|
||||||
|
Set-ADuser -identity $USERNAME -Clear 'facsimileTelephoneNumber'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'facsimileTelephoneNumber' = $Fax.trim()}
|
||||||
|
}
|
||||||
|
Write-Log -Message "$($USERNAME): Fax angepasst $($Fax.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
if ($ADUSER.department -ne $Abteilung.trim()) {
|
||||||
|
if ($Abteilung.trim() -eq "") {
|
||||||
|
Set-ADuser -identity $USERNAME -Clear 'department'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'department' = $Abteilung.trim()}
|
||||||
|
}
|
||||||
|
Write-Log -Message "$($USERNAME): Abteilung angepasst $($Abteilung.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
if ($ADUSER.Title -ne $Position.trim()) {
|
||||||
|
if ($Position.trim() -eq "") {
|
||||||
|
Set-ADuser -identity $USERNAME -Clear 'Title'
|
||||||
|
Write-Log -Message "$($USERNAME): Position entfernt" -Level Warn
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'Title' = $Position.trim()}
|
||||||
|
Write-Log -Message "$($USERNAME): Position angepasst $($Position.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if ($MANAGER -ne $null) {
|
||||||
|
$GETCURMANAGER = (Get-ADUser $USERNAME -properties manager).manager
|
||||||
|
if ( $GETCURMANAGER -ne $null ){
|
||||||
|
$CURRENTMANAGER = $(Get-ADUser (Get-ADUser $USERNAME -properties manager).manager -ErrorAction SilentlyContinue).UserPrincipalName
|
||||||
|
}else{
|
||||||
|
$CURRENTMANAGER = ""
|
||||||
|
}
|
||||||
|
if ($CURRENTMANAGER -ne $MANAGER) {
|
||||||
|
$NEWMANAGERDN = $(Get-ADUser -filter { UserPrincipalName -eq $Manager }).distinguishedName
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'Manager' = $NEWMANAGERDN}
|
||||||
|
Write-Log -Message "$($USERNAME): MANAGER angepasst $($NEWMANAGERDN)" -Level Warn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "$($USERNAME): Kein MANAGER vorhanden" -Level Info
|
||||||
|
}
|
||||||
|
if ($ADUSER.mobile -ne $Mobile.trim()) {
|
||||||
|
if ($Mobile.trim() -eq "") {
|
||||||
|
Set-ADuser -identity $USERNAME -Clear 'mobile'
|
||||||
|
Write-Log -Message "$($USERNAME): Kein mobile vorhanden" -Level Info
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'mobile' = $Mobile.trim()}
|
||||||
|
Write-Log -Message "$($USERNAME): Mobile angepasst $($Mobile.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if ($ADUSER.mehrkanalHomemobile -ne $HomeMobile.trim()) {
|
||||||
|
if ( [string]$ADUSER.mehrkanalHomemobile -ne [string]$HomeMobile.trim()) {
|
||||||
|
if ($HomeMobile.trim() -eq "") {
|
||||||
|
Set-ADuser -identity $USERNAME -Clear 'mehrkanalHomemobile'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Set-ADuser -identity $USERNAME -Replace @{'mehrkanalHomemobile' = $HomeMobile.trim()}
|
||||||
|
}
|
||||||
|
Write-Log -Message "$($USERNAME): HomeMobile angepasst $($HomeMobile.trim())" -Level Warn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#echo "$($USERNAME);$($ADUSER.telephoneNumber);$($Tel.trim());$($ADUSER.facsimileTelephoneNumber);$($Fax.trim());$($ADUSER.department);$($Abteilung.trim());$($ADUSER.Title);$($Position.trim());$($CURRENTMANAGER);$($Manager);$($ADUSER.mobile);$($Mobile.trim());$($ADUSER.mehrkanalHomemobile);$($HomeMobile.trim())"
|
||||||
|
# Return $true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - SYNC-ADUser - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop SYNC-ADUser"
|
||||||
|
}
|
||||||
|
}
|
374
functions/exchange_function.ps1
Normal file
374
functions/exchange_function.ps1
Normal file
@ -0,0 +1,374 @@
|
|||||||
|
function Create-ExMsalToken {
|
||||||
|
$msalParams = @{
|
||||||
|
ClientId = '#TOREPLACE#'
|
||||||
|
TenantId = '#TOREPLACE#'
|
||||||
|
ClientSecret = ('#TOREPLACE#' | ConvertTo-SecureString -AsPlainText -Force)
|
||||||
|
Scopes = "https://outlook.office.com/.default"
|
||||||
|
}
|
||||||
|
$script:TOKEN = Get-MsalToken @msalParams
|
||||||
|
$TOKENTEST = $TOKEN
|
||||||
|
#Write-Host "neuer Token - Expire $($token.ExpiresOn.LocalDatetime) Check $($(Get-Date).AddMinutes(-5))"
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
function Get-ExMsalToken {
|
||||||
|
if($TOKEN -ne "") {
|
||||||
|
$DatePatternEX = "MM/dd/yyyy HH:mm:ss"
|
||||||
|
if ($( Get-Date ) -gt [datetime]::ParseExact($token.ExpiresOn.LocalDatetime, $DatePatternEX, $null).AddMinutes(-5)) {
|
||||||
|
$msalParams = @{
|
||||||
|
ClientId = '#TOREPLACE#'
|
||||||
|
TenantId = '#TOREPLACE#'
|
||||||
|
ClientSecret = ('#TOREPLACE#' | ConvertTo-SecureString -AsPlainText -Force)
|
||||||
|
Scopes = "https://outlook.office.com/.default"
|
||||||
|
}
|
||||||
|
Write-Host "refresh Token - Expire $($token.ExpiresOn.LocalDatetime) Check $(Get-Date)"
|
||||||
|
$script:TOKEN = Get-MsalToken @msalParams
|
||||||
|
Return $TOKEN
|
||||||
|
} else {
|
||||||
|
Write-Host "Alter Token - Expire $($token.ExpiresOn.LocalDatetime) Check $(Get-Date)"
|
||||||
|
Return $TOKEN
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
$msalParams = @{
|
||||||
|
ClientId = '#TOREPLACE#'
|
||||||
|
TenantId = '#TOREPLACE#'
|
||||||
|
ClientSecret = ('#TOREPLACE#' | ConvertTo-SecureString -AsPlainText -Force)
|
||||||
|
Scopes = "https://outlook.office.com/.default"
|
||||||
|
}
|
||||||
|
$script:TOKEN = Get-MsalToken @msalParams
|
||||||
|
Write-Host "neuer Token - Expire $($token.ExpiresOn.LocalDatetime) Check $(Get-Date)"
|
||||||
|
Return $TOKEN
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function New-CalendarItem {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$Subject,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
$Body,
|
||||||
|
[Parameter(Position = 3, Mandatory = $true)]
|
||||||
|
$Start,
|
||||||
|
[Parameter(Position = 4, Mandatory = $true)]
|
||||||
|
$End,
|
||||||
|
[Parameter(Position = 5, Mandatory = $false)]
|
||||||
|
$RequiredAttendees,
|
||||||
|
[Parameter(Position = 6, Mandatory = $false)]
|
||||||
|
$OptionalAttendees,
|
||||||
|
[Parameter(Position = 7, Mandatory = $false)]
|
||||||
|
$Location,
|
||||||
|
[Parameter(Position = 8, Mandatory = $false)]
|
||||||
|
$Impersonate,
|
||||||
|
[Parameter(Position = 9, Mandatory = $false)]
|
||||||
|
$AdminUser,
|
||||||
|
[Parameter(Position = 10, Mandatory = $false)]
|
||||||
|
$FreeBusyStatus = "Busy"
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "New-CalendarItem"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
# Wenn der Server kein EWS / Exchange installiert hat, muss EwsManageApi.msi installiert werden....
|
||||||
|
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
|
||||||
|
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
|
||||||
|
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
|
||||||
|
$Service.UseDefaultCredentials = $false
|
||||||
|
$token = Get-ExMsalToken
|
||||||
|
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
|
||||||
|
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
|
||||||
|
$CleanGlobalObjectId = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Meeting, 0x23, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary);
|
||||||
|
$psPropSet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties);
|
||||||
|
$psPropSet.Add($CleanGlobalObjectId);
|
||||||
|
}catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - New-CalendarItem - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if ($Impersonate) {
|
||||||
|
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
|
||||||
|
$service.ImpersonatedUserId = $ImpersonatedUserId
|
||||||
|
}
|
||||||
|
|
||||||
|
$appointment = New-Object Microsoft.Exchange.WebServices.Data.Appointment -ArgumentList $service
|
||||||
|
$appointment.Subject = $Subject
|
||||||
|
$appointment.Body = $Body
|
||||||
|
$appointment.LegacyFreeBusyStatus = $FreeBusyStatus
|
||||||
|
$appointment.Categories.Add('Personio')
|
||||||
|
|
||||||
|
$appointment.Start = $Start
|
||||||
|
$appointment.End = $End
|
||||||
|
if ($RequiredAttendees) {
|
||||||
|
$RequiredAttendees | % { [void]$appointment.RequiredAttendees.Add($_) }
|
||||||
|
}
|
||||||
|
if ($OptionalAttendees) {
|
||||||
|
$OptionalAttendees | % { [void]$appointment.RequiredAttendees.Add($_) }
|
||||||
|
}
|
||||||
|
if ($Location) {
|
||||||
|
$appointment.Location = $Location
|
||||||
|
}
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Schreibe Eindeutige ID im Kalendereintrag als Extendet Property
|
||||||
|
# und übergebe dies am Script
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
echo $appointment
|
||||||
|
$appointment.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy) | out-null
|
||||||
|
|
||||||
|
$appointment.Load($psPropSet);
|
||||||
|
$CalIdVal = $null;
|
||||||
|
$tmpvar = $appointment.TryGetProperty($CleanGlobalObjectId, [ref]$CalIdVal);
|
||||||
|
$CalIdVal64 = [Convert]::ToBase64String($CalIdVal) | Select -Last 1
|
||||||
|
Return "$($CalIdVal64)"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - New-CalendarItem - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop SET-UserVacationHelperTable"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Send-ErrorMail {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$Mail,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
$VACSTART,
|
||||||
|
[Parameter(Position = 3, Mandatory = $true)]
|
||||||
|
$VACENDE,
|
||||||
|
[Parameter(Position = 4, Mandatory = $true)]
|
||||||
|
$VACID
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "Send-ErrorMail"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
$server = $ini.email.server
|
||||||
|
$from = $ini.email.from
|
||||||
|
$to = $ini.email.to
|
||||||
|
$subject = "Fehler bei der EWS-Schnittstelle - Personio"
|
||||||
|
$body = "Es ist ein Fehler passiert,<br><br>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Bezeichnung</th>
|
||||||
|
<th>Wert</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Benutzer</td>
|
||||||
|
<td>$($Mail)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Urlaubsbeginn</td>
|
||||||
|
<td>$($VACSTART)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Urlaubsende</td>
|
||||||
|
<td>$($VACENDE)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>UrlaubsID</td>
|
||||||
|
<td>$($VACID)</td>
|
||||||
|
</tr>
|
||||||
|
</table><br><br>
|
||||||
|
|
||||||
|
Bitte prüfen und korrigieren"
|
||||||
|
send-mailmessage -from $from -to $to -subject $subject -body $body -BodyAsHtml -smtpServer $server -Port 26
|
||||||
|
Return $true
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Send-ErrorMail - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop Send-ErrorMail"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-CalendarItem {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$CALID,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
$Impersonate
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "Remove-CalendarItem"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
# Wenn der Server kein EWS / Exchange installiert hat, muss EwsManageApi.msi installiert werden....
|
||||||
|
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
|
||||||
|
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
|
||||||
|
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
|
||||||
|
$Service.UseDefaultCredentials = $false
|
||||||
|
$token = Get-ExMsalToken
|
||||||
|
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
|
||||||
|
}catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - New-CalendarItem - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if ($Impersonate) {
|
||||||
|
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
|
||||||
|
$service.ImpersonatedUserId = $ImpersonatedUserId
|
||||||
|
}
|
||||||
|
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "$($Impersonate)")
|
||||||
|
$Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)
|
||||||
|
Write-Host "CAL: $($CALID.Replace("Microsoft.Exchange.WebServices.Data.Appointment ",''))"
|
||||||
|
$CalIdVal64 = "$($CALID.Replace("Microsoft.Exchange.WebServices.Data.Appointment ",''))"
|
||||||
|
$CleanGlobalObjectId = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Meeting, 0x23, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary);
|
||||||
|
$ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1)
|
||||||
|
$sfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo($CleanGlobalObjectId, $CalIdVal64);
|
||||||
|
$fiResult = $Calendar.FindItems($sfSearchFilter, $ivItemView)
|
||||||
|
if ( ($fiResult.Items[0]).Categories -eq "Personio") {
|
||||||
|
$fiResult.Items[0].Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
|
||||||
|
}
|
||||||
|
Return $true
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber) - CALID: $([string]$CALID)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop Remove-CalendarItem"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-CalendarItemByDate {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$Start,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
$End,
|
||||||
|
[Parameter(Position = 3, Mandatory = $true)]
|
||||||
|
$Impersonate
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "Remove-CalendarItem"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
|
||||||
|
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
|
||||||
|
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
|
||||||
|
$Service.UseDefaultCredentials = $false
|
||||||
|
$token = Get-ExMsalToken
|
||||||
|
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
|
||||||
|
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
|
||||||
|
if ($Impersonate) {
|
||||||
|
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
|
||||||
|
$service.ImpersonatedUserId = $ImpersonatedUserId
|
||||||
|
}
|
||||||
|
|
||||||
|
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "$($Impersonate)")
|
||||||
|
$Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)
|
||||||
|
|
||||||
|
$CalendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView($Start, $End, 1000)
|
||||||
|
$fiItems = $service.FindAppointments($Calendar.Id, $CalendarView)
|
||||||
|
|
||||||
|
foreach ($Item in $fiItems.Items) {
|
||||||
|
if ($item.Categories -ccontains "Personio") {
|
||||||
|
"Start : " + $Item.Start
|
||||||
|
"Subject : " + $Item.Subject
|
||||||
|
$Item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Return $true
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop Remove-CalendarItem"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Remove-DupCalendarItem {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$START,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
$END,
|
||||||
|
[Parameter(Position = 3, Mandatory = $true)]
|
||||||
|
$Impersonate,
|
||||||
|
[Parameter(Position = 3, Mandatory = $true)]
|
||||||
|
$USERID
|
||||||
|
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "Remove-DupCalendarItem"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
# Wenn der Server kein EWS / Exchange installiert hat, muss EwsManageApi.msi installiert werden....
|
||||||
|
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
|
||||||
|
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
|
||||||
|
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
|
||||||
|
$Service.UseDefaultCredentials = $false
|
||||||
|
$token = Get-ExMsalToken
|
||||||
|
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
|
||||||
|
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
|
||||||
|
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
|
||||||
|
if ($Impersonate) {
|
||||||
|
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
|
||||||
|
$service.ImpersonatedUserId = $ImpersonatedUserId
|
||||||
|
}
|
||||||
|
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "$($Impersonate)")
|
||||||
|
$Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)
|
||||||
|
$CalendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView($START, $END , 1000)
|
||||||
|
$fiItems = $service.FindAppointments($Calendar.Id, $CalendarView)
|
||||||
|
if ($($fiItems | where { $_.Categories -ccontains "Personio" -and $_.Start -eq $START -and $_.End -eq "$END" }).Count -gt 1) {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($($START)) bis $($($END)) für $($USERID) Anzahl $($($fiItems | where { $_.Categories -ccontains "Personio" -and $_.Start -eq $START -and $_.End -eq "$END" }).Count) mehrfach vorhanden... delete wird anhand Datum durchgeführt" -Level WARN
|
||||||
|
foreach ($Item in $($fiItems.items | where { $_.Categories -ccontains "Personio" -and $_.Start -eq $START -and $_.End -eq "$END" })) {
|
||||||
|
$CalIdVal = $null;
|
||||||
|
$psPropSet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties);
|
||||||
|
$CleanGlobalObjectId = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Meeting, 0x23, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary);
|
||||||
|
$psPropSet.Add($CleanGlobalObjectId);
|
||||||
|
$ItemLoad = $item.Load($psPropSet);
|
||||||
|
$GetProp = $item.TryGetProperty($CleanGlobalObjectId, [ref]$CalIdVal);
|
||||||
|
$EXCHANGEID = [Convert]::ToBase64String($CalIdVal) | Select -Last 1
|
||||||
|
$EXPERID = $(GET-SQLITEByExID -USERID "$($USERID)" -EXID $EXCHANGEID).Id
|
||||||
|
if ( $EXPERID -eq $null ) {
|
||||||
|
$Item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
|
||||||
|
Write-Log -Message "Kalendereintrag: $($($Item.Start)) bis $($($Item.End)) für $($USERID) - $($EXCHANGEID) mehrfach vorhanden... delete wird anhand Datum durchgeführt" -Level WARN
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop Remove-DupCalendarItem"
|
||||||
|
}
|
||||||
|
}
|
37
functions/functions.ps1
Normal file
37
functions/functions.ps1
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[CmdletBinding()]
|
||||||
|
param (
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
|
||||||
|
[ValidateScript({ Test-Path -PathType:Leaf -Path:$_ })]
|
||||||
|
[string] $IniFile
|
||||||
|
)
|
||||||
|
|
||||||
|
begin {
|
||||||
|
Write-Verbose "$($MyInvocation.Line)"
|
||||||
|
$iniObj = @{}
|
||||||
|
}
|
||||||
|
|
||||||
|
process {
|
||||||
|
switch -regex -File $IniFile {
|
||||||
|
"^\[(.+)\]$" {
|
||||||
|
$section = $matches[1]
|
||||||
|
$iniObj[$section] = @{}
|
||||||
|
}
|
||||||
|
"(?<key>^[^\#\;\=]*)[=?](?<value>.+)" {
|
||||||
|
$key = $matches.key.Trim()
|
||||||
|
$value = $matches.value.Trim()
|
||||||
|
if ( ($value -like '$(*)') -or ($value -like '"*"') ) {
|
||||||
|
$value = Invoke-Expression $value
|
||||||
|
}
|
||||||
|
if ( $section ) {
|
||||||
|
$iniObj[$section][$key] = $value
|
||||||
|
} else {
|
||||||
|
$iniObj[$key] = $value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
end {
|
||||||
|
return $iniObj
|
||||||
|
}
|
131
functions/json_function.ps1
Normal file
131
functions/json_function.ps1
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
function ConvertFrom-Json2{
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
The ConvertFrom-Json cmdlet converts a JSON-formatted string to a custom object (PSCustomObject) that has a property for each field in the JSON
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
The ConvertFrom-Json cmdlet converts a JSON-formatted string to a custom object (PSCustomObject) that has a property for each field in the JSON
|
||||||
|
|
||||||
|
.PARAMETER InputObject
|
||||||
|
Specifies the JSON strings to convert to JSON objects. Enter a variable that contains the string, or type a command or expression that gets the string. You can also pipe a string to ConvertFrom-Json.
|
||||||
|
|
||||||
|
.PARAMETER MaxJsonLength
|
||||||
|
Specifies the MaxJsonLength, can be used to extend the size of strings that are converted. This is the main feature of this cmdlet vs the native ConvertFrom-Json2
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
|
||||||
|
|
||||||
|
DisplayHint : 2
|
||||||
|
|
||||||
|
DateTime : Friday, January 13, 2012 8:06:31 PM
|
||||||
|
|
||||||
|
Date : 1/13/2012 8:00:00 AM
|
||||||
|
|
||||||
|
Day : 13
|
||||||
|
|
||||||
|
DayOfWeek : 5
|
||||||
|
|
||||||
|
DayOfYear : 13
|
||||||
|
|
||||||
|
Hour : 20
|
||||||
|
|
||||||
|
Kind : 2
|
||||||
|
|
||||||
|
Millisecond : 400
|
||||||
|
|
||||||
|
Minute : 6
|
||||||
|
|
||||||
|
Month : 1
|
||||||
|
|
||||||
|
Second : 31
|
||||||
|
|
||||||
|
Ticks : 634620819914009002
|
||||||
|
|
||||||
|
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
|
||||||
|
|
||||||
|
Year : 2012
|
||||||
|
|
||||||
|
This command uses the ConvertTo-Json and ConvertFrom-Json cmdlets to convert a DateTime object from the Get-Date cmdlet to a JSON object.
|
||||||
|
|
||||||
|
The command uses the Select-Object cmdlet to get all of the properties of the DateTime object. It uses the ConvertTo-Json cmdlet to convert the DateTime object to a JSON-formatted string and the ConvertFrom-Json cmdlet to convert the JSON-formatted string to a JSON object..
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\>$j = Invoke-WebRequest -Uri http://search.twitter.com/search.json?q=PowerShell | ConvertFrom-Json
|
||||||
|
|
||||||
|
This command uses the Invoke-WebRequest cmdlet to get JSON strings from a web service and then it uses the ConvertFrom-Json cmdlet to convert JSON content to objects that can be managed in Windows PowerShell.
|
||||||
|
|
||||||
|
You can also use the Invoke-RestMethod cmdlet, which automatically converts JSON content to objects.
|
||||||
|
Example 3
|
||||||
|
PS C:\>(Get-Content JsonFile.JSON) -join "`n" | ConvertFrom-Json
|
||||||
|
|
||||||
|
This example shows how to use the ConvertFrom-Json cmdlet to convert a JSON file to a Windows PowerShell custom object.
|
||||||
|
|
||||||
|
The command uses Get-Content cmdlet to get the strings in a JSON file. It uses the Join operator to join the strings in the file into a single string that is delimited by newline characters (`n). Then it uses the pipeline operator to send the delimited string to the ConvertFrom-Json cmdlet, which converts it to a custom object.
|
||||||
|
|
||||||
|
The Join operator is required, because the ConvertFrom-Json cmdlet expects a single string.
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Author: Reddit
|
||||||
|
Version History:
|
||||||
|
1.0 - Initial release
|
||||||
|
Known Issues:
|
||||||
|
1.0 - Does not convert nested objects to psobjects
|
||||||
|
.LINK
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact='Low')]
|
||||||
|
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[parameter(
|
||||||
|
ParameterSetName='object',
|
||||||
|
ValueFromPipeline=$true,
|
||||||
|
Mandatory=$true)]
|
||||||
|
[string]
|
||||||
|
$InputObject,
|
||||||
|
[parameter(
|
||||||
|
ParameterSetName='object',
|
||||||
|
ValueFromPipeline=$true,
|
||||||
|
Mandatory=$false)]
|
||||||
|
[int]
|
||||||
|
$MaxJsonLength = 204857600
|
||||||
|
|
||||||
|
)#end param
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
|
||||||
|
#Configure json deserializer to handle larger then average json conversion
|
||||||
|
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Web.Extensions')
|
||||||
|
$jsonserial= New-Object -TypeName System.Web.Script.Serialization.JavaScriptSerializer
|
||||||
|
$jsonserial.MaxJsonLength = $MaxJsonLength
|
||||||
|
|
||||||
|
} #End BEGIN
|
||||||
|
|
||||||
|
PROCESS
|
||||||
|
{
|
||||||
|
if ($PSCmdlet.ParameterSetName -eq 'object')
|
||||||
|
{
|
||||||
|
$deserializedJson = $jsonserial.DeserializeObject($InputObject)
|
||||||
|
|
||||||
|
# Convert resulting dictionary objects to psobjects
|
||||||
|
foreach($desJsonObj in $deserializedJson){
|
||||||
|
$psObject = New-Object -TypeName psobject -Property $desJsonObj
|
||||||
|
|
||||||
|
$dicMembers = $psObject | Get-Member -MemberType NoteProperty
|
||||||
|
|
||||||
|
# Need to recursively go through members of the originating psobject that have a .GetType() Name of 'Dictionary`2'
|
||||||
|
# and convert to psobjects and replace the current member in the $psObject tree
|
||||||
|
|
||||||
|
$psObject
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}#end PROCESS
|
||||||
|
|
||||||
|
END
|
||||||
|
{
|
||||||
|
}#end END
|
||||||
|
|
||||||
|
}
|
56
functions/log_function.ps1
Normal file
56
functions/log_function.ps1
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
function Write-Log {
|
||||||
|
[CmdletBinding()]
|
||||||
|
Param
|
||||||
|
(
|
||||||
|
[Parameter(Mandatory=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true)]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[Alias("LogContent")]
|
||||||
|
[string]$Message,
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$false)]
|
||||||
|
[Alias('LogPath')]
|
||||||
|
[string]$Path="$ScriptDir\log\$($LOGDATE)$($ini.general.logfile)",
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$false)]
|
||||||
|
[ValidateSet("Error","Warn","Info")]
|
||||||
|
[string]$Level="Info",
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$false)]
|
||||||
|
[switch]$NoClobber
|
||||||
|
)
|
||||||
|
|
||||||
|
Begin {
|
||||||
|
# Zeige Fehler in Konsole an
|
||||||
|
# $VerbosePreference = 'Continue'
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
|
||||||
|
$FormattedDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
||||||
|
|
||||||
|
switch ($Level) {
|
||||||
|
'Error' {
|
||||||
|
Write-Error $Message
|
||||||
|
$LevelText = "[$($OWNPID)] ERROR:"
|
||||||
|
}
|
||||||
|
'Warn' {
|
||||||
|
Write-Warning $Message
|
||||||
|
$LevelText = "[$($OWNPID)] WARNING:"
|
||||||
|
}
|
||||||
|
'Info' {
|
||||||
|
Write-Verbose $Message
|
||||||
|
$LevelText = "[$($OWNPID)] INFO:"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Schreibe Log in $Path
|
||||||
|
if (!(Test-Path $Path)) {
|
||||||
|
"$FormattedDate $LevelText $Message" | Out-File -Encoding "UTF8" -FilePath $Path
|
||||||
|
} else {
|
||||||
|
"$FormattedDate $LevelText $Message" | Out-File -Encoding "UTF8" -FilePath $Path -Append
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
}
|
||||||
|
}
|
133
functions/personio.ps1
Normal file
133
functions/personio.ps1
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
Function Get-Token
|
||||||
|
{
|
||||||
|
$creds = @{
|
||||||
|
client_id=$username
|
||||||
|
client_secret=$password
|
||||||
|
};
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$response = Invoke-RestMethod "$application/v1/auth" -Method Post -Body $creds;
|
||||||
|
#Write-Host "$response"
|
||||||
|
$token = $response.data;
|
||||||
|
return $token;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
$result = $_.Exception.Response.GetResponseStream();
|
||||||
|
$reader = New-Object System.IO.StreamReader($result);
|
||||||
|
#Write-Host $($response)
|
||||||
|
$reader.BaseStream.Position = 0;
|
||||||
|
$reader.DiscardBufferedData();
|
||||||
|
$responseBody = $reader.ReadToEnd() | ConvertFrom-Json
|
||||||
|
Write-Host "ERROR: $($responseBody.errorCode) - $($responseBody.message)"
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Function GET-ExchangeSubject($VacationType = "") {
|
||||||
|
if ($VacationType -eq "57659"){
|
||||||
|
$Response=@{Name="Mutterschutz"; Status="Busy"}
|
||||||
|
}elseif ($VacationType -eq "37147") {
|
||||||
|
$Response=@{Name="Elternzeit"; Status="Busy"}
|
||||||
|
}elseif ($VacationType -eq "46191" -or $VacationType -eq "37135" -or $VacationType -eq "46188") {
|
||||||
|
$Response=@{Name="Urlaub"; Status="Busy"}
|
||||||
|
}elseif ($VacationType -eq "48771") {
|
||||||
|
$Response=@{Name="Homeoffice"; Status="Free"}
|
||||||
|
}elseif ($VacationType -eq "48780") {
|
||||||
|
$Response=@{Name="Dienstreise"; Status="Busy"}
|
||||||
|
}elseif ($VacationType -eq "37138" -or $VacationType -eq "44790" -or $VacationType -eq "48777" -or $VacationType -eq "48774") {
|
||||||
|
$Response=@{Name="Abwesend"; Status="Busy"}
|
||||||
|
}elseif ($VacationType -eq "44787") {
|
||||||
|
$Response=@{Name="Berufsschule"; Status="Busy"}
|
||||||
|
}elseif ($VacationType -eq "48825") {
|
||||||
|
$Response=@{Name="Weiterbildung"; Status="Busy"}
|
||||||
|
}else{
|
||||||
|
$Response=@{Name="Abwesend"; Status="Busy"}
|
||||||
|
}
|
||||||
|
Return $RESPONSE
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Get-UserInfo
|
||||||
|
{
|
||||||
|
$Request = [System.UriBuilder]"$application/v1/company/employees"
|
||||||
|
|
||||||
|
# Setze TOKEN Header
|
||||||
|
$PERSONIO_TOKEN = Get-Token
|
||||||
|
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
|
||||||
|
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
|
||||||
|
|
||||||
|
$GetUserResult = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers -ContentType "application/json"
|
||||||
|
Return $GetUserResult
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Get-UserPicture{
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
$PersonioID
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
Write-Verbose "Get-UserPicture"
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
try {
|
||||||
|
$Request = [System.UriBuilder]"$application/v1/company/employees/$($PersonioID)/profile-picture/200"
|
||||||
|
|
||||||
|
# Setze TOKEN Header
|
||||||
|
$PERSONIO_TOKEN = Get-Token
|
||||||
|
|
||||||
|
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
|
||||||
|
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
|
||||||
|
$headers.Add("accept", "image/png")
|
||||||
|
#Invoke-WebRequest -UseBasicParsing -Verbose -Debug -Uri $Request.Uri -Method GET -Headers $headers -ContentType "image/png" -OutFile "C:\testbild.jpg" | Select-Object *
|
||||||
|
$test = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers # -ContentType "image/png"
|
||||||
|
Return $test
|
||||||
|
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
End {
|
||||||
|
Write-Verbose "Stop Get-UserPicture"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Get-UserVacation()
|
||||||
|
{
|
||||||
|
$STARTDATE="$((Get-Date).AddDays(-30).ToString('yyyy-MM-dd'))"
|
||||||
|
$DIFFDATE="$((Get-Date).AddDays(-1).ToString('yyyy-MM-dd'))"
|
||||||
|
$Request = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE"
|
||||||
|
#$Requestoffset = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE"
|
||||||
|
|
||||||
|
# Setze TOKEN Header
|
||||||
|
$PERSONIO_TOKEN = Get-Token
|
||||||
|
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
|
||||||
|
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
|
||||||
|
#$GetVacationResult2 = Invoke-WebRequest -UseBasicParsing -Uri $Requestoffset.Uri -Method GET -Headers $headers -ContentType "application/json"
|
||||||
|
#$json = $GetVacationResult2 | ConvertFrom-Json
|
||||||
|
#$json
|
||||||
|
#($json.psobject.properties.Value).total_pages
|
||||||
|
#exit
|
||||||
|
$GetVacationResult = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers -ContentType "application/json"
|
||||||
|
Return $GetVacationResult
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Function Get-DIFFUserVacation()
|
||||||
|
{
|
||||||
|
$STARTDATE="$((Get-Date).AddDays(-30).ToString('yyyy-MM-dd'))"
|
||||||
|
$DIFFDATE="$((Get-Date).AddDays(-1).ToString('yyyy-MM-dd'))"
|
||||||
|
$Request = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE&updated_from=$DIFFDATE"
|
||||||
|
#$Requestoffset = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE"
|
||||||
|
|
||||||
|
# Setze TOKEN Header
|
||||||
|
$PERSONIO_TOKEN = Get-Token
|
||||||
|
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
|
||||||
|
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
|
||||||
|
$GetVacationResult = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers -ContentType "application/json"
|
||||||
|
Return $GetVacationResult
|
||||||
|
}
|
61
functions/sqlite.ps1
Normal file
61
functions/sqlite.ps1
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
|
||||||
|
Function CREATE-SQLITE($USERID = "") {
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
$query = "CREATE TABLE vacation (
|
||||||
|
Id INTEGER PRIMARY KEY NOT NULL,
|
||||||
|
Mail NVARCHAR(250) NOT NULL,
|
||||||
|
Userid NVARCHAR(250) NOT NULL,
|
||||||
|
Firstname NVARCHAR(250) NOT NULL,
|
||||||
|
Lastname NVARCHAR(250) NOT NULL,
|
||||||
|
Vacexchangeid NVARCHAR(250),
|
||||||
|
Vactype NVARCHAR(250) NOT NULL,
|
||||||
|
Vacstart NVARCHAR(250) NOT NULL,
|
||||||
|
Vacend NVARCHAR(250) NOT NULL
|
||||||
|
)"
|
||||||
|
|
||||||
|
# SQLite erstellt die Datei automatisch
|
||||||
|
Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
}
|
||||||
|
|
||||||
|
Function INSERT-SQLITE($USERID = "", $MAIL = "", $FIRSTNAME = "", $LASTNAME = "", $VACPERSONIOID = "", $VAEXCHANGEID = 0, $VACTYPE = "", $VACSTART = "", $VACEND = "") {
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
$query = "INSERT INTO vacation(id, Mail, Userid, Firstname, Lastname, Vacexchangeid, Vactype, Vacstart, Vacend) VALUES ( '$($VACPERSONIOID)', '$($MAIL)', '$($USERID)', '$($FIRSTNAME)', '$($LASTNAME)', '$($VAEXCHANGEID)', '$($VACTYPE)', '$($VACSTART)', '$($VACEND)' );"
|
||||||
|
Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
}
|
||||||
|
|
||||||
|
Function DELETE-SQLITE($USERID = "", $VACPERSONIOID = "" ) {
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
$query = "DELETE FROM vacation WHERE id LIKE '$($VACPERSONIOID)';"
|
||||||
|
Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
}
|
||||||
|
|
||||||
|
Function GET-SQLITEByExID($USERID = "", $EXID = "") {
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
$query = "SELECT Id FROM ``vacation`` WHERE Vacexchangeid LIKE '%$($EXID)';"
|
||||||
|
$RESPONSE = Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
Return $RESPONSE
|
||||||
|
}
|
||||||
|
|
||||||
|
Function DELETE-WRONGSQLITEDATA($USERID = "" ) {
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
$query = "DELETE FROM vacation WHERE Vacexchangeid LIKE 'False';"
|
||||||
|
Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
}
|
||||||
|
Function GET-SQLITE($USERID = "", $VACPERSONIOID = "") {
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
$query = "SELECT * FROM vacation WHERE id LIKE '$($VACPERSONIOID)';"
|
||||||
|
$RESPONSE = Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
Return $RESPONSE
|
||||||
|
}
|
||||||
|
|
||||||
|
Function GET-SQLITEUSERAPPOINTMENTS($USERID = "") {
|
||||||
|
$STARTDATE="$((Get-Date).AddDays(-28).ToString('yyyy-MM-dd'))"
|
||||||
|
$db = "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
# $query = "SELECT id FROM vacation WHERE Userid LIKE '$($USERID)';"
|
||||||
|
$query = "SELECT Id FROM ``vacation`` WHERE DATE(substr(Vacstart,7,4)||'-'||substr(Vacstart,1,2)||'-'||substr(Vacstart,4,2)) BETWEEN DATE('$($STARTDATE)') AND DATE('2222-12-31') AND Userid LIKE '$($USERID)';"
|
||||||
|
|
||||||
|
$RESPONSE = Invoke-SqliteQuery -Query $query -DataSource $db
|
||||||
|
Return $RESPONSE
|
||||||
|
}
|
||||||
|
|
1
mk.bat
Normal file
1
mk.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
pwsh.exe -executionpolicy bypass -noprofile -windowstyle hidden -nologo -ExecutionPolicy ByPass -command "& 'C:\Aufgaben\personio\start.ps1'"
|
939
modules/ews/License Terms.rtf
Normal file
939
modules/ews/License Terms.rtf
Normal file
@ -0,0 +1,939 @@
|
|||||||
|
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff39\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe2052\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}
|
||||||
|
{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol{\*\falt Bookshelf Symbol 3};}
|
||||||
|
{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};}
|
||||||
|
{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}
|
||||||
|
{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Segoe UI;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma{\*\falt ?l?r ??u!??I};}
|
||||||
|
{\f40\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS{\*\falt Arial};}{\f41\fbidi \fnil\fcharset134\fprq2{\*\panose 00000000000000000000}@SimSun;}{\f42\fbidi \fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}
|
||||||
|
{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}
|
||||||
|
{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}
|
||||||
|
{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}
|
||||||
|
{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}
|
||||||
|
{\f44\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\f45\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}{\f47\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}
|
||||||
|
{\f48\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}{\f49\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\f50\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
|
||||||
|
{\f51\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\f52\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}{\f64\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
|
||||||
|
{\f65\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f67\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f68\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f69\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
|
||||||
|
{\f70\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f71\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f72\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}
|
||||||
|
{\f156\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt ?l?r ??\'81\'66c};}{\f154\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?l?r ??\'81\'66c};}{\f155\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?l?r ??\'81\'66c};}
|
||||||
|
{\f157\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?l?r ??\'81\'66c};}{\f158\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?l?r ??\'81\'66c};}{\f161\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?l?r ??\'81\'66c};}
|
||||||
|
{\f176\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\f176\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\f424\fbidi \fswiss\fcharset238\fprq2 Segoe UI CE;}
|
||||||
|
{\f425\fbidi \fswiss\fcharset204\fprq2 Segoe UI Cyr;}{\f427\fbidi \fswiss\fcharset161\fprq2 Segoe UI Greek;}{\f428\fbidi \fswiss\fcharset162\fprq2 Segoe UI Tur;}{\f429\fbidi \fswiss\fcharset177\fprq2 Segoe UI (Hebrew);}
|
||||||
|
{\f430\fbidi \fswiss\fcharset178\fprq2 Segoe UI (Arabic);}{\f431\fbidi \fswiss\fcharset186\fprq2 Segoe UI Baltic;}{\f432\fbidi \fswiss\fcharset163\fprq2 Segoe UI (Vietnamese);}{\f434\fbidi \fswiss\fcharset238\fprq2 Tahoma CE{\*\falt ?l?r ??u!??I};}
|
||||||
|
{\f435\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr{\*\falt ?l?r ??u!??I};}{\f437\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek{\*\falt ?l?r ??u!??I};}{\f438\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur{\*\falt ?l?r ??u!??I};}
|
||||||
|
{\f439\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew){\*\falt ?l?r ??u!??I};}{\f440\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic){\*\falt ?l?r ??u!??I};}{\f441\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic{\*\falt ?l?r ??u!??I};}
|
||||||
|
{\f442\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese){\*\falt ?l?r ??u!??I};}{\f443\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai){\*\falt ?l?r ??u!??I};}{\f444\fbidi \fswiss\fcharset238\fprq2 Trebuchet MS CE{\*\falt Arial};}
|
||||||
|
{\f445\fbidi \fswiss\fcharset204\fprq2 Trebuchet MS Cyr{\*\falt Arial};}{\f447\fbidi \fswiss\fcharset161\fprq2 Trebuchet MS Greek{\*\falt Arial};}{\f448\fbidi \fswiss\fcharset162\fprq2 Trebuchet MS Tur{\*\falt Arial};}
|
||||||
|
{\f451\fbidi \fswiss\fcharset186\fprq2 Trebuchet MS Baltic{\*\falt Arial};}{\f456\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\f466\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f464\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;}
|
||||||
|
{\f465\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f467\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f468\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f471\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;}
|
||||||
|
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
|
||||||
|
{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
|
||||||
|
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
|
||||||
|
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}
|
||||||
|
{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
|
||||||
|
{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
|
||||||
|
{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
|
||||||
|
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
|
||||||
|
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
|
||||||
|
{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}
|
||||||
|
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
|
||||||
|
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
|
||||||
|
{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
|
||||||
|
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}
|
||||||
|
{\fdbminor\f31560\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
|
||||||
|
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
|
||||||
|
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
|
||||||
|
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
|
||||||
|
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
|
||||||
|
{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
|
||||||
|
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
|
||||||
|
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\dbch\af11 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{
|
||||||
|
\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\snext0 \sautoupd \sqformat \spriority0 Normal;}{\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 \slink15 \sqformat heading 1;}{\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext2 \slink16 \sqformat heading 2;}{\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025
|
||||||
|
\ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 \slink17 \sqformat heading 3;}{\s4\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext4 \slink18 \sqformat heading 4;}{\s5\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\tx1792\jclisttab\tx2155\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl4\outlinelevel4\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af39\afs19\alang1025
|
||||||
|
\ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext5 \slink19 \sqformat heading 5;}{\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext6 \slink20 \sqformat heading 6;}{\s7\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl6\outlinelevel6\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext7 \slink21 \sqformat heading 7;}{\s8\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl7\outlinelevel7\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext8 \slink22 \sqformat heading 8;}{\s9\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl8\outlinelevel8\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext9 \slink23 \sqformat heading 9;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
|
||||||
|
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
|
||||||
|
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*
|
||||||
|
\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\lang0\langfe1033\kerning32\loch\f31502\hich\af31502\dbch\af31501\langnp0\langfenp1033 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\af39
|
||||||
|
\ltrch\fcs0 \b\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\langnp1033\langfenp1033 \sbasedon10 \slink2 \slocked Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af0\afs26 \ltrch\fcs0
|
||||||
|
\b\fs26\lang0\langfe1033\loch\f31502\hich\af31502\dbch\af31501\langnp0\langfenp1033 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0
|
||||||
|
\b\fs28\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink4 \slocked \ssemihidden \spriority9 Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \ab\ai\af0\afs26 \ltrch\fcs0
|
||||||
|
\b\i\fs26\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink5 \slocked \ssemihidden \spriority9 Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0
|
||||||
|
\b\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink6 \slocked \ssemihidden \spriority9 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af0\afs24 \ltrch\fcs0
|
||||||
|
\fs24\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink7 \slocked \ssemihidden \spriority9 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af0\afs24 \ltrch\fcs0
|
||||||
|
\i\fs24\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink8 \slocked \ssemihidden \spriority9 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af0 \ltrch\fcs0
|
||||||
|
\lang0\langfe1033\loch\f31502\hich\af31502\dbch\af31501\langnp0\langfenp1033 \sbasedon10 \slink9 \slocked \ssemihidden \spriority9 Heading 9 Char;}{\s24\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0
|
||||||
|
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Body 1;}{
|
||||||
|
\s25\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext25 Body 2;}{\s26\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 Body 3;}{\s27\ql \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1435\itap0 \rtlch\fcs1
|
||||||
|
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext27 Body 4;}{
|
||||||
|
\s28\ql \li1803\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1803\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext28 Body 5;}{\s29\ql \li2160\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Body 6;}{\s30\ql \li2506\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2506\itap0 \rtlch\fcs1
|
||||||
|
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 Body 7;}{
|
||||||
|
\s31\ql \li2863\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext31 Body 8;}{\s32\ql \li3221\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 Body 9;}{\s33\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin357\itap0
|
||||||
|
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 Bullet 1;}{\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 Bullet 2;}{
|
||||||
|
\s35\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 Bullet 3;}{\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0
|
||||||
|
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Bullet 4;}{\s37\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 Bullet 5;}{
|
||||||
|
\s38\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 Bullet 6;}{\s39\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin2506\itap0
|
||||||
|
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext39 Bullet 7;}{\s40\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 Bullet 8;}{
|
||||||
|
\s41\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon32 \snext41 Bullet 9;}{\s42\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
|
||||||
|
\ab\af39\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading EULA;}{\s43\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20
|
||||||
|
\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading Software Title;}{
|
||||||
|
\s44\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext44 Preamble;}{\s45\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 Preamble Border;}{\s46\qc \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
|
||||||
|
\ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext46 Heading Warranty;}{\s47\ql \fi-360\li360\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls11\outlinelevel0\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0
|
||||||
|
Heading 1 Warranty;}{\s48\ql \fi-360\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls11\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading 2 Warranty;}{\s49\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
|
||||||
|
\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon3 \snext49 Heading 3 Bold;}{\s50\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext50 Bullet 4 Underline;}{\s51\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
|
||||||
|
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon35 \snext51 Bullet 3 Underline;}{
|
||||||
|
\s52\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon25 \snext52 Body 2 Underline;}{\s53\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon26 \snext53 Body 3 Underline;}{\s54\ql \li0\ri0\sb120\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
|
||||||
|
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext54 \slink55 Body Text Indent;}{\*\cs55 \additive \rtlch\fcs1 \af39\afs19 \ltrch\fcs0
|
||||||
|
\f39\fs19\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink54 \slocked \ssemihidden Body Text Indent Char;}{\s56\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0
|
||||||
|
\rtlch\fcs1 \ai\af39\afs19\alang1025 \ltrch\fcs0 \i\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext56 Bullet 4 Italics;}{\*\cs57 \additive \rtlch\fcs1 \af39 \ltrch\fcs0
|
||||||
|
\f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 2 Char;}{\*\cs58 \additive \rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 3 Char;}{\*\cs59 \additive \rtlch\fcs1 \af39 \ltrch\fcs0
|
||||||
|
\f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 4 Char;}{\*\cs60 \additive \rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 1 Char;}{\s61\ql \li0\ri0\sb120\sa120\widctlpar\brdrt
|
||||||
|
\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon44 \snext61
|
||||||
|
Preamble Border Above;}{\s62\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext62 \slink63 \ssemihidden footnote text;}{\*\cs63 \additive \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang0\langfe1033\langnp0\langfenp1033
|
||||||
|
\sbasedon10 \slink62 \slocked \ssemihidden Footnote Text Char;}{\*\cs64 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{
|
||||||
|
\s65\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext65 \slink66 \ssemihidden endnote text;}{\*\cs66 \additive \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink65 \slocked \ssemihidden Endnote Text Char;}{\*\cs67 \additive \rtlch\fcs1
|
||||||
|
\af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden endnote reference;}{\s68\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext68 \slink69 \ssemihidden annotation text;}{\*\cs69 \additive \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang0\langfe1033\langnp0\langfenp1033
|
||||||
|
\sbasedon10 \slink68 \slocked \ssemihidden Comment Text Char;}{\*\cs70 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden annotation reference;}{\s71\ql \li0\ri0\sa160\sl-240\slmult0
|
||||||
|
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext71 Char;}{
|
||||||
|
\s72\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext72 Char Char Char Char;}{\*\cs73 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\s74\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
|
||||||
|
\af39\afs16\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext74 \slink75 \ssemihidden Balloon Text;}{\*\cs75 \additive \rtlch\fcs1 \af39\afs16 \ltrch\fcs0
|
||||||
|
\f39\fs16\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink74 \slocked \ssemihidden Balloon Text Char;}{\*\cs76 \additive \rtlch\fcs1 \ab\af40 \ltrch\fcs0 \b\f40\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Heading 2 Char1;}{\*\cs77
|
||||||
|
\additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s78\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext78 Char Char Char Char1;}{\s79\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025
|
||||||
|
\ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \styrsid8999754 Body 0 Bold;}{\s80\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
|
||||||
|
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \styrsid8999754 Body 0;}{\s81\ql \li0\ri0\sb120\sa120\widctlpar
|
||||||
|
\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext81 \slink82 \styrsid11496811 header;}{\*\cs82 \additive \rtlch\fcs1 \af39\afs19 \ltrch\fcs0 \f39\fs19\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink81 \slocked \ssemihidden Header Char;}{\s83\ql \li0\ri0\sb120\sa120\widctlpar
|
||||||
|
\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon0 \snext83 \slink84 \styrsid11496811 footer;}{\*\cs84 \additive \rtlch\fcs1 \af39\afs19 \ltrch\fcs0 \f39\fs19\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink83 \slocked \ssemihidden Footer Char;}{
|
||||||
|
\s85\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
\sbasedon68 \snext68 \slink86 \ssemihidden \sunhideused \styrsid11557916 annotation subject;}{\*\cs86 \additive \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\f39\fs20\lang0\langfe1033\langnp0\langfenp1033
|
||||||
|
\sbasedon69 \slink85 \slocked \ssemihidden \styrsid11557916 Comment Subject Char;}{\s87\ql \li720\ri0\widctlpar\wrapdefault\faauto\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0
|
||||||
|
\fs24\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext87 \sqformat \spriority34 \styrsid10771046 List Paragraph;}{\s88\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
|
||||||
|
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \snext88 \shidden \ssemihidden \styrsid11209574 Revision;}}{\*\listtable{\list\listtemplateid176468498\listhybrid{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid692200086\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s41\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listlevel\levelnfc23\levelnfcn23
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
|
||||||
|
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
||||||
|
\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760
|
||||||
|
\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
|
||||||
|
{\listname ;}\listid196815738}{\list\listtemplateid-1793664660{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0
|
||||||
|
\b\i0\fbias0 \s47\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s48
|
||||||
|
\fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1080
|
||||||
|
\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }
|
||||||
|
{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2
|
||||||
|
\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid394402059}{\list\listtemplateid1928476992{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s49\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255
|
||||||
|
\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255
|
||||||
|
\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname
|
||||||
|
;}\listid398796681}{\list\listtemplateid789093748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-317712510\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s34
|
||||||
|
\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }
|
||||||
|
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23
|
||||||
|
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
||||||
|
\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid477573462}{\list\listtemplateid1948578256{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
|
||||||
|
\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}
|
||||||
|
\rtlch\fcs1 \ab\ai0\af0\afs20 \ltrch\fcs0 \b\i0\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1
|
||||||
|
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1
|
||||||
|
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers
|
||||||
|
\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid630479929}{\list\listtemplateid67698717{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\'02\'01);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}
|
||||||
|
\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0
|
||||||
|
\fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2160
|
||||||
|
\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel
|
||||||
|
\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid700712945}{\list\listtemplateid-53848358{\listlevel\levelnfc0
|
||||||
|
\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s1\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4
|
||||||
|
\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s2\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2
|
||||||
|
\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s3\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3
|
||||||
|
\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \s4\fi-358\li1435\jclisttab\tx1437\lin1435 }
|
||||||
|
{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \s5\fi-357\li1792
|
||||||
|
\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \s6
|
||||||
|
\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0
|
||||||
|
\s7\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0
|
||||||
|
\s8\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0
|
||||||
|
\s9\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid752163927}{\list\listtemplateid2088029282{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}
|
||||||
|
\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}
|
||||||
|
\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}
|
||||||
|
\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}
|
||||||
|
\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid800729109}{\list\listtemplateid-296591990\listhybrid{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s40\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0
|
||||||
|
\fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23
|
||||||
|
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480
|
||||||
|
\jclisttab\tx6480\lin6480 }{\listname ;}\listid810947713}{\list\listtemplateid1567531878{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1
|
||||||
|
\ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1
|
||||||
|
\ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1
|
||||||
|
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1
|
||||||
|
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers
|
||||||
|
\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid826823576}{\list\listtemplateid2088029282{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel
|
||||||
|
\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel
|
||||||
|
\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel
|
||||||
|
\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel
|
||||||
|
\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname
|
||||||
|
;}\listid974869818}{\list\listtemplateid-1813845996\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s39\fi-357\li2506
|
||||||
|
\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320
|
||||||
|
\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23
|
||||||
|
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1219436735}{\list\listtemplateid-1921771298\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1797\lin1797 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
|
||||||
|
\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li2517\lin2517 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li3237\lin3237 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689
|
||||||
|
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3957\lin3957 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0
|
||||||
|
\fi-360\li4677\lin4677 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li5397\lin5397 }{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li6117\lin6117 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
|
||||||
|
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6837\lin6837 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li7557\lin7557 }{\listname ;}\listid1229919144}{\list\listtemplateid1578168882\listhybrid{\listlevel\levelnfc23\levelnfcn23
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
|
||||||
|
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689
|
||||||
|
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0
|
||||||
|
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
|
||||||
|
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
|
||||||
|
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1451585775}{\list\listtemplateid-41362566\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0
|
||||||
|
\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s36\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
|
||||||
|
\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }
|
||||||
|
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0
|
||||||
|
\fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname
|
||||||
|
;}\listid1559511898}{\list\listtemplateid-743794326\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid2033377338\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s35
|
||||||
|
\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440
|
||||||
|
}{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23
|
||||||
|
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
|
||||||
|
\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
||||||
|
\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1567649130}{\list\listtemplateid712936058{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
|
||||||
|
\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\i0\fs20\fbias0 \fi-504\li504\lin504 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'04\'00.\'01.;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0
|
||||||
|
\ltrch\fcs0 \b0\i0\fs20\fbias0 \fi-504\li504\jclisttab\tx720\lin504 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'02);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
|
||||||
|
\fi-504\li1008\jclisttab\tx1440\lin1008 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-504\li1512
|
||||||
|
\jclisttab\tx2160\lin1512 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-504\li2016\lin2016 }{\listlevel\levelnfc2
|
||||||
|
\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}
|
||||||
|
\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3240\lin3240 }{\listname ;}\listid1767579424}{\list\listtemplateid1363474438\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid-1175557160\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s37\fi-357\li1792\jclisttab\tx1795\lin1792 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
||||||
|
\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880
|
||||||
|
\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1848404271}{\list\listtemplateid-1802592190\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
|
||||||
|
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1229593488\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s38\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
||||||
|
\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040
|
||||||
|
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1877695764}
|
||||||
|
{\list\listtemplateid1186249844\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1637229796\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s33\fi-357\li357
|
||||||
|
\jclisttab\tx360\lin357 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel
|
||||||
|
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23
|
||||||
|
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
|
||||||
|
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
|
||||||
|
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
|
||||||
|
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
||||||
|
\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid2054619191}{\list\listtemplateid273449538{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
|
||||||
|
\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
|
||||||
|
\fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2160
|
||||||
|
\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }
|
||||||
|
{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc0
|
||||||
|
\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
|
||||||
|
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
|
||||||
|
\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
|
||||||
|
\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid2107119353}}{\*\listoverridetable{\listoverride\listid2054619191\listoverridecount0\ls1}
|
||||||
|
{\listoverride\listid477573462\listoverridecount0\ls2}{\listoverride\listid1567649130\listoverridecount0\ls3}{\listoverride\listid1559511898\listoverridecount0\ls4}{\listoverride\listid1848404271\listoverridecount0\ls5}{\listoverride\listid1877695764
|
||||||
|
\listoverridecount0\ls6}{\listoverride\listid1219436735\listoverridecount0\ls7}{\listoverride\listid810947713\listoverridecount0\ls8}{\listoverride\listid196815738\listoverridecount0\ls9}{\listoverride\listid398796681\listoverridecount0\ls10}
|
||||||
|
{\listoverride\listid394402059\listoverridecount0\ls11}{\listoverride\listid700712945\listoverridecount0\ls12}{\listoverride\listid826823576\listoverridecount0\ls13}{\listoverride\listid630479929\listoverridecount0\ls14}{\listoverride\listid800729109
|
||||||
|
\listoverridecount0\ls15}{\listoverride\listid974869818\listoverridecount0\ls16}{\listoverride\listid752163927\listoverridecount0\ls17}{\listoverride\listid398796681\listoverridecount0\ls18}{\listoverride\listid398796681\listoverridecount0\ls19}
|
||||||
|
{\listoverride\listid477573462\listoverridecount0\ls20}{\listoverride\listid1767579424\listoverridecount0\ls21}{\listoverride\listid1848404271\listoverridecount0\ls22}{\listoverride\listid1559511898\listoverridecount0\ls23}{\listoverride\listid1229919144
|
||||||
|
\listoverridecount0\ls24}{\listoverride\listid2107119353\listoverridecount0\ls25}{\listoverride\listid1451585775\listoverridecount0\ls26}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp12\itap0\li0\ri0\sb0\sa0}
|
||||||
|
{\pgp\ipgp10\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp7\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp3\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp4\itap0\li180\ri0\sb0\sa0}{\pgp\ipgp9\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li30\ri30\sb0\sa0}{\pgp\ipgp6\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp8
|
||||||
|
\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp11\itap0\li180\ri0\sb0\sa0}}{\*\rsidtbl \rsid17701\rsid72953\rsid82666\rsid223714\rsid345491\rsid425915\rsid480810\rsid525483\rsid535495\rsid544803\rsid555183\rsid620899\rsid676065\rsid745150\rsid750735\rsid787759
|
||||||
|
\rsid807330\rsid880667\rsid919473\rsid946929\rsid986785\rsid1004580\rsid1009112\rsid1012355\rsid1069033\rsid1070219\rsid1122066\rsid1135203\rsid1182701\rsid1187942\rsid1197297\rsid1205521\rsid1206375\rsid1245853\rsid1267697\rsid1325026\rsid1342505
|
||||||
|
\rsid1378777\rsid1468244\rsid1528414\rsid1529837\rsid1591306\rsid1643586\rsid1715365\rsid1790012\rsid1798131\rsid1800865\rsid1835081\rsid1839655\rsid1845488\rsid1850770\rsid1901753\rsid1977117\rsid1988606\rsid2062722\rsid2173756\rsid2239916\rsid2362164
|
||||||
|
\rsid2508786\rsid2571685\rsid2584538\rsid2643617\rsid2765700\rsid2775782\rsid2781980\rsid2784514\rsid2818569\rsid2830425\rsid2962852\rsid2979707\rsid2981673\rsid3042060\rsid3107942\rsid3157470\rsid3160965\rsid3162620\rsid3163049\rsid3287741\rsid3302393
|
||||||
|
\rsid3344199\rsid3370445\rsid3411320\rsid3411753\rsid3416253\rsid3439038\rsid3475551\rsid3611186\rsid3614681\rsid3625590\rsid3625793\rsid3674371\rsid3689565\rsid3702164\rsid3739474\rsid3743028\rsid3806252\rsid3812462\rsid3829127\rsid3885798\rsid3933870
|
||||||
|
\rsid3944889\rsid3962253\rsid4007067\rsid4022155\rsid4023230\rsid4090382\rsid4144829\rsid4149390\rsid4259872\rsid4273837\rsid4287357\rsid4287841\rsid4399340\rsid4417569\rsid4538731\rsid4595328\rsid4619217\rsid4658030\rsid4738534\rsid4739523\rsid4793230
|
||||||
|
\rsid4814690\rsid4851597\rsid4865423\rsid4878548\rsid4995346\rsid5010248\rsid5058088\rsid5062678\rsid5130298\rsid5140435\rsid5143448\rsid5185544\rsid5194221\rsid5250241\rsid5254144\rsid5405299\rsid5450553\rsid5459775\rsid5519492\rsid5525537\rsid5531230
|
||||||
|
\rsid5572633\rsid5647608\rsid5648152\rsid5657583\rsid5660926\rsid5665904\rsid5718961\rsid5773282\rsid5788093\rsid5901771\rsid5930271\rsid5966239\rsid6033147\rsid6042923\rsid6045985\rsid6119652\rsid6167424\rsid6168127\rsid6184270\rsid6227403\rsid6231754
|
||||||
|
\rsid6253534\rsid6304161\rsid6365404\rsid6373957\rsid6425843\rsid6432951\rsid6449534\rsid6453852\rsid6492030\rsid6498245\rsid6506467\rsid6626724\rsid6630303\rsid6641698\rsid6647886\rsid6754884\rsid6758513\rsid6779584\rsid6816025\rsid6839373\rsid6885748
|
||||||
|
\rsid6888647\rsid6889714\rsid6899077\rsid6947081\rsid6971210\rsid7028642\rsid7080371\rsid7082672\rsid7094917\rsid7100767\rsid7150562\rsid7168632\rsid7226971\rsid7282236\rsid7290457\rsid7345747\rsid7349188\rsid7410421\rsid7411492\rsid7428746\rsid7433926
|
||||||
|
\rsid7438204\rsid7495929\rsid7554964\rsid7561267\rsid7619174\rsid7633705\rsid7692510\rsid7749226\rsid7754893\rsid7800249\rsid7825850\rsid7878867\rsid8004214\rsid8132403\rsid8197303\rsid8214982\rsid8259998\rsid8279099\rsid8324055\rsid8324805\rsid8325040
|
||||||
|
\rsid8414966\rsid8419363\rsid8458805\rsid8545132\rsid8552108\rsid8671477\rsid8674164\rsid8679719\rsid8728036\rsid8738620\rsid8745808\rsid8747943\rsid8810985\rsid8812012\rsid8857738\rsid8858237\rsid8877942\rsid8999754\rsid9071447\rsid9117302\rsid9118858
|
||||||
|
\rsid9124886\rsid9142100\rsid9203972\rsid9261549\rsid9321702\rsid9338710\rsid9526807\rsid9531088\rsid9534527\rsid9636049\rsid9649378\rsid9651656\rsid9664357\rsid9713399\rsid9778027\rsid9796909\rsid9837726\rsid9857610\rsid9860938\rsid9861873\rsid9964378
|
||||||
|
\rsid9971637\rsid10225876\rsid10252851\rsid10294454\rsid10637243\rsid10749433\rsid10771046\rsid10813938\rsid10825913\rsid10882308\rsid10955317\rsid10974855\rsid11015316\rsid11084414\rsid11142543\rsid11209574\rsid11347136\rsid11366838\rsid11432977
|
||||||
|
\rsid11496811\rsid11498068\rsid11548826\rsid11557916\rsid11618558\rsid11622420\rsid11672016\rsid11686297\rsid11695497\rsid11738865\rsid11754382\rsid11762159\rsid11807423\rsid11874088\rsid11878701\rsid11879370\rsid11882246\rsid11937164\rsid12000701
|
||||||
|
\rsid12015935\rsid12020896\rsid12065226\rsid12087087\rsid12199483\rsid12211886\rsid12222130\rsid12259781\rsid12345846\rsid12351848\rsid12402797\rsid12407360\rsid12459773\rsid12585274\rsid12596065\rsid12664082\rsid12667062\rsid12722678\rsid12792728
|
||||||
|
\rsid12797652\rsid12798176\rsid12865903\rsid12877409\rsid12913505\rsid12939214\rsid12980473\rsid13047462\rsid13060950\rsid13136677\rsid13174497\rsid13309404\rsid13334496\rsid13388123\rsid13566345\rsid13633438\rsid13700619\rsid13716329\rsid13729220
|
||||||
|
\rsid13769310\rsid13828315\rsid13832939\rsid13850683\rsid13896616\rsid13908819\rsid13975879\rsid14047826\rsid14103326\rsid14120228\rsid14168694\rsid14223456\rsid14288874\rsid14293847\rsid14297853\rsid14311761\rsid14380549\rsid14382435\rsid14443673
|
||||||
|
\rsid14488677\rsid14491415\rsid14576599\rsid14681098\rsid14705568\rsid14771509\rsid14825379\rsid14830971\rsid14887834\rsid14889524\rsid14894057\rsid14897950\rsid14943232\rsid14950041\rsid15007790\rsid15083187\rsid15094097\rsid15167242\rsid15217928
|
||||||
|
\rsid15284219\rsid15366065\rsid15407327\rsid15409103\rsid15425551\rsid15427736\rsid15472048\rsid15493712\rsid15495555\rsid15545976\rsid15601712\rsid15620787\rsid15799222\rsid15811431\rsid15822672\rsid15870357\rsid15872081\rsid15925451\rsid15941484
|
||||||
|
\rsid16016124\rsid16130586\rsid16141742\rsid16190136\rsid16202142\rsid16324238\rsid16385696\rsid16393193\rsid16395859\rsid16406536\rsid16450365\rsid16542934\rsid16599017\rsid16609818\rsid16661796\rsid16712132\rsid16716683\rsid16733644\rsid16735789}
|
||||||
|
{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\creatim\yr2014\mo1\dy21\hr9\min59}{\revtim\yr2014\mo4\dy17\hr13\min43}{\version1}{\edmins0}{\nofpages3}{\nofwords1282}
|
||||||
|
{\nofchars7312}{\nofcharsws8577}{\vern57435}}{\*\userprops {\propname db_build_version}\proptype30{\staticval 2.6}{\propname db_charger_document_reference}\proptype3{\staticval 30113}{\propname db_charger_client_name}\proptype30{\staticval tbc}
|
||||||
|
{\propname db_charger_matter_number}\proptype30{\staticval tbc}{\propname autosave}\proptype30{\staticval false}{\propname owner}\proptype30{\staticval REDMOND\'5cyingchi}{\propname db_master_reference}\proptype30{\staticval USETERMS_MAINB}{\propname db_m
|
||||||
|
aster_version}\proptype30{\staticval 20081105a}{\propname db_master_clock}\proptype3{\staticval 975}{\propname db_master_name}\proptype30{\staticval Retail/OEM Software License Terms - Main}{\propname db_master_description}\proptype30{\staticval }
|
||||||
|
{\propname db_output_filter_reference}\proptype30{\staticval }{\propname db_base_url}\proptype30{\staticval http://usetermassembly/dealbuilder_live/DealBuilderNET/dealbuilder.aspx}{\propname ProductVersion}\proptype30{\staticval 0}{\propname MScom}
|
||||||
|
\proptype11{\staticval 0}{\propname LanguageAll}\proptype30{\staticval English}{\propname CanadaAvail}\proptype11{\staticval 1}{\propname CanadaFrench}\proptype11{\staticval 0}{\propname FileFormat}\proptype11{\staticval 1}{\propname SoftwareType}
|
||||||
|
\proptype30{\staticval Free, Standalone Software}{\propname ProductName}\proptype30{\staticval Exchange Web Services Managed API 1.0}{\propname NumberOfCopies}\proptype30{\staticval Any number of copies}{\propname StandaloneUseRight}\proptype30
|
||||||
|
{\staticval Only to design, develop and test the user's programs}{\propname MediaElementsTemplates}\proptype11{\staticval 0}{\propname DistributableCode}\proptype11{\staticval 1}{\propname DistributableCodeType}\proptype30{\staticval Redist.txt}
|
||||||
|
{\propname InternalReassignment}\proptype11{\staticval 0}{\propname LicenseTransfer}\proptype11{\staticval 0}{\propname OtherMicrosoftPrograms}\proptype11{\staticval 0}{\propname PrereleaseCode}\proptype11{\staticval 0}{\propname ThirdPartyPrograms}
|
||||||
|
\proptype11{\staticval 0}{\propname Benchmarking}\proptype11{\staticval 0}{\propname MPEG}\proptype11{\staticval 0}{\propname InternetBasedServices}\proptype11{\staticval 0}{\propname InternetBasedServicesFeaturesDescOther}\proptype30{\staticval }
|
||||||
|
{\propname db_commit}\proptype30{\staticval ProductVersion}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl720\margr720\margt720\margb720\gutter0\ltrsect
|
||||||
|
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting0\donotembedsysfont0\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
|
||||||
|
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace95\dgvspace180\dghorigin720\dgvorigin720\dghshow2\dgvshow1
|
||||||
|
\jexpand\viewkind1\viewscale204\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\rempersonalinfo
|
||||||
|
\allowfieldendsel\wrppunct\asianbrkrule\rsidroot10813938\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal
|
||||||
|
\nouicompat \fet0{\*\wgrffmtfilter 013f}\nofeaturethrottle1\ilfomacatclnup0
|
||||||
|
{\*\docvar {db_xml}{<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>\'0d<!DOCTYPE Document SYSTEM "..\'5cDocument.DTD">\'0d<Document><Control NAME="db_base_url" TYPE="string"><Value>http://usetermassembly/dealbuilder_live/DealBuilderNET/dealbuilder.aspx</Value></Control><C
|
||||||
|
ontrol NAME="db_folder_form" TYPE="string"><Value>microsoft</Value></Control><Control NAME="db_folder_stylesheet" TYPE="string"><Value>microsoft</Value></Control><Control NAME="db_folder_image" TYPE="string"><Value>microsoft</Value></Control><Control NAME
|
||||||
|
="db_charger_dataset_reference" TYPE="numeric"><Value>30112</Value></Control><Control NAME="db_charger_client_name" TYPE="string"><Value>tbc</Value></Control><Control NAME="db_charger_matter_number" TYPE="string"><Value>tbc</Value></Control><Control NAME=
|
||||||
|
"db_master_reference" TYPE="string"><Value>USETERMS_MAINB</Value></Control><Control NAME="db_master_publish_build" TYPE="string"><Value>2.6</Value></Control><Control NAME="db_master_name" TYPE="string"><Value>Retail/OEM Software License Terms - Main</Valu
|
||||||
|
e></Control><Control NAME="db_master_description" TYPE="string"><Value> </Value></Control><Control NAME="db_master_version" TYPE="string"><Value>20081105a</Value></Control><Control NAME="db_master_clock" TYPE="numeric"><Value>975</Value></Control><Control
|
||||||
|
NAME="db_master_refresh" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_host_create_onload" TYPE="string"><Value></Value></Control><Control NAME="db_host_input_onload" TYPE="string"><Value></Value></Control><Control NAME="db_host_output_on
|
||||||
|
load" TYPE="string"><Value></Value></Control><Control NAME="db_host_exception_onload" TYPE="string"><Value></Value></Control><Control NAME="db_host_javascript" TYPE="string"><Value></Value></Control><Control NAME="db_transaction_generator" TYPE="string"><
|
||||||
|
Value>unique</Value></Control><Control NAME="db_transaction_prefix" TYPE="string"><Value></Value></Control><Control NAME="db_transaction_suffix" TYPE="string"><Value></Value></Control><Control NAME="db_evaluate" TYPE="boolean"><Value>true</Value></Control
|
||||||
|
><Control NAME="db_evaluate_logic" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_repeat" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_cross_reference" TYPE="boolean"><Value>true</Value></Control><Control
|
||||||
|
NAME="db_evaluate_calculation" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_variable" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_include" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_c
|
||||||
|
odeload_include" TYPE="string"><Value>lazy</Value></Control><Control NAME="db_locale_input_date_sequence" TYPE="string"><Value>day_month_year</Value></Control><Control NAME="db_locale_input_thousands_char" TYPE="string"><Value>,</Value></Control><Control
|
||||||
|
NAME="db_locale_input_decimalpoint_char" TYPE="string"><Value>.</Value></Control><Control NAME="db_locale_output_date_sequence" TYPE="string"><Value>day_month_year</Value></Control><Control NAME="db_locale_output_thousands_char" TYPE="string"><Value>,</Va
|
||||||
|
lue></Control><Control NAME="db_locale_output_decimalpoint_char" TYPE="string"><Value>.</Value></Control><Control NAME="db_output_hyperlink_target" TYPE="string"><Value>_blank</Value></Control><Control NAME="db_output_document_format" TYPE="string"><Value
|
||||||
|
>rtf</Value></Control><Control NAME="db_output_document_redline" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_document_redline_cause" TYPE="string"><Value>drafting</Value></Control><Control NAME="db_output_document_drafting_notes"
|
||||||
|
TYPE="string"><Value>indefinite</Value></Control><Control NAME="db_output_document_properties" TYPE="string"><Value>true</Value></Control><Control NAME="db_output_document_property" TYPE="string"><Value>autosave|text|false</Value><Value>owner|text|REDMON
|
||||||
|
D\'5cyingchi</Value></Control><Control NAME="db_output_document_variable_xml" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_output_document_termsheet" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_document_answers" TYP
|
||||||
|
E="boolean"><Value>true</Value></Control><Control NAME="db_output_document_answers_column" TYPE="string"><Value>prompt</Value><Value>value</Value></Control><Control NAME="db_output_document_answers_row" TYPE="string"><Value>page</Value><Value>group</Value
|
||||||
|
><Value>sure</Value><Value>unsure</Value><Value>unknown</Value><Value>deferred</Value></Control><Control NAME="db_output_document_answers_relaunch_transaction_hyperlink" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_document_answer
|
||||||
|
s_relaunch_transaction_url" TYPE="string"><Value></Value></Control><Control NAME="db_output_filter_reference" TYPE="string"><Value></Value></Control><Control NAME="db_output_variable_as" TYPE="string"><Value>alias</Value></Control><Control NAME="db_output
|
||||||
|
_variable_highlights" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_variable_sequence" TYPE="string"><Value>ascending</Value></Control><Control NAME="db_output_white_space" TYPE="boolean"><Value>false</Value></Control><Control NAME
|
||||||
|
="db_output_line_breaks" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_show_column_headings" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_heading_repetition_column" TYPE="string"><Value>Repeat</Value></Control
|
||||||
|
><Control NAME="db_input_heading_highlight_column" TYPE="string"><Value>Check</Value></Control><Control NAME="db_input_heading_prompt_column" TYPE="string"><Value>Prompt</Value></Control><Control NAME="db_input_heading_question_column" TYPE="string"><Valu
|
||||||
|
e>Answer</Value></Control><Control NAME="db_input_heading_state_column" TYPE="string"><Value>Deferral</Value></Control><Control NAME="db_input_heading_guidance_column" TYPE="string"><Value>Guidance</Value></Control><Control NAME="db_input_heading_comment_
|
||||||
|
column" TYPE="string"><Value>Insert your comments below</Value></Control><Control NAME="db_input_heading_variable_name_column" TYPE="string"><Value>Variable</Value></Control><Control NAME="db_input_help_url" TYPE="string"><Value>/dealbuilder_live/help/dea
|
||||||
|
lbuilder/help.html</Value></Control><Control NAME="db_input_data_validation" TYPE="string"><Value>onsubmit</Value></Control><Control NAME="db_input_show_page_title" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_show_group_title" TYPE
|
||||||
|
="boolean"><Value>true</Value></Control><Control NAME="db_input_show_repetition_column" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_show_state_column" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_show_variab
|
||||||
|
le_name_column" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_show_committed" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_show_group_state" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input
|
||||||
|
_show_group_state_threshold" TYPE="numeric"><Value>2</Value></Control><Control NAME="db_input_state_display" TYPE="string"><Value>dropdown</Value></Control><Control NAME="db_input_state_preselect" TYPE="string"><Value>sure</Value></Control><Control NAME="
|
||||||
|
db_input_unknown_option" TYPE="string"><Value>Unknown</Value></Control><Control NAME="db_input_unknown_position" TYPE="string"><Value>first</Value></Control><Control NAME="db_input_other_option" TYPE="string"><Value>Other</Value></Control><Control NAME="d
|
||||||
|
b_input_other_position" TYPE="string"><Value>last</Value></Control><Control NAME="db_input_other_width_single" TYPE="numeric"><Value>20</Value></Control><Control NAME="db_input_other_width_multiple" TYPE="numeric"><Value>20</Value></Control><Control NAME=
|
||||||
|
"db_input_other_depth_multiple" TYPE="numeric"><Value>4</Value></Control><Control NAME="db_input_other_prompt_multiple" TYPE="string"><Value>Specify others:</Value></Control><Control NAME="db_input_other_prompt_single" TYPE="string"><Value>Specify other:<
|
||||||
|
/Value></Control><Control NAME="db_input_other_prompt_break_before" TYPE="numeric"><Value>1</Value></Control><Control NAME="db_input_other_prompt_break_after" TYPE="numeric"><Value>1</Value></Control><Control NAME="db_input_active_separator_sure_multiline
|
||||||
|
" TYPE="string"><Value>, </Value></Control><Control NAME="db_input_active_separator_sure_multiple" TYPE="string"><Value> and </Value></Control><Control NAME="db_input_active_separator_unsure_multiple" TYPE="string"><Value> and/or </Value></Control><Contro
|
||||||
|
l NAME="db_input_active_separator_unsure_single" TYPE="string"><Value> or </Value></Control><Control NAME="db_input_active_boolean_true" TYPE="string"><Value>Yes</Value></Control><Control NAME="db_input_active_boolean_false" TYPE="string"><Value>No</Value
|
||||||
|
></Control><Control NAME="db_input_repeat_navigation_prefix" TYPE="string"><Value>(%1 of %2)&\'3bnbsp\'3b</Value></Control><Control NAME="db_input_repeat_navigation_postfix" TYPE="string"><Value></Value></Control><Control NAME="db_input_repeat_navigation_por
|
||||||
|
trayal" TYPE="string"><Value>visible</Value></Control><Control NAME="db_input_repeat_format" TYPE="string"><Value>digits</Value></Control><Control NAME="db_input_repeat_prev" TYPE="string"><Value>Prev</Value></Control><Control NAME="db_input_repeat_next"
|
||||||
|
TYPE="string"><Value>Next</Value></Control><Control NAME="db_input_repeat_separator" TYPE="string"><Value>&\'3bnbsp\'3b|&\'3bnbsp\'3b</Value></Control><Control NAME="db_input_prompt_compulsory_symbol" TYPE="string"><Value>*</Value></Control><Control NAME="db_in
|
||||||
|
put_prompt_compulsory_symbol_location" TYPE="string"><Value>after</Value></Control><Control NAME="db_input_question_compulsory_symbol" TYPE="string"><Value></Value></Control><Control NAME="db_input_question_compulsory_symbol_location" TYPE="string"><Value
|
||||||
|
>after</Value></Control><Control NAME="db_input_disable_when_unknown_compulsory" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_disable_when_unknown_non_compulsory" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_
|
||||||
|
simple_alert" TYPE="string"><Value>client_side</Value></Control><Control NAME="db_input_warning_irrelevant_page" TYPE="string"><Value><\'3bU>\'3bWARNING:<\'3b/U>\'3b That page is no longer relevant because of answers given on this page or a previous page!</Va
|
||||||
|
lue></Control><Control NAME="db_input_last_page_next_button" TYPE="string"><Value>enabled</Value></Control><Control NAME="db_input_page_goto_list_content" TYPE="string"><Value>relevant_pages</Value></Control><Variable NAME="ProductVersion" TYPE="string" S
|
||||||
|
TATUS="sure"><Value>0</Value></Variable><Variable NAME="MScom" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="LanguageAll" TYPE="select" STATUS="sure"><Value>English</Value></Variable><Variable NAME="CanadaAvail" TYPE="boolean" ST
|
||||||
|
ATUS="sure"><Value>1</Value></Variable><Variable NAME="CanadaFrench" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="FileFormat" TYPE="boolean" STATUS="sure"><Value>1</Value></Variable><Variable NAME="SoftwareType" TYPE="select" ST
|
||||||
|
ATUS="sure"><Value>Free, Standalone Software</Value></Variable><Variable NAME="ProductName" TYPE="string" STATUS="sure"><Value>Exchange Web Services Managed API 1.0</Value></Variable><Variable NAME="NumberOfCopies" TYPE="select" STATUS="sure"><Value>Any n
|
||||||
|
umber of copies</Value></Variable><Variable NAME="StandaloneUseRight" TYPE="select" STATUS="sure"><Value>Only to design, develop and test the user&apos\'3bs programs</Value></Variable><Variable NAME="MediaElementsTemplates" TYPE="boolean" STATUS="sure"><Valu
|
||||||
|
e>0</Value></Variable><Variable NAME="DistributableCode" TYPE="boolean" STATUS="sure"><Value>1</Value></Variable><Variable NAME="DistributableCodeType" TYPE="select" STATUS="sure"><Value>Redist.txt</Value></Variable><Variable NAME="InternalReassignment" T
|
||||||
|
YPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="LicenseTransfer" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="OtherMicrosoftPrograms" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME=
|
||||||
|
"PrereleaseCode" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="ThirdPartyPrograms" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="Benchmarking" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Var
|
||||||
|
iable NAME="MPEG" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="InternetBasedServices" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable></Document>}}{\*\ftnsep \ltrpar \pard\plain \ltrpar
|
||||||
|
\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
|
||||||
|
\ltrch\fcs0 \insrsid2508786 \chftnsep
|
||||||
|
\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2508786 \chftnsepc
|
||||||
|
\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2508786 \chftnsep
|
||||||
|
\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2508786 \chftnsepc
|
||||||
|
\par }}\ltrpar \sectd \ltrsect\psz1\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid12797652\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3
|
||||||
|
\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
|
||||||
|
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
|
||||||
|
\s42\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs28\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs28\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 MICROSOFT SOFTWARE LICENSE TERMS
|
||||||
|
|
||||||
|
\par }\pard\plain \ltrpar\s43\ql \li0\ri0\sb120\sa120\nowidctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1205521 \rtlch\fcs1 \ab\af39\afs28\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs28\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid5254144\charrsid1835081 \hich\af38\dbch\af13\loch\f38 MICROSOFT EXCHANGE }{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1197297 \hich\af38\dbch\af13\loch\f38 WEB SERVI}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13700619 \hich\af38\dbch\af13\loch\f38 CES MANAGED API 2.}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid425915 \hich\af38\dbch\af13\loch\f38 2}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid5254144\charrsid1835081
|
||||||
|
\par }\pard\plain \ltrpar\s44\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9531088 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid9531088 \hich\af38\dbch\af13\loch\f38
|
||||||
|
These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and You. Please read them. They apply to the software named above, which includes the media on which You received it,
|
||||||
|
\hich\af38\dbch\af13\loch\f38 if any. The terms also apply to any Microsoft
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0\pararsid9531088 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid9531088 \hich\af38\dbch\af13\loch\f38 updates,
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 supplements,
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 Internet-based services, and
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 support services
|
||||||
|
\par }\pard\plain \ltrpar\s44\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9531088 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid9531088 \hich\af38\dbch\af13\loch\f38
|
||||||
|
for this software, unless other terms accompany those items. If so, those terms apply.
|
||||||
|
\par }\pard\plain \ltrpar\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4851597 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 BY INSTALLING, ACCESSING OR OTHERWISE USING THE }{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 SOFTWARE}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 , }{\rtlch\fcs1 \ab\af38\afs20
|
||||||
|
\ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 YOU}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ACCEPT THE TERMS OF THIS LICENSE AGREEMENT}
|
||||||
|
{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid919473\charrsid1835081 .}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid1468244\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0
|
||||||
|
\b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 IF }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 YOU}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0
|
||||||
|
\b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 DO NOT AGREE TO THE TERMS OF THIS LICENSE AGREEMENT, DO NOT INSTALL, ACCESS OR USE THE }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b\caps\f38\fs20\insrsid9531088
|
||||||
|
\hich\af38\dbch\af11\loch\f38 Software}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 .
|
||||||
|
\par }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 YOU}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 MAY USE }{
|
||||||
|
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\caps\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 THE }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b\caps\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 Software}{\rtlch\fcs1
|
||||||
|
\ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid6045985\charrsid1835081 \hich\af38\dbch\af11\loch\f38 SOLELY }{
|
||||||
|
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid1839655\charrsid1835081 \hich\af38\dbch\af11\loch\f38 IN PROGRAMS DEVELOPED BY YOU }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid14120228\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 THAT}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid14488677\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10252851\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 INTER}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 \hich\f38 OPERATE WITH MICROSOFT EXCHANGE SERVER (REFERRED TO AS \'93\loch\f38 AUTHORIZED }{
|
||||||
|
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid16735789\charrsid1835081 \hich\af38\dbch\af11\loch\f38 PROGRAM}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 \hich\f38 S
|
||||||
|
\'94\loch\f38 ).
|
||||||
|
\par }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 If }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 You}{
|
||||||
|
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 comply with these license terms, }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 You}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 have the rights below.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\f38\fs20\cf1\insrsid4851597\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid12877409\charrsid1835081 \hich\af39\dbch\af13\loch\f39 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid5647608 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12877409\charrsid1835081 \hich\af38\dbch\af13\loch\f38 INSTALLATION AND USE}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 may install and use any number of copies of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 on }{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid555183\charrsid1835081 \hich\af38\dbch\af13\loch\f38 devices}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid4273837\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid15094097\charrsid1835081 \hich\af38\dbch\af13\loch\f38 solely }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 to design, develop and test }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 2.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Distributable Code.}{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1197297\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
contains}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 code }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 that }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 are permitted to }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 include in }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 if }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 comply with the terms below.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s49 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 i.\tab}}\pard\plain \ltrpar\s49\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Right to Use and Distribute.}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 \hich\f38 The code and text files listed below are \'93\loch\f38 \hich\f38 Distributable Code.\'94}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid13060950\charrsid13060950 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid13060950 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\ul\loch\af38\hich\af38\dbch\af13\insrsid13060950\charrsid13060950 \hich\af38\dbch\af13\loch\f38 REDIST.TXT Files}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13060950\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 . You may copy and distribute the object code form of code listed in REDIST.TXT files}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13060950 \hich\af38\dbch\af13\loch\f38 . .}{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1187942\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3944889\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s50 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid11879370\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s50\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid11879370\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Red}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 istribution}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may permit }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid1325026\charrsid1835081 \hich\af38\dbch\af13\loch\f38 the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
distributors of }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 to copy and distribute the Distributable Code as part of those }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s49 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 ii.\tab}}\pard\plain \ltrpar\s49\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1077\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Distribution
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Requirements.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 For any Distributable Code }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 distribute, }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
must}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 add significant primary functionality to it in }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 ;
|
||||||
|
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid6947081\charrsid6947081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid6947081 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6947081\charrsid6947081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
for any Distributable Code having a filename extension of .lib, distribute only the results of\hich\af38\dbch\af13\loch\f38 running such Distributable Code through a linker with your program;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid6947081\charrsid6947081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6947081\charrsid6947081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
distribute Distributable Code included in a setup program only as part of that setup program without modification;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 require distributors and external end users to agree to terms that p\hich\af38\dbch\af13\loch\f38 rotect it at least as much as this agreement;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 display }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
valid copyright notice on }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 ; and
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38
|
||||||
|
indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\hich\f38 \rquote \loch\f38 fees, related to the distribution or use of }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s49 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 iii.\tab}}\pard\plain \ltrpar\s49\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1077\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Distribution Restrictions.}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may not}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 alter any copyright, trademark or patent notice in the Distributable Code;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 use Microsoft\hich\f38 \rquote \loch\f38
|
||||||
|
s trademarks in }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 program}{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 s\hich\f38 \rquote \loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 names or in a way that suggests }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 come from or are endorsed by Microsoft;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38
|
||||||
|
include Distributable Code in malicious, deceptive or unlawful programs; or
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 modify}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 , }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 distribute}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 or convey}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 any Distributable Code so that }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38 the Distributable Code }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 or any application to which it links, or }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38 of }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 which it
|
||||||
|
\hich\af38\dbch\af13\loch\f38 is a part, }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 becomes subject to an Excluded License.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38 An Excluded License is any other license that requires, as a condition of use, modification, distribution or conveyance that,
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af10\hich\af10\dbch\af13\insrsid12939214\charrsid1835081 \loch\af10\dbch\af13\hich\f10 \'a7\tab}}\pard \ltrpar\s36\ql \fi-360\li2160\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx2160\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl2\adjustright\rin0\lin2160\itap0\pararsid12939214 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
the code be disclosed or distributed in source code form; or
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af10\hich\af10\dbch\af13\insrsid12939214\charrsid1835081 \loch\af10\dbch\af13\hich\f10 \'a7\tab}}\pard \ltrpar\s36\ql \fi-360\li2160\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx2160\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl2\adjustright\rin0\lin2160\itap0\pararsid13633438 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
others have \hich\af38\dbch\af13\loch\f38 the right to modify or create derivative works of it.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid3160965\charrsid12459773 \hich\af39\dbch\af13\loch\f39 3.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3160965\charrsid12459773 \hich\af38\dbch\af13\loch\f38 INTERNET-BASED SERVICES. }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3160965\charrsid12459773 \hich\af38\dbch\af13\loch\f38 Microsoft provides Internet-based services with the software. It may change or cancel them at any time.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid3160965\charrsid12459773
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 4.\tab}}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Scope of License}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \ab0\af38\afs20
|
||||||
|
\ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 You may }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1839655\charrsid1835081 \hich\af38\dbch\af13\loch\f38 only use the}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1839655\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 in Authorized Programs}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081 \hich\af38\dbch\af13\loch\f38 . }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 is}{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 licensed, not sold. This agreement only gives }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
some rights to use the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Microsoft reserves all other rights.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Unless applicable law gives }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 more rights despite this limitation, }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
may use the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid11015316\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 on\hich\af38\dbch\af13\loch\f38 ly as expressly permitted in this agreement.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12722678\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may not}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid4538731\charrsid1835081 \hich\af38\dbch\af13\loch\f38 :}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15472048 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 work around any }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid15472048\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 explicit instructions in the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid15472048\charrsid1835081 \hich\af38\dbch\af13\loch\f38 that limit or restrict }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid15472048\charrsid1835081 \hich\af38\dbch\af11\loch\f38 their use}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
reverse engineer, decompile or disassemble the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 , except an\hich\af38\dbch\af13\loch\f38 d only to the extent that applicable law expressly permits, despite this limitation}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid7150562\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid7150562 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid7150562\charrsid1835081 \hich\af38\dbch\af13\loch\f38 use the }{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid7150562\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 in any way that intentionally harms services provided by Microsoft or impairs anyone else\hich\f38 \rquote \loch\f38 s use of such services;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid7150562\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 use the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid7150562\charrsid1835081 \hich\af38\dbch\af13\loch\f38 to try to gain un
|
||||||
|
\hich\af38\dbch\af13\loch\f38 authorized access to any service, data, account or network by any means;
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
make more copies of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3344199\charrsid1835081 \hich\af38\dbch\af13\loch\f38 than reasonably necessary for You to exercise }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid15366065\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Y}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3344199\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
our rights under this agreement}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 publish the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 for others to copy}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 rent, lease or lend the }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \f38\fs20\insrsid13633438\charrsid1835081 \hich\af38\dbch\af11\loch\f38 or}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f3\fs20\cf1\insrsid8552108\charrsid1835081 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid8552108 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid8552108\charrsid1835081 \hich\af38\dbch\af11\loch\f38 publish the }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\f38\fs20\cf1\insrsid8552108\charrsid1835081 \hich\af38\dbch\af11\loch\f38 as a hosted service without adding significant primary functionality to }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid4619217\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 them}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid8552108\charrsid1835081 \hich\af38\dbch\af11\loch\f38 in Authorized Programs.
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid807330\charrsid1835081 \hich\af39\dbch\af13\loch\f39 5.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081 \hich\af38\dbch\af13\loch\f38 TRANSFER TO A THIRD PARTY. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 The first user of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38 may transfer }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \b0\f38\fs20\insrsid4538731\charrsid1835081 \hich\af38\dbch\af11\loch\f38 them }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38
|
||||||
|
and this agreement directly to a third party. Before the transfer, that party must agree that this agreement applies to the transfer and use of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38 . The first user must uninstall the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38
|
||||||
|
before transferring }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid4538731\charrsid1835081 \hich\af38\dbch\af11\loch\f38 them }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38
|
||||||
|
separately from the device. \hich\af38\dbch\af11\loch\f38 The first user may not retain any copies.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid807330\charrsid1835081 \hich\af39\dbch\af13\loch\f39 6.\tab}}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Export Restrictions}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
. }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid9531088 \hich\af38\dbch\af11\loch\f38 is}{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 subject to United States export laws and regulations.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 must comply with all domestic and international export laws and regulations that apply to the }{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Thes
|
||||||
|
\hich\af38\dbch\af13\loch\f38 e laws include restrictions on destinations, end users and end use.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 For additional information, see }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\cs73\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 www.microsoft.com/exporting}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs73\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9651656\charrsid1835081 \hich\af39\dbch\af13\loch\f39 7.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid10825913 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9651656\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 SUPPORT.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9651656\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Microsoft is not obligated to provide any technical or other support }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3287741\charrsid1835081 \hich\af38\dbch\af13\loch\f38 under this agreement }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 \hich\f38 (\'93}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Support Services}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081 \loch\af38\dbch\af13\hich\f38 \'94\loch\f38 ) for }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3962253\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 to You. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid3962253\charrsid1835081 \hich\af38\dbch\af11\loch\f38
|
||||||
|
However, if Microsoft chooses to provide any Support Services to You, Your use of such Support Services will be governed by then-current Microsoft policies}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid16130586\charrsid1835081
|
||||||
|
\hich\af38\dbch\af11\loch\f38 (i.e. terms separate from this agreement)}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid3962253\charrsid1835081 \hich\af38\dbch\af11\loch\f38 . With respect to any technical or oth
|
||||||
|
\hich\af38\dbch\af11\loch\f38
|
||||||
|
er information You provide to Microsoft in connection with the Support Services, You agree that Microsoft has an unrestricted right to use such information for its business purposes, including for product support and development. Microsoft will not use su
|
||||||
|
\hich\af38\dbch\af11\loch\f38 c\hich\af38\dbch\af11\loch\f38 h information in a form that personally identifies You.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10825913\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid82666\charrsid1835081 \hich\af39\dbch\af13\loch\f39 8.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid12865903 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid82666\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
RESERVATION OF RIGHTS. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid82666\charrsid1835081 \hich\af38\dbch\af11\loch\f38
|
||||||
|
Except for the licenses expressly granted under this license, Microsoft and its suppliers retain all right, title and interest in and to the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid82666\charrsid1835081 \hich\af38\dbch\af11\loch\f38
|
||||||
|
, and all intellectual property rights therein. You are not authorized to alter, modify, copy, edit, format, create derivative works of or otherwise use any materials, content or technology provided under this license except as explicitly provided in this
|
||||||
|
\hich\af38\dbch\af11\loch\f38 \hich\af38\dbch\af11\loch\f38 license or approved in advance in writing by Microsoft. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid12865903\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid82666\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 9.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Entire Agreement.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 This agreement, and the terms for supplements, updates, Internet-based services and }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1715365\charrsid1835081 \hich\af38\dbch\af13\loch\f38 S}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 upport }{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1715365\charrsid1835081 \hich\af38\dbch\af13\loch\f38 S}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 ervices that }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 use, are the entire agreement }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid6899077\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 with respect to the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 10.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Applicable Law}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 United States.}{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 If }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 acquired the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20
|
||||||
|
\ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
The laws of the state \hich\af38\dbch\af13\loch\f38 where }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.}{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 b.\tab}\hich\af38\dbch\af13\loch\f38 Outside the United States.}{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 If }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 acquired the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20
|
||||||
|
\ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 in any other country, the laws of that country apply.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 11.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
|
||||||
|
{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Legal Effect.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
This agreement describes certain legal rights.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
may have other rights under the laws of }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 country.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{
|
||||||
|
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may also have rights with respect to the party from whom }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
acquired the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1
|
||||||
|
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 This agreement does not change }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 rights under \hich\af38\dbch\af13\loch\f38 the laws of }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
country if the laws of }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
|
||||||
|
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 country do not permit it to do so.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 12.\tab}\hich\af38\dbch\af13\loch\f38 Disclaimer of Warranty.}{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 is}{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 \hich\f38 licensed \'93\loch\f38 \hich\f38 as-is.\'94}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
bear the risk of using }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6630303\charrsid1835081 \hich\af38\dbch\af13\loch\f38 them}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Microsoft gives no express warranties, guarantees or conditions.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may have additional consumer rights under }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
local laws which this agreement cannot change.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 To the extent permitted under }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
local laws, Microsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringemen\hich\af38\dbch\af13\loch\f38 t.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 13.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 Limitation on and Exclusion of Remedies and Damages.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
|
||||||
|
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
cannot recover any other damages, including consequential, lost profits, spec\hich\af38\dbch\af13\loch\f38 ial, indirect or incidental damages.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
|
||||||
|
\par }\pard\plain \ltrpar\s24\ql \li357\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 This limitation applies to}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid4538731\charrsid1835081 \hich\af38\dbch\af13\loch\f38 :}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
|
||||||
|
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
|
||||||
|
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 anything related to the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 , content (including code) on third party Internet sites, or third party programs; and
|
||||||
|
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38
|
||||||
|
claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
|
||||||
|
\par }\pard\plain \ltrpar\ql \li360\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
|
||||||
|
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
|
||||||
|
It also applies even if Microsoft knew or should have known about the possibility of the damag\hich\af38\dbch\af13\loch\f38 es.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 The above limitation or exclusion may not apply to }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
|
||||||
|
\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 because }{
|
||||||
|
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
|
||||||
|
\hich\af38\dbch\af13\loch\f38 country may not allow the exclusion or limitation of incidental, consequential or other damages.
|
||||||
|
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||||
|
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||||
|
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||||
|
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
|
||||||
|
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
|
||||||
|
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
|
||||||
|
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
|
||||||
|
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
|
||||||
|
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
|
||||||
|
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
|
||||||
|
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
|
||||||
|
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f
|
||||||
|
7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87
|
||||||
|
615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad
|
||||||
|
79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b
|
||||||
|
5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab
|
||||||
|
999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9
|
||||||
|
699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586
|
||||||
|
8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6
|
||||||
|
0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f
|
||||||
|
9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be
|
||||||
|
15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979
|
||||||
|
3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d
|
||||||
|
32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a
|
||||||
|
f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86
|
||||||
|
e877f0034e16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb
|
||||||
|
44f95d843b5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a
|
||||||
|
6409fb44d08741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c
|
||||||
|
3d9058edf2c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db0256
|
||||||
|
5e85f3b9660d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276
|
||||||
|
b9f7dec44b7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8
|
||||||
|
c33585b5fb9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e
|
||||||
|
51440ca2e0088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95
|
||||||
|
b21be5ceaf8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff
|
||||||
|
6dce591a26ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec6
|
||||||
|
9ffb9e65d028d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239
|
||||||
|
b75a5bb1e6345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a449
|
||||||
|
59d366ad93b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e8
|
||||||
|
2db8df9f30254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468
|
||||||
|
656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4
|
||||||
|
350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d2624
|
||||||
|
52282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe5141
|
||||||
|
73d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000
|
||||||
|
0000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000
|
||||||
|
000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019
|
||||||
|
0200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b00001600000000
|
||||||
|
000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027
|
||||||
|
00000000000000000000000000a00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009b0a00000000}
|
||||||
|
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
|
||||||
|
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
|
||||||
|
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
|
||||||
|
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
|
||||||
|
{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
|
||||||
|
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;
|
||||||
|
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority59 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
|
||||||
|
\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;
|
||||||
|
\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;
|
||||||
|
\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;
|
||||||
|
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;
|
||||||
|
\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
|
||||||
|
\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;
|
||||||
|
\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;
|
||||||
|
\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
|
||||||
|
\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;
|
||||||
|
\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;
|
||||||
|
\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;
|
||||||
|
\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;
|
||||||
|
\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
|
||||||
|
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
|
||||||
|
\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
|
||||||
|
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
|
||||||
|
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
|
||||||
|
\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
|
||||||
|
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
|
||||||
|
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
|
||||||
|
\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
|
||||||
|
\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
|
||||||
|
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
|
||||||
|
\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
|
||||||
|
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
|
||||||
|
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
|
||||||
|
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
|
||||||
|
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
|
||||||
|
\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
|
||||||
|
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
|
||||||
|
\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
|
||||||
|
\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
|
||||||
|
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
|
||||||
|
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
|
||||||
|
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
|
||||||
|
\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
|
||||||
|
\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
|
||||||
|
\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
|
||||||
|
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
|
||||||
|
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
|
||||||
|
\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
|
||||||
|
\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
|
||||||
|
\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
|
||||||
|
\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
|
||||||
|
\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
|
||||||
|
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
|
||||||
|
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
|
||||||
|
4d73786d6c322e534158584d4c5265616465722e362e30000000000000000000000e0000
|
||||||
|
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e50000000000000000000000006004
|
||||||
|
e2ba7d5acf010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000006004e2ba7d5acf01
|
||||||
|
6004e2ba7d5acf01000000000000000000000000cf0051005600dd0030005300300032005200c4004b004800d9004200de005100cc004b00c50055004100d0003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000006004e2ba7d5a
|
||||||
|
cf016004e2ba7d5acf010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000d900000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f75726365732053656c65637465645374796c653d2222205374796c654e616d653d22222056657273696f6e3d22302220786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72
|
||||||
|
672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b36393744
|
||||||
|
303542442d394332362d343234362d383745342d3146393042304139353430337d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c
|
||||||
|
64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f
|
||||||
|
72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}
|
BIN
modules/ews/Microsoft.Exchange.WebServices.Auth.dll
Normal file
BIN
modules/ews/Microsoft.Exchange.WebServices.Auth.dll
Normal file
Binary file not shown.
1160
modules/ews/Microsoft.Exchange.WebServices.Auth.xml
Normal file
1160
modules/ews/Microsoft.Exchange.WebServices.Auth.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
modules/ews/Microsoft.Exchange.WebServices.dll
Normal file
BIN
modules/ews/Microsoft.Exchange.WebServices.dll
Normal file
Binary file not shown.
53087
modules/ews/Microsoft.Exchange.WebServices.xml
Normal file
53087
modules/ews/Microsoft.Exchange.WebServices.xml
Normal file
File diff suppressed because it is too large
Load Diff
599
modules/ews/README.htm
Normal file
599
modules/ews/README.htm
Normal file
@ -0,0 +1,599 @@
|
|||||||
|
<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
|
||||||
|
<head>
|
||||||
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
|
||||||
|
<META NAME="save" CONTENT="history" />
|
||||||
|
<META NAME="DCSext.Title" CONTENT="Microsoft Exchange Web Services Managed API 2.2 Readme" />
|
||||||
|
<title>Microsoft Exchange Web Services Managed API 2.2 Readme</title>
|
||||||
|
|
||||||
|
<Style TYPE="text/css">
|
||||||
|
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background: #FFFFFF;
|
||||||
|
color: #000000;
|
||||||
|
font-family: Verdana;
|
||||||
|
font-size: medium;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainSection
|
||||||
|
{
|
||||||
|
font-size: 70%;
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 10;
|
||||||
|
margin-right: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainBody
|
||||||
|
{
|
||||||
|
font-size: 90%;
|
||||||
|
margin-top: 10;
|
||||||
|
padding-bottom: 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#header
|
||||||
|
{
|
||||||
|
background-color: #D2D2D2;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
padding-left: 10;
|
||||||
|
padding-right: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#header table
|
||||||
|
{
|
||||||
|
border-bottom-color: #C8CDDE;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
border-bottom-width: 1;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.#runningHeaderText
|
||||||
|
{
|
||||||
|
color: #003399;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.#nsrTitle
|
||||||
|
{
|
||||||
|
/* color: #003399;*/
|
||||||
|
font-size: 120%;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#header table td
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-size: 70%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-right: 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#header table tr.#headerTableRow3 td
|
||||||
|
{
|
||||||
|
padding-bottom: 2;
|
||||||
|
padding-top: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#header table.#bottomTable
|
||||||
|
{
|
||||||
|
border-top-color: #FFFFFF;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-top-width: 1;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#footer
|
||||||
|
{
|
||||||
|
font-size: 90%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: -5;
|
||||||
|
margin-right: 0;
|
||||||
|
padding-top: 2;
|
||||||
|
padding-bottom: 2;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr.#footerHR
|
||||||
|
{
|
||||||
|
border-bottom-color: #EEEEFF;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
border-bottom-width: 1;
|
||||||
|
border-top-color: C8CDDE;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-top-width: 1;
|
||||||
|
height: 3;
|
||||||
|
color: #D2D2D2;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.section
|
||||||
|
{
|
||||||
|
padding-top: 2;
|
||||||
|
padding-bottom: 2;
|
||||||
|
padding-right: 15;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 18;
|
||||||
|
margin-bottom: 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1.heading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subHeading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 150%;
|
||||||
|
margin-bottom: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2.subHeading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 130%;
|
||||||
|
}
|
||||||
|
h3.subHeading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-size: 125%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4.subHeading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-size: 110%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4.procedureHeading
|
||||||
|
{
|
||||||
|
color: #000080;
|
||||||
|
font-size: 110%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5.subHeading
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
font-size: 100%;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
img
|
||||||
|
{
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.toggle
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
margin-right: 5;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.copyCodeImage
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
margin: 1;
|
||||||
|
margin-right: 3;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.downloadCodeImage
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
margin-right: 3;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.viewCodeImage
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
margin-right: 3;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.note
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
margin-right: 3;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.#membersOptionsFilterImage
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
margin-left: 10;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.#toggleAllImage
|
||||||
|
{
|
||||||
|
margin-left: 4;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding-bottom: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainSection table
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainSection table tr
|
||||||
|
{
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainSection table th
|
||||||
|
{
|
||||||
|
text-align: left;
|
||||||
|
background: #D8D8D8;
|
||||||
|
border-bottom-color: #D8D8D8;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
border-bottom-width: 1;
|
||||||
|
color: #000000;
|
||||||
|
padding-left: 5;
|
||||||
|
padding-right: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainSection table td
|
||||||
|
{
|
||||||
|
background: #F2F2F2;
|
||||||
|
border-top-color: #D8D8D8;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-top-width: 1;
|
||||||
|
padding-left: 5;
|
||||||
|
padding-right: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.#mainSection table td.imageCell
|
||||||
|
{
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code
|
||||||
|
{
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code table
|
||||||
|
{
|
||||||
|
border: 0;
|
||||||
|
font-size: 95%;
|
||||||
|
margin-bottom: 5;
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code table th
|
||||||
|
{
|
||||||
|
text-align: left;
|
||||||
|
background: #D8D8D8;
|
||||||
|
border-bottom-color: #D8D8D8;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
border-bottom-width: 1;
|
||||||
|
color: #000000;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 5;
|
||||||
|
padding-right: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code table td
|
||||||
|
{
|
||||||
|
background: #CCCCCC;
|
||||||
|
border-top-color: #D8D8D8;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-top-width: 1;
|
||||||
|
padding-left: 5;
|
||||||
|
padding-right: 5;
|
||||||
|
padding-top: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.alert
|
||||||
|
{
|
||||||
|
margin-left: 10;
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.alert table
|
||||||
|
{
|
||||||
|
border: 1;
|
||||||
|
font-size: 100%;
|
||||||
|
width: 100%;
|
||||||
|
border: solid 1 #DEDFEF;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.alert table th
|
||||||
|
{
|
||||||
|
text-align: left;
|
||||||
|
background: #D8D8D8;
|
||||||
|
border-bottom-width: 0;
|
||||||
|
color: #000000;
|
||||||
|
padding-left: 5;
|
||||||
|
padding-right: 5;
|
||||||
|
border: solid 1 #DEDFEF;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.alert table td
|
||||||
|
{
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-top-color: #D8D8D8;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-top-width: 1;
|
||||||
|
padding-left: 5;
|
||||||
|
padding-right: 5;
|
||||||
|
border: solid 1 #DEDFEF;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.copyCode
|
||||||
|
{
|
||||||
|
color: #0000ff;
|
||||||
|
font-size: 90%;
|
||||||
|
font-weight: normal;
|
||||||
|
cursor: hand;
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.downloadCode
|
||||||
|
{
|
||||||
|
color: #0000ff;
|
||||||
|
font-size: 90%;
|
||||||
|
font-weight: normal;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewCode
|
||||||
|
{
|
||||||
|
color: #0000ff;
|
||||||
|
font-size: 90%;
|
||||||
|
font-weight: normal;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code pre
|
||||||
|
{
|
||||||
|
font-family: Monospace, Courier New, Courier;
|
||||||
|
font-size: 105%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
code
|
||||||
|
{
|
||||||
|
font-family: Monospace, Courier New, Courier;
|
||||||
|
font-size: 105%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl
|
||||||
|
{
|
||||||
|
margin-top: 0;
|
||||||
|
padding-left: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd
|
||||||
|
{
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd p
|
||||||
|
{
|
||||||
|
margin-top: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul
|
||||||
|
{
|
||||||
|
margin-left: 17;
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul ul
|
||||||
|
{
|
||||||
|
margin-bottom: 4;
|
||||||
|
margin-left: 17;
|
||||||
|
margin-top: 3;
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol
|
||||||
|
{
|
||||||
|
margin-left: 24;
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol ol
|
||||||
|
{
|
||||||
|
margin-left: 24;
|
||||||
|
margin-top: 3;
|
||||||
|
list-style-type: lower-alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
li
|
||||||
|
{
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
margin-left: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
p
|
||||||
|
{
|
||||||
|
margin-bottom: 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip
|
||||||
|
{
|
||||||
|
color: #0000FF;
|
||||||
|
font-style: italic;
|
||||||
|
cursor:hand;
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.math
|
||||||
|
{
|
||||||
|
font-family: Times New Roman;
|
||||||
|
font-size: 125%
|
||||||
|
}
|
||||||
|
.sourceCodeList
|
||||||
|
{
|
||||||
|
font-family: Verdana;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre.viewCode
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:hover table, li.over table
|
||||||
|
{
|
||||||
|
background-color: #C0C0C0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:hover ul, li.over ul
|
||||||
|
{
|
||||||
|
background-color: #d2d2d2;
|
||||||
|
border: 1px solid #000;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="header">
|
||||||
|
<table width="100%" id="topTable">
|
||||||
|
<tr>
|
||||||
|
<td align="left">
|
||||||
|
<span id="nsrTitle">Microsoft Exchange Web Services Managed API 2.2 Readme</span>
|
||||||
|
</td>
|
||||||
|
<td align="right">
|
||||||
|
<span id="headfb" class="feedbackhead">
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="headerTableRow3">
|
||||||
|
<td />
|
||||||
|
<td align="right">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="mainSection">
|
||||||
|
<div id="mainBody">
|
||||||
|
|
||||||
|
<font color="DarkGray"></font><p />
|
||||||
|
<span id="changeHistory"></span>
|
||||||
|
<p>
|
||||||
|
<!-- DocStudio metadata -->
|
||||||
|
<i><b>Topic Last Modified: </b>2014-01-23</i><br/>
|
||||||
|
</p>
|
||||||
|
<p>© 2014 Microsoft Corporation, All Rights Reserved.</p>
|
||||||
|
<p>The Exchange Web Services (EWS) Managed API 2.2 provides a .NET Framework interface to EWS in Exchange Online, Exchange Online as part of Office 365, and versions of Exchange starting with Exchange Server 2007 Service Pack 1 (SP1). You can use this version of the EWS Managed API to evaluate the library for your application needs, to compare it to directly using XML or the auto generated proxy library, and to create production-ready applications.</p>
|
||||||
|
<p>This Readme provides information about how to provide comments and get support, information about installation prerequisites, and information about how to install and remove the EWS Managed API assembly and related documents. </p>
|
||||||
|
|
||||||
|
<h1 class="heading" expandcollapse="expand">Learning more</h1><div id="sectionSection0" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<p xmlns="">The <a href="http://msdn.microsoft.com/EN-US/library/dn567668(v=exchg.150).aspx"><b>Get started with EWS Managed API client applications</b></a> article helps you makeshows you how to create a Hello World application by using the EWS Managed API.</p>
|
||||||
|
|
||||||
|
<p xmlns="">For online documentation for this release, see <a href="http://msdn.microsoft.com/en-us/library/dd877012(v=exchg.150).aspx"><b>Web services in Exchange</b></a>. This documentation contains sample code and other information to help you use the EWS Managed API.</p>
|
||||||
|
|
||||||
|
<p xmlns="">The <a href="http://www.microsoft.com/exchange/en-us/default.aspx"><b>Exchange website</b></a> provides product information for Exchange.</p>
|
||||||
|
|
||||||
|
<p xmlns="">The <a href="http://msdn.microsoft.com/en-US/office/dn448484"><b>Exchange Dev Center on MSDN</b></a> includes developer information and links to Exchange-related resources.</p>
|
||||||
|
|
||||||
|
<p xmlns="">The <a href="http://technet.microsoft.com/en-us/exchange/default.aspx"><b>Exchange TechCenter</b></a> is your one-stop source for Exchange technical documentation for ITPros. </p>
|
||||||
|
</content></div>
|
||||||
|
|
||||||
|
<h1 class="heading" expandcollapse="expand">Feedback</h1><div id="sectionSection1" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<p xmlns="">The Exchange team welcomes feedback about the EWS Managed API. You can submit feedback to the <a href="http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/threads">Exchange Development Forum</a>. Feedback from our customers is an important part of our development process. Thank you for helping us to develop a better product.</p>
|
||||||
|
</content></div><h1 class="heading" expandcollapse="expand">Prerequisites</h1><div id="sectionSection2" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<p xmlns="">To use this version of the EWS Managed API, you must have the following installed on the computer where you build client applications:</p>
|
||||||
|
<ul xmlns=""><li>
|
||||||
|
Visual Studio .NET 2008 or a later version<br></br>
|
||||||
|
</li><li>
|
||||||
|
The .NET Framework 3.5 or a later version<br></br>
|
||||||
|
</li></ul>
|
||||||
|
<p xmlns="">If you will be running applications that use the EWS Managed API on a different computer, you must have the .NET Framework 3.5 installed on that computer. Most applications do not require Visual Studio to be installed on the client computer.</p>
|
||||||
|
<p xmlns="">The EWS Managed API can be used to access information hosted in Exchange Online or on computers that are running versions of Exchange starting with Exchange 2007 SP1.</p>
|
||||||
|
|
||||||
|
<p xmlns="">The Exchange server on which the Client Access server role is installed must have EWS enabled. If EWS is disabled, the EWS Managed API cannot communicate with the server.</p>
|
||||||
|
</content></div><h1 class="heading" expandcollapse="expand">Installing the EWS Managed API assembly</h1><div id="sectionSection3" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<procedure>
|
||||||
|
To install the EWS Managed API assembly
|
||||||
|
<ol xmlns=""><li>
|
||||||
|
<p xmlns="">Download the EwsManagedApi.msi file and store it on your hard disk.</p>
|
||||||
|
|
||||||
|
</li><li>
|
||||||
|
<p xmlns="">Run the EwsManagedApi.msi file and follow the instructions in the installation wizard. You must accept the terms of the license agreement to install the software.</p>
|
||||||
|
|
||||||
|
</li></ol>
|
||||||
|
</procedure>
|
||||||
|
<p xmlns="">The following is the default installation path: C:\Program Files\Microsoft\Exchange\Web Services\2.2</p>
|
||||||
|
</content><sections xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<h3 class="subHeading" expandcollapse="expand" xmlns="">Files installed</h3><div class="subSection" xmlns=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<p xmlns="">The following files are installed by EwsManagedApi.msi:</p>
|
||||||
|
<ul xmlns=""><li>
|
||||||
|
|
||||||
|
<b>Microsoft.Exchange.WebServices.dll</b> The signed .NET assembly that implements the EWS Managed API.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>Microsoft.Exchange.WebServices.xml</b> Provides a Visual Studio .NET IntelliSense file for the EWS Managed API.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>Microsoft.Exchange.WebServices.Auth.dll</b> Provides an API to validate, parse and process Exchange Identity Tokens to be used by mail apps for Outlook.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>Microsoft.Exchange.WebServices.Auth.xml</b> Provides a Visual Studio .NET IntelliSense file for the Auth library.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>GettingStarted.doc</b> Provides additional help for and information about how to use the API.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>License Terms.rtf </b> Contains the license terms for using the EWS Managed API and documentation.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>Readme.htm </b> This file.<br></br>
|
||||||
|
</li><li>
|
||||||
|
|
||||||
|
<b>Redist.txt </b> Defines which files and directories can be redistributed under the license terms.<br></br>
|
||||||
|
</li></ul>
|
||||||
|
</content></div>
|
||||||
|
</sections></div><h1 class="heading" expandcollapse="expand">Removing the EWS Managed API assembly</h1><div id="sectionSection4" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
|
||||||
|
<p xmlns="">To remove the EWS Managed API files from your computer, locate and run the EwsManagedApi.msi installer and select the <b>Remove</b> option.</p>
|
||||||
|
</content></div><!--[if gte IE 5]>
|
||||||
|
<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
|
||||||
|
<![endif]--></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
5
modules/ews/Redist.txt
Normal file
5
modules/ews/Redist.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Distributable Code is identified as the following files and/or all of the files in the following directories:
|
||||||
|
|
||||||
|
[installdirectory]\Microsoft.Exchange.WebServices.dll
|
||||||
|
[installdirectory]\Microsoft.Exchange.WebServices.Auth.dll
|
||||||
|
|
374
modules/sqlite/Invoke-SqliteBulkCopy.ps1
Normal file
374
modules/sqlite/Invoke-SqliteBulkCopy.ps1
Normal file
@ -0,0 +1,374 @@
|
|||||||
|
function Invoke-SQLiteBulkCopy {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Use a SQLite transaction to quickly insert data
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Use a SQLite transaction to quickly insert data. If we run into any errors, we roll back the transaction.
|
||||||
|
|
||||||
|
The data source is not limited to SQL Server; any data source can be used, as long as the data can be loaded to a DataTable instance or read with a IDataReader instance.
|
||||||
|
|
||||||
|
.PARAMETER DataSource
|
||||||
|
Path to one ore more SQLite data sources to query
|
||||||
|
|
||||||
|
.PARAMETER Force
|
||||||
|
If specified, skip the confirm prompt
|
||||||
|
|
||||||
|
.PARAMETER NotifyAfter
|
||||||
|
The number of rows to fire the notification event after transferring. 0 means don't notify. Notifications hit the verbose stream (use -verbose to see them)
|
||||||
|
|
||||||
|
.PARAMETER QueryTimeout
|
||||||
|
Specifies the number of seconds before the queries time out.
|
||||||
|
|
||||||
|
.PARAMETER SQLiteConnection
|
||||||
|
An existing SQLiteConnection to use. We do not close this connection upon completed query.
|
||||||
|
|
||||||
|
.PARAMETER ConflictClause
|
||||||
|
The conflict clause to use in case a conflict occurs during insert. Valid values: Rollback, Abort, Fail, Ignore, Replace
|
||||||
|
|
||||||
|
See https://www.sqlite.org/lang_conflict.html for more details
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
#
|
||||||
|
#Create a table
|
||||||
|
Invoke-SqliteQuery -DataSource "C:\Names.SQLite" -Query "CREATE TABLE NAMES (
|
||||||
|
fullname VARCHAR(20) PRIMARY KEY,
|
||||||
|
surname TEXT,
|
||||||
|
givenname TEXT,
|
||||||
|
BirthDate DATETIME)"
|
||||||
|
|
||||||
|
#Build up some fake data to bulk insert, convert it to a datatable
|
||||||
|
$DataTable = 1..10000 | %{
|
||||||
|
[pscustomobject]@{
|
||||||
|
fullname = "Name $_"
|
||||||
|
surname = "Name"
|
||||||
|
givenname = "$_"
|
||||||
|
BirthDate = (Get-Date).Adddays(-$_)
|
||||||
|
}
|
||||||
|
} | Out-DataTable
|
||||||
|
|
||||||
|
#Copy the data in within a single transaction (SQLite is faster this way)
|
||||||
|
Invoke-SQLiteBulkCopy -DataTable $DataTable -DataSource $Database -Table Names -NotifyAfter 1000 -ConflictClause Ignore -Verbose
|
||||||
|
|
||||||
|
.INPUTS
|
||||||
|
System.Data.DataTable
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
None
|
||||||
|
Produces no output
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
This function borrows from:
|
||||||
|
Chad Miller's Write-Datatable
|
||||||
|
jbs534's Invoke-SQLBulkCopy
|
||||||
|
Mike Shepard's Invoke-BulkCopy from SQLPSX
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
https://github.com/RamblingCookieMonster/Invoke-SQLiteQuery
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
New-SQLiteConnection
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Invoke-SQLiteBulkCopy
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Out-DataTable
|
||||||
|
|
||||||
|
.FUNCTIONALITY
|
||||||
|
SQL
|
||||||
|
#>
|
||||||
|
[cmdletBinding( DefaultParameterSetName = 'Datasource',
|
||||||
|
SupportsShouldProcess = $true,
|
||||||
|
ConfirmImpact = 'High' )]
|
||||||
|
param(
|
||||||
|
[parameter( Position = 0,
|
||||||
|
Mandatory = $true,
|
||||||
|
ValueFromPipeline = $false,
|
||||||
|
ValueFromPipelineByPropertyName= $false)]
|
||||||
|
[System.Data.DataTable]
|
||||||
|
$DataTable,
|
||||||
|
|
||||||
|
[Parameter( ParameterSetName='Datasource',
|
||||||
|
Position=1,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromRemainingArguments=$false,
|
||||||
|
HelpMessage='SQLite Data Source required...' )]
|
||||||
|
[Alias('Path','File','FullName','Database')]
|
||||||
|
[validatescript({
|
||||||
|
#This should match memory, or the parent path should exist
|
||||||
|
if ( $_ -match ":MEMORY:" -or (Test-Path $_) ) {
|
||||||
|
$True
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Throw "Invalid datasource '$_'.`nThis must match :MEMORY:, or must exist"
|
||||||
|
}
|
||||||
|
})]
|
||||||
|
[string]
|
||||||
|
$DataSource,
|
||||||
|
|
||||||
|
[Parameter( ParameterSetName = 'Connection',
|
||||||
|
Position=1,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Alias( 'Connection', 'Conn' )]
|
||||||
|
[System.Data.SQLite.SQLiteConnection]
|
||||||
|
$SQLiteConnection,
|
||||||
|
|
||||||
|
[parameter( Position=2,
|
||||||
|
Mandatory = $true)]
|
||||||
|
[string]
|
||||||
|
$Table,
|
||||||
|
|
||||||
|
[Parameter( Position=3,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipeline=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$false,
|
||||||
|
ValueFromRemainingArguments=$false)]
|
||||||
|
[ValidateSet("Rollback","Abort","Fail","Ignore","Replace")]
|
||||||
|
[string]
|
||||||
|
$ConflictClause,
|
||||||
|
|
||||||
|
[int]
|
||||||
|
$NotifyAfter = 0,
|
||||||
|
|
||||||
|
[switch]
|
||||||
|
$Force,
|
||||||
|
|
||||||
|
[Int32]
|
||||||
|
$QueryTimeout = 600
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Verbose "Running Invoke-SQLiteBulkCopy with ParameterSet '$($PSCmdlet.ParameterSetName)'."
|
||||||
|
|
||||||
|
Function CleanUp
|
||||||
|
{
|
||||||
|
[cmdletbinding()]
|
||||||
|
param($conn, $com, $BoundParams)
|
||||||
|
#Only dispose of the connection if we created it
|
||||||
|
if($BoundParams.Keys -notcontains 'SQLiteConnection')
|
||||||
|
{
|
||||||
|
$conn.Close()
|
||||||
|
$conn.Dispose()
|
||||||
|
Write-Verbose "Closed connection"
|
||||||
|
}
|
||||||
|
$com.Dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-ParameterName
|
||||||
|
{
|
||||||
|
[CmdletBinding()]
|
||||||
|
Param(
|
||||||
|
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
|
||||||
|
[string[]]$InputObject,
|
||||||
|
|
||||||
|
[Parameter(ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string]$Regex = '(\W+)',
|
||||||
|
|
||||||
|
[Parameter(ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string]$Separator = '_'
|
||||||
|
)
|
||||||
|
|
||||||
|
Process{
|
||||||
|
$InputObject | ForEach-Object {
|
||||||
|
if($_ -match $Regex){
|
||||||
|
$Groups = @($_ -split $Regex | Where-Object {$_})
|
||||||
|
for($i = 0; $i -lt $Groups.Count; $i++){
|
||||||
|
if($Groups[$i] -match $Regex){
|
||||||
|
$Groups[$i] = ($Groups[$i].ToCharArray() | ForEach-Object {[string][int]$_}) -join $Separator
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$Groups -join $Separator
|
||||||
|
} else {
|
||||||
|
$_
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function New-SqliteBulkQuery {
|
||||||
|
[CmdletBinding()]
|
||||||
|
Param(
|
||||||
|
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string]$Table,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string[]]$Columns,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string[]]$Parameters,
|
||||||
|
|
||||||
|
[Parameter(ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string]$ConflictClause = ''
|
||||||
|
)
|
||||||
|
|
||||||
|
Begin{
|
||||||
|
$EscapeSingleQuote = "'","''"
|
||||||
|
$Delimeter = ", "
|
||||||
|
$QueryTemplate = "INSERT{0} INTO {1} ({2}) VALUES ({3})"
|
||||||
|
}
|
||||||
|
|
||||||
|
Process{
|
||||||
|
$fmtConflictClause = if($ConflictClause){" OR $ConflictClause"}
|
||||||
|
$fmtTable = "'{0}'" -f ($Table -replace $EscapeSingleQuote)
|
||||||
|
$fmtColumns = ($Columns | ForEach-Object { "'{0}'" -f ($_ -replace $EscapeSingleQuote) }) -join $Delimeter
|
||||||
|
$fmtParameters = ($Parameters | ForEach-Object { "@$_"}) -join $Delimeter
|
||||||
|
|
||||||
|
$QueryTemplate -f $fmtConflictClause, $fmtTable, $fmtColumns, $fmtParameters
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Connections
|
||||||
|
if($PSBoundParameters.Keys -notcontains "SQLiteConnection")
|
||||||
|
{
|
||||||
|
if ($DataSource -match ':MEMORY:')
|
||||||
|
{
|
||||||
|
$Database = $DataSource
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$Database = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($DataSource)
|
||||||
|
}
|
||||||
|
|
||||||
|
$ConnectionString = "Data Source={0}" -f $Database
|
||||||
|
$SQLiteConnection = New-Object System.Data.SQLite.SQLiteConnection -ArgumentList $ConnectionString
|
||||||
|
$SQLiteConnection.ParseViaFramework = $true #Allow UNC paths, thanks to Ray Alex!
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Debug "ConnectionString $($SQLiteConnection.ConnectionString)"
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
if($SQLiteConnection.State -notlike "Open")
|
||||||
|
{
|
||||||
|
$SQLiteConnection.Open()
|
||||||
|
}
|
||||||
|
$Command = $SQLiteConnection.CreateCommand()
|
||||||
|
$CommandTimeout = $QueryTimeout
|
||||||
|
$Transaction = $SQLiteConnection.BeginTransaction()
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Throw $_
|
||||||
|
}
|
||||||
|
|
||||||
|
write-verbose "DATATABLE IS $($DataTable.gettype().fullname) with value $($Datatable | out-string)"
|
||||||
|
$RowCount = $Datatable.Rows.Count
|
||||||
|
Write-Verbose "Processing datatable with $RowCount rows"
|
||||||
|
|
||||||
|
if ($Force -or $PSCmdlet.ShouldProcess("$($DataTable.Rows.Count) rows, with BoundParameters $($PSBoundParameters | Out-String)", "SQL Bulk Copy"))
|
||||||
|
{
|
||||||
|
#Get column info...
|
||||||
|
[array]$Columns = $DataTable.Columns | Select-Object -ExpandProperty ColumnName
|
||||||
|
$ColumnTypeHash = @{}
|
||||||
|
$ColumnToParamHash = @{}
|
||||||
|
$Index = 0
|
||||||
|
foreach($Col in $DataTable.Columns)
|
||||||
|
{
|
||||||
|
$Type = Switch -regex ($Col.DataType.FullName)
|
||||||
|
{
|
||||||
|
# I figure we create a hashtable, can act upon expected data when doing insert
|
||||||
|
# Might be a better way to handle this...
|
||||||
|
'^(|\ASystem\.)Boolean$' {"BOOLEAN"} #I know they're fake...
|
||||||
|
'^(|\ASystem\.)Byte\[\]' {"BLOB"}
|
||||||
|
'^(|\ASystem\.)Byte$' {"BLOB"}
|
||||||
|
'^(|\ASystem\.)Datetime$' {"DATETIME"}
|
||||||
|
'^(|\ASystem\.)Decimal$' {"REAL"}
|
||||||
|
'^(|\ASystem\.)Double$' {"REAL"}
|
||||||
|
'^(|\ASystem\.)Guid$' {"TEXT"}
|
||||||
|
'^(|\ASystem\.)Int16$' {"INTEGER"}
|
||||||
|
'^(|\ASystem\.)Int32$' {"INTEGER"}
|
||||||
|
'^(|\ASystem\.)Int64$' {"INTEGER"}
|
||||||
|
'^(|\ASystem\.)UInt16$' {"INTEGER"}
|
||||||
|
'^(|\ASystem\.)UInt32$' {"INTEGER"}
|
||||||
|
'^(|\ASystem\.)UInt64$' {"INTEGER"}
|
||||||
|
'^(|\ASystem\.)Single$' {"REAL"}
|
||||||
|
'^(|\ASystem\.)String$' {"TEXT"}
|
||||||
|
Default {"BLOB"} #Let SQLite handle the rest...
|
||||||
|
}
|
||||||
|
|
||||||
|
#We ref columns by their index, so add that...
|
||||||
|
$ColumnTypeHash.Add($Index,$Type)
|
||||||
|
|
||||||
|
# Parameter names can only be alphanumeric: https://www.sqlite.org/c3ref/bind_blob.html
|
||||||
|
# So we have to replace all non-alphanumeric chars in column name to use it as parameter later.
|
||||||
|
# This builds hashtable to correlate column name with parameter name.
|
||||||
|
$ColumnToParamHash.Add($Col.ColumnName, (Get-ParameterName $Col.ColumnName))
|
||||||
|
|
||||||
|
$Index++
|
||||||
|
}
|
||||||
|
|
||||||
|
#Build up the query
|
||||||
|
if ($PSBoundParameters.ContainsKey('ConflictClause'))
|
||||||
|
{
|
||||||
|
$Command.CommandText = New-SqliteBulkQuery -Table $Table -Columns $ColumnToParamHash.Keys -Parameters $ColumnToParamHash.Values -ConflictClause $ConflictClause
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$Command.CommandText = New-SqliteBulkQuery -Table $Table -Columns $ColumnToParamHash.Keys -Parameters $ColumnToParamHash.Values
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($Column in $Columns)
|
||||||
|
{
|
||||||
|
$param = New-Object System.Data.SQLite.SqLiteParameter $ColumnToParamHash[$Column]
|
||||||
|
[void]$Command.Parameters.Add($param)
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($RowNumber = 0; $RowNumber -lt $RowCount; $RowNumber++)
|
||||||
|
{
|
||||||
|
$row = $Datatable.Rows[$RowNumber]
|
||||||
|
for($col = 0; $col -lt $Columns.count; $col++)
|
||||||
|
{
|
||||||
|
# Depending on the type of thid column, quote it
|
||||||
|
# For dates, convert it to a string SQLite will recognize
|
||||||
|
switch ($ColumnTypeHash[$col])
|
||||||
|
{
|
||||||
|
"BOOLEAN" {
|
||||||
|
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = [int][boolean]$row[$col]
|
||||||
|
}
|
||||||
|
"DATETIME" {
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = $row[$col].ToString("yyyy-MM-dd HH:mm:ss")
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = $row[$col]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Default {
|
||||||
|
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = $row[$col]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#We have the query, execute!
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
[void]$Command.ExecuteNonQuery()
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
#Minimal testing for this rollback...
|
||||||
|
Write-Verbose "Rolling back due to error:`n$_"
|
||||||
|
$Transaction.Rollback()
|
||||||
|
|
||||||
|
#Clean up and throw an error
|
||||||
|
CleanUp -conn $SQLiteConnection -com $Command -BoundParams $PSBoundParameters
|
||||||
|
Throw "Rolled back due to error:`n$_"
|
||||||
|
}
|
||||||
|
|
||||||
|
if($NotifyAfter -gt 0 -and $($RowNumber % $NotifyAfter) -eq 0)
|
||||||
|
{
|
||||||
|
Write-Verbose "Processed $($RowNumber + 1) records"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Commit the transaction and clean up the connection
|
||||||
|
$Transaction.Commit()
|
||||||
|
CleanUp -conn $SQLiteConnection -com $Command -BoundParams $PSBoundParameters
|
||||||
|
|
||||||
|
}
|
528
modules/sqlite/Invoke-SqliteQuery.ps1
Normal file
528
modules/sqlite/Invoke-SqliteQuery.ps1
Normal file
@ -0,0 +1,528 @@
|
|||||||
|
function Invoke-SqliteQuery {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Runs a SQL script against a SQLite database.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Runs a SQL script against a SQLite database.
|
||||||
|
|
||||||
|
Paramaterized queries are supported.
|
||||||
|
|
||||||
|
Help details below borrowed from Invoke-Sqlcmd, may be inaccurate here.
|
||||||
|
|
||||||
|
.PARAMETER DataSource
|
||||||
|
Path to one or more SQLite data sources to query
|
||||||
|
|
||||||
|
.PARAMETER Query
|
||||||
|
Specifies a query to be run.
|
||||||
|
|
||||||
|
.PARAMETER InputFile
|
||||||
|
Specifies a file to be used as the query input to Invoke-SqliteQuery. Specify the full path to the file.
|
||||||
|
|
||||||
|
.PARAMETER QueryTimeout
|
||||||
|
Specifies the number of seconds before the queries time out.
|
||||||
|
|
||||||
|
.PARAMETER As
|
||||||
|
Specifies output type - DataSet, DataTable, array of DataRow, PSObject or Single Value
|
||||||
|
|
||||||
|
PSObject output introduces overhead but adds flexibility for working with results: http://powershell.org/wp/forums/topic/dealing-with-dbnull/
|
||||||
|
|
||||||
|
.PARAMETER SqlParameters
|
||||||
|
Hashtable of parameters for parameterized SQL queries. http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/
|
||||||
|
|
||||||
|
Limited support for conversions to SQLite friendly formats is supported.
|
||||||
|
For example, if you pass in a .NET DateTime, we convert it to a string that SQLite will recognize as a datetime
|
||||||
|
|
||||||
|
Example:
|
||||||
|
-Query "SELECT ServerName FROM tblServerInfo WHERE ServerName LIKE @ServerName"
|
||||||
|
-SqlParameters @{"ServerName = "c-is-hyperv-1"}
|
||||||
|
|
||||||
|
.PARAMETER SQLiteConnection
|
||||||
|
An existing SQLiteConnection to use. We do not close this connection upon completed query.
|
||||||
|
|
||||||
|
.PARAMETER AppendDataSource
|
||||||
|
If specified, append the SQLite data source path to PSObject or DataRow output
|
||||||
|
|
||||||
|
.INPUTS
|
||||||
|
DataSource
|
||||||
|
You can pipe DataSource paths to Invoke-SQLiteQuery. The query will execute against each Data Source.
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
As PSObject: System.Management.Automation.PSCustomObject
|
||||||
|
As DataRow: System.Data.DataRow
|
||||||
|
As DataTable: System.Data.DataTable
|
||||||
|
As DataSet: System.Data.DataTableCollectionSystem.Data.DataSet
|
||||||
|
As SingleValue: Dependent on data type in first column.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
|
||||||
|
#
|
||||||
|
# First, we create a database and a table
|
||||||
|
$Query = "CREATE TABLE NAMES (fullname VARCHAR(20) PRIMARY KEY, surname TEXT, givenname TEXT, BirthDate DATETIME)"
|
||||||
|
$Database = "C:\Names.SQLite"
|
||||||
|
|
||||||
|
Invoke-SqliteQuery -Query $Query -DataSource $Database
|
||||||
|
|
||||||
|
# We have a database, and a table, let's view the table info
|
||||||
|
Invoke-SqliteQuery -DataSource $Database -Query "PRAGMA table_info(NAMES)"
|
||||||
|
|
||||||
|
cid name type notnull dflt_value pk
|
||||||
|
--- ---- ---- ------- ---------- --
|
||||||
|
0 fullname VARCHAR(20) 0 1
|
||||||
|
1 surname TEXT 0 0
|
||||||
|
2 givenname TEXT 0 0
|
||||||
|
3 BirthDate DATETIME 0 0
|
||||||
|
|
||||||
|
# Insert some data, use parameters for the fullname and birthdate
|
||||||
|
$query = "INSERT INTO NAMES (fullname, surname, givenname, birthdate) VALUES (@full, 'Cookie', 'Monster', @BD)"
|
||||||
|
Invoke-SqliteQuery -DataSource $Database -Query $query -SqlParameters @{
|
||||||
|
full = "Cookie Monster"
|
||||||
|
BD = (get-date).addyears(-3)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check to see if we inserted the data:
|
||||||
|
Invoke-SqliteQuery -DataSource $Database -Query "SELECT * FROM NAMES"
|
||||||
|
|
||||||
|
fullname surname givenname BirthDate
|
||||||
|
-------- ------- --------- ---------
|
||||||
|
Cookie Monster Cookie Monster 3/14/2012 12:27:13 PM
|
||||||
|
|
||||||
|
# Insert another entry with too many characters in the fullname.
|
||||||
|
# Illustrate that SQLite data types may be misleading:
|
||||||
|
Invoke-SqliteQuery -DataSource $Database -Query $query -SqlParameters @{
|
||||||
|
full = "Cookie Monster$('!' * 20)"
|
||||||
|
BD = (get-date).addyears(-3)
|
||||||
|
}
|
||||||
|
|
||||||
|
Invoke-SqliteQuery -DataSource $Database -Query "SELECT * FROM NAMES"
|
||||||
|
|
||||||
|
fullname surname givenname BirthDate
|
||||||
|
-------- ------- --------- ---------
|
||||||
|
Cookie Monster Cookie Monster 3/14/2012 12:27:13 PM
|
||||||
|
Cookie Monster![...]! Cookie Monster 3/14/2012 12:29:32 PM
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Invoke-SqliteQuery -DataSource C:\NAMES.SQLite -Query "SELECT * FROM NAMES" -AppendDataSource
|
||||||
|
|
||||||
|
fullname surname givenname BirthDate Database
|
||||||
|
-------- ------- --------- --------- --------
|
||||||
|
Cookie Monster Cookie Monster 3/14/2012 12:55:55 PM C:\Names.SQLite
|
||||||
|
|
||||||
|
# Append Database column (path) to each result
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Invoke-SqliteQuery -DataSource C:\Names.SQLite -InputFile C:\Query.sql
|
||||||
|
|
||||||
|
# Invoke SQL from an input file
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
$Connection = New-SQLiteConnection -DataSource :MEMORY:
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "CREATE TABLE OrdersToNames (OrderID INT PRIMARY KEY, fullname TEXT);"
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID, fullname) VALUES (1,'Cookie Monster');"
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "PRAGMA STATS"
|
||||||
|
|
||||||
|
# Execute a query against an existing SQLiteConnection
|
||||||
|
# Create a connection to a SQLite data source in memory
|
||||||
|
# Create a table in the memory based datasource, verify it exists with PRAGMA STATS
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
$Connection = New-SQLiteConnection -DataSource :MEMORY:
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "CREATE TABLE OrdersToNames (OrderID INT PRIMARY KEY, fullname TEXT);"
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID, fullname) VALUES (1,'Cookie Monster');"
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID) VALUES (2);"
|
||||||
|
|
||||||
|
# We now have two entries, only one has a fullname. Despite this, the following command returns both; very un-PowerShell!
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "SELECT * FROM OrdersToNames" -As DataRow | Where{$_.fullname}
|
||||||
|
|
||||||
|
OrderID fullname
|
||||||
|
------- --------
|
||||||
|
1 Cookie Monster
|
||||||
|
2
|
||||||
|
|
||||||
|
# Using the default -As PSObject, we can get PowerShell-esque behavior:
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "SELECT * FROM OrdersToNames" | Where{$_.fullname}
|
||||||
|
|
||||||
|
OrderID fullname
|
||||||
|
------- --------
|
||||||
|
1 Cookie Monster
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
https://github.com/RamblingCookieMonster/Invoke-SQLiteQuery
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
New-SQLiteConnection
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Invoke-SQLiteBulkCopy
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Out-DataTable
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
https://www.sqlite.org/datatype3.html
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
https://www.sqlite.org/lang.html
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
http://www.sqlite.org/pragma.html
|
||||||
|
|
||||||
|
.FUNCTIONALITY
|
||||||
|
SQL
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding( DefaultParameterSetName='Src-Que' )]
|
||||||
|
[OutputType([System.Management.Automation.PSCustomObject],[System.Data.DataRow],[System.Data.DataTable],[System.Data.DataTableCollection],[System.Data.DataSet])]
|
||||||
|
param(
|
||||||
|
[Parameter( ParameterSetName='Src-Que',
|
||||||
|
Position=0,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false,
|
||||||
|
HelpMessage='SQLite Data Source required...' )]
|
||||||
|
[Parameter( ParameterSetName='Src-Fil',
|
||||||
|
Position=0,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false,
|
||||||
|
HelpMessage='SQLite Data Source required...' )]
|
||||||
|
[Alias('Path','File','FullName','Database')]
|
||||||
|
[validatescript({
|
||||||
|
#This should match memory, or the parent path should exist
|
||||||
|
$Parent = Split-Path $_ -Parent
|
||||||
|
if(
|
||||||
|
$_ -match ":MEMORY:|^WHAT$" -or
|
||||||
|
( $Parent -and (Test-Path $Parent))
|
||||||
|
){
|
||||||
|
$True
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Throw "Invalid datasource '$_'.`nThis must match :MEMORY:, or '$Parent' must exist"
|
||||||
|
}
|
||||||
|
})]
|
||||||
|
[string[]]
|
||||||
|
$DataSource,
|
||||||
|
|
||||||
|
[Parameter( ParameterSetName='Src-Que',
|
||||||
|
Position=1,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Parameter( ParameterSetName='Con-Que',
|
||||||
|
Position=1,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[string]
|
||||||
|
$Query,
|
||||||
|
|
||||||
|
[Parameter( ParameterSetName='Src-Fil',
|
||||||
|
Position=1,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Parameter( ParameterSetName='Con-Fil',
|
||||||
|
Position=1,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[ValidateScript({ Test-Path $_ })]
|
||||||
|
[string]
|
||||||
|
$InputFile,
|
||||||
|
|
||||||
|
[Parameter( Position=2,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Int32]
|
||||||
|
$QueryTimeout=600,
|
||||||
|
|
||||||
|
[Parameter( Position=3,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[ValidateSet("DataSet", "DataTable", "DataRow","PSObject","SingleValue")]
|
||||||
|
[string]
|
||||||
|
$As="PSObject",
|
||||||
|
|
||||||
|
[Parameter( Position=4,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[System.Collections.IDictionary]
|
||||||
|
$SqlParameters,
|
||||||
|
|
||||||
|
[Parameter( Position=5,
|
||||||
|
Mandatory=$false )]
|
||||||
|
[switch]
|
||||||
|
$AppendDataSource,
|
||||||
|
|
||||||
|
[Parameter( Position=6,
|
||||||
|
Mandatory=$false )]
|
||||||
|
[validatescript({Test-Path $_ })]
|
||||||
|
[string]$AssemblyPath = $SQLiteAssembly,
|
||||||
|
|
||||||
|
[Parameter( ParameterSetName = 'Con-Que',
|
||||||
|
Position=7,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Parameter( ParameterSetName = 'Con-Fil',
|
||||||
|
Position=7,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Alias( 'Connection', 'Conn' )]
|
||||||
|
[System.Data.SQLite.SQLiteConnection]
|
||||||
|
$SQLiteConnection
|
||||||
|
)
|
||||||
|
|
||||||
|
Begin
|
||||||
|
{
|
||||||
|
#Assembly, should already be covered by psm1
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
[void][System.Data.SQLite.SQLiteConnection]
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
if( -not ($Library = Add-Type -path $SQLiteAssembly -PassThru -ErrorAction stop) )
|
||||||
|
{
|
||||||
|
Throw "This module requires the ADO.NET driver for SQLite:`n`thttp://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($PSBoundParameters.ContainsKey('InputFile'))
|
||||||
|
{
|
||||||
|
$filePath = $(Resolve-Path $InputFile).path
|
||||||
|
$Query = [System.IO.File]::ReadAllText("$filePath")
|
||||||
|
Write-Verbose "Extracted query from [$InputFile]"
|
||||||
|
}
|
||||||
|
Write-Verbose "Running Invoke-SQLiteQuery with ParameterSet '$($PSCmdlet.ParameterSetName)'. Performing query '$Query'"
|
||||||
|
|
||||||
|
If($As -eq "PSObject")
|
||||||
|
{
|
||||||
|
#This code scrubs DBNulls. Props to Dave Wyatt
|
||||||
|
$cSharp = @'
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Management.Automation;
|
||||||
|
|
||||||
|
public class DBNullScrubber
|
||||||
|
{
|
||||||
|
public static PSObject DataRowToPSObject(DataRow row)
|
||||||
|
{
|
||||||
|
PSObject psObject = new PSObject();
|
||||||
|
|
||||||
|
if (row != null && (row.RowState & DataRowState.Detached) != DataRowState.Detached)
|
||||||
|
{
|
||||||
|
foreach (DataColumn column in row.Table.Columns)
|
||||||
|
{
|
||||||
|
Object value = null;
|
||||||
|
if (!row.IsNull(column))
|
||||||
|
{
|
||||||
|
value = row[column];
|
||||||
|
}
|
||||||
|
|
||||||
|
psObject.Properties.Add(new PSNoteProperty(column.ColumnName, value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return psObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'@
|
||||||
|
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
Add-Type -TypeDefinition $cSharp -ReferencedAssemblies 'System.Data','System.Xml' -ErrorAction stop
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
If(-not $_.ToString() -like "*The type name 'DBNullScrubber' already exists*")
|
||||||
|
{
|
||||||
|
Write-Warning "Could not load DBNullScrubber. Defaulting to DataRow output: $_"
|
||||||
|
$As = "Datarow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Handle existing connections
|
||||||
|
if($PSBoundParameters.Keys -contains "SQLiteConnection")
|
||||||
|
{
|
||||||
|
if($SQLiteConnection.State -notlike "Open")
|
||||||
|
{
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
$SQLiteConnection.Open()
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Throw $_
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($SQLiteConnection.state -notlike "Open")
|
||||||
|
{
|
||||||
|
Throw "SQLiteConnection is not open:`n$($SQLiteConnection | Out-String)"
|
||||||
|
}
|
||||||
|
|
||||||
|
$DataSource = @("WHAT")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Process
|
||||||
|
{
|
||||||
|
foreach($DB in $DataSource)
|
||||||
|
{
|
||||||
|
|
||||||
|
if($PSBoundParameters.Keys -contains "SQLiteConnection")
|
||||||
|
{
|
||||||
|
$Conn = $SQLiteConnection
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# Resolve the path entered for the database to a proper path name.
|
||||||
|
# This accounts for a variaty of possible ways to provide a path, but
|
||||||
|
# in the end the connection string needs a fully qualified file path.
|
||||||
|
if ($DB -match ":MEMORY:")
|
||||||
|
{
|
||||||
|
$Database = $DB
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$Database = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($DB)
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Test-Path $Database)
|
||||||
|
{
|
||||||
|
Write-Verbose "Querying existing Data Source '$Database'"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Verbose "Creating andn querying Data Source '$Database'"
|
||||||
|
}
|
||||||
|
|
||||||
|
$ConnectionString = "Data Source={0}" -f $Database
|
||||||
|
|
||||||
|
$conn = New-Object System.Data.SQLite.SQLiteConnection -ArgumentList $ConnectionString
|
||||||
|
$conn.ParseViaFramework = $true #Allow UNC paths, thanks to Ray Alex!
|
||||||
|
Write-Debug "ConnectionString $ConnectionString"
|
||||||
|
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
$conn.Open()
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Write-Error $_
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$cmd = $Conn.CreateCommand()
|
||||||
|
$cmd.CommandText = $Query
|
||||||
|
$cmd.CommandTimeout = $QueryTimeout
|
||||||
|
|
||||||
|
if ($SqlParameters -ne $null)
|
||||||
|
{
|
||||||
|
$SqlParameters.GetEnumerator() |
|
||||||
|
ForEach-Object {
|
||||||
|
If ($_.Value -ne $null)
|
||||||
|
{
|
||||||
|
if($_.Value -is [datetime]) { $_.Value = $_.Value.ToString("yyyy-MM-dd HH:mm:ss") }
|
||||||
|
$cmd.Parameters.AddWithValue("@$($_.Key)", $_.Value)
|
||||||
|
}
|
||||||
|
Else
|
||||||
|
{
|
||||||
|
$cmd.Parameters.AddWithValue("@$($_.Key)", [DBNull]::Value)
|
||||||
|
}
|
||||||
|
} > $null
|
||||||
|
}
|
||||||
|
|
||||||
|
$ds = New-Object system.Data.DataSet
|
||||||
|
$da = New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
|
||||||
|
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
[void]$da.fill($ds)
|
||||||
|
if($PSBoundParameters.Keys -notcontains "SQLiteConnection")
|
||||||
|
{
|
||||||
|
$conn.Close()
|
||||||
|
}
|
||||||
|
$cmd.Dispose()
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
$Err = $_
|
||||||
|
if($PSBoundParameters.Keys -notcontains "SQLiteConnection")
|
||||||
|
{
|
||||||
|
$conn.Close()
|
||||||
|
}
|
||||||
|
switch ($ErrorActionPreference.tostring())
|
||||||
|
{
|
||||||
|
{'SilentlyContinue','Ignore' -contains $_} {}
|
||||||
|
'Stop' { Throw $Err }
|
||||||
|
'Continue' { Write-Error $Err}
|
||||||
|
Default { Write-Error $Err}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($AppendDataSource)
|
||||||
|
{
|
||||||
|
#Basics from Chad Miller
|
||||||
|
$Column = New-Object Data.DataColumn
|
||||||
|
$Column.ColumnName = "Datasource"
|
||||||
|
$ds.Tables[0].Columns.Add($Column)
|
||||||
|
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
#Someone better at regular expression, feel free to tackle this
|
||||||
|
$Conn.ConnectionString -match "Data Source=(?<DataSource>.*);"
|
||||||
|
$Datasrc = $Matches.DataSource.split(";")[0]
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
$Datasrc = $DB
|
||||||
|
}
|
||||||
|
|
||||||
|
Foreach($row in $ds.Tables[0])
|
||||||
|
{
|
||||||
|
$row.Datasource = $Datasrc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($As)
|
||||||
|
{
|
||||||
|
'DataSet'
|
||||||
|
{
|
||||||
|
$ds
|
||||||
|
}
|
||||||
|
'DataTable'
|
||||||
|
{
|
||||||
|
$ds.Tables
|
||||||
|
}
|
||||||
|
'DataRow'
|
||||||
|
{
|
||||||
|
$ds.Tables[0]
|
||||||
|
}
|
||||||
|
'PSObject'
|
||||||
|
{
|
||||||
|
#Scrub DBNulls - Provides convenient results you can use comparisons with
|
||||||
|
#Introduces overhead (e.g. ~2000 rows w/ ~80 columns went from .15 Seconds to .65 Seconds - depending on your data could be much more!)
|
||||||
|
foreach ($row in $ds.Tables[0].Rows)
|
||||||
|
{
|
||||||
|
[DBNullScrubber]::DataRowToPSObject($row)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'SingleValue'
|
||||||
|
{
|
||||||
|
$ds.Tables[0] | Select-Object -ExpandProperty $ds.Tables[0].Columns[0].ColumnName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
141
modules/sqlite/New-SqliteConnection.ps1
Normal file
141
modules/sqlite/New-SqliteConnection.ps1
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
function New-SQLiteConnection
|
||||||
|
{
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Creates a SQLiteConnection to a SQLite data source
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Creates a SQLiteConnection to a SQLite data source
|
||||||
|
|
||||||
|
.PARAMETER DataSource
|
||||||
|
SQLite Data Source to connect to.
|
||||||
|
|
||||||
|
.PARAMETER Password
|
||||||
|
Specifies A Secure String password to use in the SQLite connection string.
|
||||||
|
|
||||||
|
SECURITY NOTE: If you use the -Debug switch, the connectionstring including plain text password will be sent to the debug stream.
|
||||||
|
|
||||||
|
.PARAMETER ReadOnly
|
||||||
|
If specified, open SQLite data source as read only
|
||||||
|
|
||||||
|
.PARAMETER Open
|
||||||
|
We open the connection by default. You can use this parameter to create a connection without opening it.
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
System.Data.SQLite.SQLiteConnection
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
$Connection = New-SQLiteConnection -DataSource C:\NAMES.SQLite
|
||||||
|
Invoke-SQLiteQuery -SQLiteConnection $Connection -query $Query
|
||||||
|
|
||||||
|
# Connect to C:\NAMES.SQLite, invoke a query against it
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
$Connection = New-SQLiteConnection -DataSource :MEMORY:
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "CREATE TABLE OrdersToNames (OrderID INT PRIMARY KEY, fullname TEXT);"
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID, fullname) VALUES (1,'Cookie Monster');"
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "PRAGMA STATS"
|
||||||
|
|
||||||
|
# Create a connection to a SQLite data source in memory
|
||||||
|
# Create a table in the memory based datasource, verify it exists with PRAGMA STATS
|
||||||
|
|
||||||
|
$Connection.Close()
|
||||||
|
$Connection.Open()
|
||||||
|
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "PRAGMA STATS"
|
||||||
|
|
||||||
|
#Close the connection, open it back up, verify that the ephemeral data no longer exists
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
https://github.com/RamblingCookieMonster/Invoke-SQLiteQuery
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Invoke-SQLiteQuery
|
||||||
|
|
||||||
|
.FUNCTIONALITY
|
||||||
|
SQL
|
||||||
|
|
||||||
|
#>
|
||||||
|
[cmdletbinding()]
|
||||||
|
[OutputType([System.Data.SQLite.SQLiteConnection])]
|
||||||
|
param(
|
||||||
|
[Parameter( Position=0,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline=$true,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false,
|
||||||
|
HelpMessage='SQL Server Instance required...' )]
|
||||||
|
[Alias( 'Instance', 'Instances', 'ServerInstance', 'Server', 'Servers','cn','Path','File','FullName','Database' )]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string[]]
|
||||||
|
$DataSource,
|
||||||
|
|
||||||
|
[Parameter( Position=2,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[System.Security.SecureString]
|
||||||
|
$Password,
|
||||||
|
|
||||||
|
[Parameter( Position=3,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[Switch]
|
||||||
|
$ReadOnly,
|
||||||
|
|
||||||
|
[Parameter( Position=4,
|
||||||
|
Mandatory=$false,
|
||||||
|
ValueFromPipelineByPropertyName=$true,
|
||||||
|
ValueFromRemainingArguments=$false )]
|
||||||
|
[bool]
|
||||||
|
$Open = $True
|
||||||
|
)
|
||||||
|
Process
|
||||||
|
{
|
||||||
|
foreach($DataSRC in $DataSource)
|
||||||
|
{
|
||||||
|
if ($DataSRC -match ':MEMORY:' )
|
||||||
|
{
|
||||||
|
$Database = $DataSRC
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$Database = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($DataSRC)
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Querying Data Source '$Database'"
|
||||||
|
[string]$ConnectionString = "Data Source=$Database;"
|
||||||
|
if ($Password)
|
||||||
|
{
|
||||||
|
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
|
||||||
|
$PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
|
||||||
|
$ConnectionString += "Password=$PlainPassword;"
|
||||||
|
}
|
||||||
|
if($ReadOnly)
|
||||||
|
{
|
||||||
|
$ConnectionString += "Read Only=True;"
|
||||||
|
}
|
||||||
|
|
||||||
|
$conn = New-Object System.Data.SQLite.SQLiteConnection -ArgumentList $ConnectionString
|
||||||
|
$conn.ParseViaFramework = $true #Allow UNC paths, thanks to Ray Alex!
|
||||||
|
Write-Debug "ConnectionString $ConnectionString"
|
||||||
|
|
||||||
|
if($Open)
|
||||||
|
{
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
$conn.Open()
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Write-Error $_
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
write-Verbose "Created SQLiteConnection:`n$($Conn | Out-String)"
|
||||||
|
|
||||||
|
$Conn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
193
modules/sqlite/Out-DataTable.ps1
Normal file
193
modules/sqlite/Out-DataTable.ps1
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
function Out-DataTable
|
||||||
|
{
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Creates a DataTable for an object
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Creates a DataTable based on an object's properties.
|
||||||
|
|
||||||
|
.PARAMETER InputObject
|
||||||
|
One or more objects to convert into a DataTable
|
||||||
|
|
||||||
|
.PARAMETER NonNullable
|
||||||
|
A list of columns to set disable AllowDBNull on
|
||||||
|
|
||||||
|
.INPUTS
|
||||||
|
Object
|
||||||
|
Any object can be piped to Out-DataTable
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
System.Data.DataTable
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
$dt = Get-psdrive | Out-DataTable
|
||||||
|
|
||||||
|
# This example creates a DataTable from the properties of Get-psdrive and assigns output to $dt variable
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Get-Process | Select Name, CPU | Out-DataTable | Invoke-SQLBulkCopy -ServerInstance $SQLInstance -Database $Database -Table $SQLTable -force -verbose
|
||||||
|
|
||||||
|
# Get a list of processes and their CPU, create a datatable, bulk import that data
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Adapted from script by Marc van Orsouw and function from Chad Miller
|
||||||
|
Version History
|
||||||
|
v1.0 - Chad Miller - Initial Release
|
||||||
|
v1.1 - Chad Miller - Fixed Issue with Properties
|
||||||
|
v1.2 - Chad Miller - Added setting column datatype by property as suggested by emp0
|
||||||
|
v1.3 - Chad Miller - Corrected issue with setting datatype on empty properties
|
||||||
|
v1.4 - Chad Miller - Corrected issue with DBNull
|
||||||
|
v1.5 - Chad Miller - Updated example
|
||||||
|
v1.6 - Chad Miller - Added column datatype logic with default to string
|
||||||
|
v1.7 - Chad Miller - Fixed issue with IsArray
|
||||||
|
v1.8 - ramblingcookiemonster - Removed if($Value) logic. This would not catch empty strings, zero, $false and other non-null items
|
||||||
|
- Added perhaps pointless error handling
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
https://github.com/RamblingCookieMonster/PowerShell
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Invoke-SQLBulkCopy
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
Invoke-Sqlcmd2
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
New-SQLConnection
|
||||||
|
|
||||||
|
.FUNCTIONALITY
|
||||||
|
SQL
|
||||||
|
#>
|
||||||
|
[CmdletBinding()]
|
||||||
|
[OutputType([System.Data.DataTable])]
|
||||||
|
param(
|
||||||
|
[Parameter( Position=0,
|
||||||
|
Mandatory=$true,
|
||||||
|
ValueFromPipeline = $true)]
|
||||||
|
[PSObject[]]$InputObject,
|
||||||
|
|
||||||
|
[string[]]$NonNullable = @()
|
||||||
|
)
|
||||||
|
|
||||||
|
Begin
|
||||||
|
{
|
||||||
|
$dt = New-Object Data.datatable
|
||||||
|
$First = $true
|
||||||
|
|
||||||
|
function Get-ODTType
|
||||||
|
{
|
||||||
|
param($type)
|
||||||
|
|
||||||
|
$types = @(
|
||||||
|
'System.Boolean',
|
||||||
|
'System.Byte[]',
|
||||||
|
'System.Byte',
|
||||||
|
'System.Char',
|
||||||
|
'System.Datetime',
|
||||||
|
'System.Decimal',
|
||||||
|
'System.Double',
|
||||||
|
'System.Guid',
|
||||||
|
'System.Int16',
|
||||||
|
'System.Int32',
|
||||||
|
'System.Int64',
|
||||||
|
'System.Single',
|
||||||
|
'System.UInt16',
|
||||||
|
'System.UInt32',
|
||||||
|
'System.UInt64')
|
||||||
|
|
||||||
|
if ( $types -contains $type ) {
|
||||||
|
Write-Output "$type"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Output 'System.String'
|
||||||
|
}
|
||||||
|
} #Get-Type
|
||||||
|
}
|
||||||
|
Process
|
||||||
|
{
|
||||||
|
foreach ($Object in $InputObject)
|
||||||
|
{
|
||||||
|
$DR = $DT.NewRow()
|
||||||
|
foreach ($Property in $Object.PsObject.Properties)
|
||||||
|
{
|
||||||
|
$Name = $Property.Name
|
||||||
|
$Value = $Property.Value
|
||||||
|
|
||||||
|
#RCM: what if the first property is not reflective of all the properties? Unlikely, but...
|
||||||
|
if ($First)
|
||||||
|
{
|
||||||
|
$Col = New-Object Data.DataColumn
|
||||||
|
$Col.ColumnName = $Name
|
||||||
|
|
||||||
|
#If it's not DBNull or Null, get the type
|
||||||
|
if ($Value -isnot [System.DBNull] -and $Value -ne $null)
|
||||||
|
{
|
||||||
|
$Col.DataType = [System.Type]::GetType( $(Get-ODTType $property.TypeNameOfValue) )
|
||||||
|
}
|
||||||
|
|
||||||
|
#Set it to nonnullable if specified
|
||||||
|
if ($NonNullable -contains $Name )
|
||||||
|
{
|
||||||
|
$col.AllowDBNull = $false
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$DT.Columns.Add($Col)
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Write-Error "Could not add column $($Col | Out-String) for property '$Name' with value '$Value' and type '$($Value.GetType().FullName)':`n$_"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
#Handle arrays and nulls
|
||||||
|
if ($property.GetType().IsArray)
|
||||||
|
{
|
||||||
|
$DR.Item($Name) = $Value | ConvertTo-XML -As String -NoTypeInformation -Depth 1
|
||||||
|
}
|
||||||
|
elseif($Value -eq $null)
|
||||||
|
{
|
||||||
|
$DR.Item($Name) = [DBNull]::Value
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$DR.Item($Name) = $Value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Write-Error "Could not add property '$Name' with value '$Value' and type '$($Value.GetType().FullName)'"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
#Did we get a null or dbnull for a non-nullable item? let the user know.
|
||||||
|
if($NonNullable -contains $Name -and ($Value -is [System.DBNull] -or $Value -eq $null))
|
||||||
|
{
|
||||||
|
write-verbose "NonNullable property '$Name' with null value found: $($object | out-string)"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
$DT.Rows.Add($DR)
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Write-Error "Failed to add row '$($DR | Out-String)':`n$_"
|
||||||
|
}
|
||||||
|
|
||||||
|
$First = $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
End
|
||||||
|
{
|
||||||
|
Write-Output @(,$dt)
|
||||||
|
}
|
||||||
|
|
||||||
|
} #Out-DataTable
|
88
modules/sqlite/PSSQLite.psd1
Normal file
88
modules/sqlite/PSSQLite.psd1
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
@{
|
||||||
|
|
||||||
|
# Script module or binary module file associated with this manifest.
|
||||||
|
ModuleToProcess = 'PSSQLite.psm1'
|
||||||
|
|
||||||
|
# Version number of this module.
|
||||||
|
ModuleVersion = '1.0.3'
|
||||||
|
|
||||||
|
# ID used to uniquely identify this module
|
||||||
|
GUID = '381f3394-9b8a-492e-94b4-b3aa9e775761'
|
||||||
|
|
||||||
|
# Author of this module
|
||||||
|
Author = 'ramblingcookiemonster'
|
||||||
|
|
||||||
|
# Company or vendor of this module
|
||||||
|
CompanyName = ''
|
||||||
|
|
||||||
|
# Copyright statement for this module
|
||||||
|
# Copyright = '(c) 2014 ramblingcookiemonster. All rights reserved.'
|
||||||
|
|
||||||
|
# Description of the functionality provided by this module
|
||||||
|
Description = 'Query SQLite databases'
|
||||||
|
|
||||||
|
# Minimum version of the Windows PowerShell engine required by this module
|
||||||
|
PowerShellVersion = '2.0'
|
||||||
|
|
||||||
|
# Name of the Windows PowerShell host required by this module
|
||||||
|
# PowerShellHostName = ''
|
||||||
|
|
||||||
|
# Minimum version of the Windows PowerShell host required by this module
|
||||||
|
# PowerShellHostVersion = ''
|
||||||
|
|
||||||
|
# Minimum version of Microsoft .NET Framework required by this module
|
||||||
|
# DotNetFrameworkVersion = ''
|
||||||
|
|
||||||
|
# Minimum version of the common language runtime (CLR) required by this module
|
||||||
|
# CLRVersion = ''
|
||||||
|
|
||||||
|
# Processor architecture (None, X86, Amd64) required by this module
|
||||||
|
# ProcessorArchitecture = ''
|
||||||
|
|
||||||
|
# Modules that must be imported into the global environment prior to importing this module
|
||||||
|
# RequiredModules = @()
|
||||||
|
|
||||||
|
# Assemblies that must be loaded prior to importing this module
|
||||||
|
# RequiredAssemblies = @()
|
||||||
|
|
||||||
|
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
|
||||||
|
# ScriptsToProcess = @()
|
||||||
|
|
||||||
|
# Type files (.ps1xml) to be loaded when importing this module
|
||||||
|
# TypesToProcess = @()
|
||||||
|
|
||||||
|
# Format files (.ps1xml) to be loaded when importing this module
|
||||||
|
# FormatsToProcess = @()
|
||||||
|
|
||||||
|
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
|
||||||
|
# NestedModules = @()
|
||||||
|
|
||||||
|
# Functions to export from this module
|
||||||
|
# FunctionsToExport = '*'
|
||||||
|
|
||||||
|
# Cmdlets to export from this module
|
||||||
|
# CmdletsToExport = '*'
|
||||||
|
|
||||||
|
# Variables to export from this module
|
||||||
|
# VariablesToExport = '*'
|
||||||
|
|
||||||
|
# Aliases to export from this module
|
||||||
|
# AliasesToExport = '*'
|
||||||
|
|
||||||
|
# List of all modules packaged with this module
|
||||||
|
# ModuleList = @()
|
||||||
|
|
||||||
|
# List of all files packaged with this module
|
||||||
|
# FileList = @()
|
||||||
|
|
||||||
|
# Private data to pass to the module specified in RootModule/ModuleToProcess
|
||||||
|
# PrivateData = ''
|
||||||
|
|
||||||
|
# HelpInfo URI of this module
|
||||||
|
# HelpInfoURI = ''
|
||||||
|
|
||||||
|
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
|
||||||
|
# DefaultCommandPrefix = ''
|
||||||
|
|
||||||
|
}
|
||||||
|
|
48
modules/sqlite/PSSQLite.psm1
Normal file
48
modules/sqlite/PSSQLite.psm1
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#handle PS2
|
||||||
|
if(-not $PSScriptRoot)
|
||||||
|
{
|
||||||
|
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
|
||||||
|
}
|
||||||
|
|
||||||
|
#Pick and import assemblies:
|
||||||
|
if([IntPtr]::size -eq 8) #64
|
||||||
|
{
|
||||||
|
$SQLiteAssembly = Join-path $PSScriptRoot "x64\System.Data.SQLite.dll"
|
||||||
|
}
|
||||||
|
elseif([IntPtr]::size -eq 4) #32
|
||||||
|
{
|
||||||
|
$SQLiteAssembly = Join-path $PSScriptRoot "x86\System.Data.SQLite.dll"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Throw "Something is odd with bitness..."
|
||||||
|
}
|
||||||
|
|
||||||
|
if( -not ($Library = Add-Type -path $SQLiteAssembly -PassThru -ErrorAction stop) )
|
||||||
|
{
|
||||||
|
Throw "This module requires the ADO.NET driver for SQLite:`n`thttp://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki"
|
||||||
|
}
|
||||||
|
|
||||||
|
#Get public and private function definition files.
|
||||||
|
$Public = Get-ChildItem $PSScriptRoot\*.ps1 -ErrorAction SilentlyContinue
|
||||||
|
#$Private = Get-ChildItem $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
#Dot source the files
|
||||||
|
Foreach($import in @($Public))
|
||||||
|
{
|
||||||
|
Try
|
||||||
|
{
|
||||||
|
#PS2 compatibility
|
||||||
|
if($import.fullname)
|
||||||
|
{
|
||||||
|
. $import.fullname
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Catch
|
||||||
|
{
|
||||||
|
Write-Error "Failed to import function $($import.fullname): $_"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Create some aliases, export public functions
|
||||||
|
Export-ModuleMember -Function $($Public | Select -ExpandProperty BaseName)
|
BIN
modules/sqlite/x64/SQLite.Interop.dll
Normal file
BIN
modules/sqlite/x64/SQLite.Interop.dll
Normal file
Binary file not shown.
BIN
modules/sqlite/x64/System.Data.SQLite.dll
Normal file
BIN
modules/sqlite/x64/System.Data.SQLite.dll
Normal file
Binary file not shown.
BIN
modules/sqlite/x86/SQLite.Interop.dll
Normal file
BIN
modules/sqlite/x86/SQLite.Interop.dll
Normal file
Binary file not shown.
BIN
modules/sqlite/x86/System.Data.SQLite.dll
Normal file
BIN
modules/sqlite/x86/System.Data.SQLite.dll
Normal file
Binary file not shown.
BIN
mysql/MySQL.Data.EntityFrameworkCore.Design.dll
Normal file
BIN
mysql/MySQL.Data.EntityFrameworkCore.Design.dll
Normal file
Binary file not shown.
8
mysql/MySQL.Data.EntityFrameworkCore.Design.xml
Normal file
8
mysql/MySQL.Data.EntityFrameworkCore.Design.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>MySql.Data.EntityFrameworkCore.Design</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
</members>
|
||||||
|
</doc>
|
BIN
mysql/MySQL.Data.EntityFrameworkCore.dll
Normal file
BIN
mysql/MySQL.Data.EntityFrameworkCore.dll
Normal file
Binary file not shown.
264
mysql/MySQL.Data.EntityFrameworkCore.xml
Normal file
264
mysql/MySQL.Data.EntityFrameworkCore.xml
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>MySql.Data.EntityFrameworkCore</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute">
|
||||||
|
<summary>
|
||||||
|
Establishes the character set of an entity property.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute.Charset">
|
||||||
|
<summary>
|
||||||
|
Character set to use for the attribute.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="charset">Character set to use.</param>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute">
|
||||||
|
<summary>
|
||||||
|
Sets the collation in an entity property.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute.Collation">
|
||||||
|
<summary>
|
||||||
|
Collation set in the attribute.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="collation">Collation to use.</param>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions">
|
||||||
|
<summary>
|
||||||
|
Represents the implementation of MySQL property-builder extensions used in Fluent API.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.UseMySQLAutoIncrementColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
|
||||||
|
<summary>
|
||||||
|
Defines a MySQL auto-increment column.
|
||||||
|
</summary>
|
||||||
|
<param name="propertyBuilder">Entity property to be set.</param>
|
||||||
|
<param name="typeName">MySQL column type as string.</param>
|
||||||
|
<returns>Property builder of the auto-increment column.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasDefaultValueSql(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
|
||||||
|
<summary>
|
||||||
|
Defines a column default value expression.
|
||||||
|
</summary>
|
||||||
|
<param name="propertyBuilder">Entity property to be set.</param>
|
||||||
|
<param name="sql">Default value expression.</param>
|
||||||
|
<returns>Property builder of a MySQL column with a default value.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasDefaultValue(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.Object)">
|
||||||
|
<summary>
|
||||||
|
Defines a column default value.
|
||||||
|
</summary>
|
||||||
|
<param name="propertyBuilder">Entity property to be set.</param>
|
||||||
|
<param name="sql">Default value.</param>
|
||||||
|
<returns>Property builder of a MySQL column with a default value.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCharset(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds the character set to an entity property.
|
||||||
|
</summary>
|
||||||
|
<param name="propertyBuilder">Property builder.</param>
|
||||||
|
<param name="charset">MySQL character set to use.</param>
|
||||||
|
<returns>Property builder with a character set.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCharset(Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds the character set to an entity.
|
||||||
|
</summary>
|
||||||
|
<param name="entityTypeBuilder">Entity type builder.</param>
|
||||||
|
<param name="charset">MySQL character set to use.</param>
|
||||||
|
<returns>Entity type builder with a character set.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCollation(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds the collation to an entity property.
|
||||||
|
</summary>
|
||||||
|
<param name="propertyBuilder">Property builder.</param>
|
||||||
|
<param name="collation">MySQL collation to use.</param>
|
||||||
|
<returns>Property builder with a collation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCollation(Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds the collation to an entity.
|
||||||
|
</summary>
|
||||||
|
<param name="entityTypeBuilder">Entity type builder.</param>
|
||||||
|
<param name="collation">MySQL collation to use.</param>
|
||||||
|
<returns>Entity type builder with a collation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions">
|
||||||
|
<summary>
|
||||||
|
MySQL extension class for <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" />.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.AddEntityFrameworkMySQL(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
|
||||||
|
<summary>
|
||||||
|
Extension method used to configure all MySQL services.
|
||||||
|
</summary>
|
||||||
|
<param name="services">Collection of service descriptors.</param>
|
||||||
|
<returns>Collection of MySQL services descriptors.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder">
|
||||||
|
<summary>
|
||||||
|
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalDbContextOptionsBuilder`2" /> implemented for MySQL.
|
||||||
|
</summary>
|
||||||
|
<summary>
|
||||||
|
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalDbContextOptionsBuilder`2" /> implementation for MySQL.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension">
|
||||||
|
<summary>
|
||||||
|
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalOptionsExtension"/> implementation for MySQL.
|
||||||
|
</summary>
|
||||||
|
<summary>
|
||||||
|
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalOptionsExtension"/> implementation for MySQL.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension.ApplyServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
|
||||||
|
<summary>
|
||||||
|
This method supports the Entity Framework Core infrastructure and is not intended to be used
|
||||||
|
directly from your code. This method may change or be removed in future releases.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Metadata.MySQLAnnotationProvider">
|
||||||
|
<summary>
|
||||||
|
Annotation Provider implementation
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Metadata.Internal.MySQLFullAnnotationNames">
|
||||||
|
<summary>
|
||||||
|
RelationalFullAnnotationNames for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Metadata.Internal.MySQLAnnotationNames">
|
||||||
|
<summary>
|
||||||
|
Names for MySQL annotations.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Migrations.MySQLMigrationsSqlGenerator">
|
||||||
|
<summary>
|
||||||
|
MigrationSqlGenerator implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
<summary>
|
||||||
|
MigrationSqlGenerator implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Migrations.Operations.MySQLCreateDatabaseOperation">
|
||||||
|
<summary>
|
||||||
|
Create database operation class for migrations
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Migrations.Operations.MySQLDropDatabaseOperation">
|
||||||
|
<summary>
|
||||||
|
Drop database operation for migrations.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.MySQLCompositeMethodCallTranslator">
|
||||||
|
<summary>
|
||||||
|
RelationalCompositeMethodCallTranslator implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
<summary>
|
||||||
|
RelationalCompositeMethodCallTranslator implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Query.MySQLQueryGeneratorFactory">
|
||||||
|
<summary>
|
||||||
|
Implementation for QuerySqlGeneratorFactoryBase
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilder.Build">
|
||||||
|
<summary>
|
||||||
|
This API supports the Entity Framework Core infrastructure and is not intended to be used
|
||||||
|
directly from your code. This API may change or be removed in future releases.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilder.ToString">
|
||||||
|
<summary>
|
||||||
|
This API supports the Entity Framework Core infrastructure and is not intended to be used
|
||||||
|
directly from your code. This API may change or be removed in future releases.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.MySQLDatabaseCreator">
|
||||||
|
<summary>
|
||||||
|
Relational Database creator implementation in MySQL
|
||||||
|
</summary>
|
||||||
|
<summary>
|
||||||
|
Relational Database creator implementation in MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.MySQLDatabaseProviderServices">
|
||||||
|
<summary>
|
||||||
|
RelationalDatabaseProviderServices implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.MySQLCompositeMemberTranslator">
|
||||||
|
<summary>
|
||||||
|
RelationalCompositeMemberTranslator implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Update.MySQLModificationCommandBatch">
|
||||||
|
<summary>
|
||||||
|
AffectedCountModificationCommandBatch implementation for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.EntityFrameworkCore.Update.MySQLModificationCommandBatchFactory">
|
||||||
|
<summary>
|
||||||
|
IModificationCommandBatchFactory implemntation for MySQL
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions">
|
||||||
|
<summary>
|
||||||
|
Represents the context-option extensions implemented for MySQL.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder,System.String,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
|
||||||
|
<summary>
|
||||||
|
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
|
||||||
|
</summary>
|
||||||
|
<param name="optionsBuilder">DbContext option builder.</param>
|
||||||
|
<param name="connectionString">MySQL connection string.</param>
|
||||||
|
<param name="MySQLOptionsAction">DbContext option builder action.</param>
|
||||||
|
<returns>DbContext option builder using MySQL.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder,System.Data.Common.DbConnection,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
|
||||||
|
<summary>
|
||||||
|
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
|
||||||
|
</summary>
|
||||||
|
<param name="optionsBuilder">DbContext option builder.</param>
|
||||||
|
<param name="connection">MySQL connection object.</param>
|
||||||
|
<param name="MySQLOptionsAction">DbContext option builder action.</param>
|
||||||
|
<returns>DbContext option builder using MySQL.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL``1(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder{``0},System.String,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
|
||||||
|
<summary>
|
||||||
|
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TContext"><see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> type.</typeparam>
|
||||||
|
<param name="optionsBuilder">DbContext option builder.</param>
|
||||||
|
<param name="connectionString">MySQL connection string.</param>
|
||||||
|
<param name="MySQLOptionsAction">DbContext option builder action.</param>
|
||||||
|
<returns>DbContext option builder using MySQL.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL``1(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder{``0},System.Data.Common.DbConnection,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
|
||||||
|
<summary>
|
||||||
|
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TContext"><see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> type.</typeparam>
|
||||||
|
<param name="optionsBuilder">DbContext option builder.</param>
|
||||||
|
<param name="connection">MySQL connection object.</param>
|
||||||
|
<param name="MySQLOptionsAction">DbContext option builder action.</param>
|
||||||
|
<returns>DbContext option builder using MySQL.</returns>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
BIN
mysql/MySql.Data.Entity.EF6.dll
Normal file
BIN
mysql/MySql.Data.Entity.EF6.dll
Normal file
Binary file not shown.
172
mysql/MySql.Data.Entity.EF6.xml
Normal file
172
mysql/MySql.Data.Entity.EF6.xml
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>MySql.Data.Entity.EF6</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:MySql.Data.Entity.SqlFragmentVisitor">
|
||||||
|
<summary>
|
||||||
|
Visitor for SqlFragment and derived classes, useful for postprocessing and optimizations.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.ReplaceTableNameVisitor">
|
||||||
|
<summary>
|
||||||
|
Visitor to replace old table names with new table names. Used as part postprocessing of the code for fusing nested selects.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.Entity.SelectGenerator.TryFlatteningGroupBy(MySql.Data.Entity.SqlFragment)">
|
||||||
|
<summary>
|
||||||
|
If input sqlFragment is a group by structure, is flattened to remove some nested correlation queries.
|
||||||
|
</summary>
|
||||||
|
<param name="input"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.Entity.SqlGenerator.TryFusingSelect(MySql.Data.Entity.InputFragment)">
|
||||||
|
<summary>
|
||||||
|
If current fragment is select and its from clause is another select, try fuse the inner select with the outer select.
|
||||||
|
(Thus removing a nested query, which may have bad performance in Mysql).
|
||||||
|
</summary>
|
||||||
|
<param name="f">The fragment to probe and posibly optimize</param>
|
||||||
|
<returns>The fragment fused, or the original one.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.Entity.SqlGenerator.TryPromoteToLike(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.String)">
|
||||||
|
<summary>
|
||||||
|
Examines a binary expression to see if it is an special case suitable to conversion
|
||||||
|
to a more efficient and equivalent LIKE sql expression.
|
||||||
|
</summary>
|
||||||
|
<param name="left"></param>
|
||||||
|
<param name="right"></param>
|
||||||
|
<param name="op"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.MySqlConnectionFactory">
|
||||||
|
<summary>
|
||||||
|
Used for creating connections in Code First 4.3.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.MySqlExecutionStrategy">
|
||||||
|
<summary>
|
||||||
|
An execution strategy tailored for handling MySql Server transient errors.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:MySql.Data.Entity.MySqlExecutionStrategy.errorsToRetryOn">
|
||||||
|
<summary>
|
||||||
|
Different back off algorithms used for different errors.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithm">
|
||||||
|
<summary>
|
||||||
|
The base class for backoff algorithms.
|
||||||
|
</summary>
|
||||||
|
<remarks>Different transient error conditions require different approaches.</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.Entity.BackoffAlgorithm.GetNextDelay">
|
||||||
|
<summary>
|
||||||
|
The default implementation is an exponential delay backoff.
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.Entity.BackoffAlgorithm.Reset">
|
||||||
|
<summary>
|
||||||
|
Resets a backoff algorithm, so they can be reused.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1040">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm customized for the MySql error code 1040 - Too many connections.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1614">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm for the Mysql error code 1614 - Transaction branch was rolled back: deadlock was detected.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1205">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm customized for the MySql error code 1205 - Lock wait timeout exceeded; try restarting transaction.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1213">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm customized for MySql error code 1213 - Deadlock found when trying to get lock; try restarting transaction.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr2006">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm customized for MySql error code 2006 - MySQL server has gone away.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr2013">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm customized for MySql error code 2013 - Lost connection to MySQL server during query.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.BackoffAlgorithmNdb">
|
||||||
|
<summary>
|
||||||
|
Back-off algorithm customized for MySql Cluster (NDB) errors.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.MySqlMigrationCodeGenerator">
|
||||||
|
<summary>
|
||||||
|
Class used to customized code generation
|
||||||
|
to avoid dbo. prefix added on table names.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.MySqlMigrationSqlGenerator">
|
||||||
|
<summary>
|
||||||
|
Implementation of a MySql's Sql generator for EF 4.3 data migrations.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:MySql.Data.Entity.Properties.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.Entity.Properties.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.Entity.Properties.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.Entity.Properties.Resources.ConnectionMustBeOfTypeMySqlConnection">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection parameter must reference an object of type MySql.Data.MySqlConnection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.Entity.Properties.Resources.NoStoreTypeForEdmType">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to There is no store type corresponding to the EDM type '{0}' of primitive type '{1}'..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.Entity.Properties.Resources.TypeNotSupported">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The underlying provider does not support the type '{0}'..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:MySql.Data.Entity.Properties.Resources.WrongFunctionResultType">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Result type of a function is expected to be a collection of RowType or PrimitiveType.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.MySqlClient.MySqlProviderServices.SetExpectedTypes(System.Data.Entity.Core.Common.CommandTrees.DbCommandTree,MySql.Data.Entity.EFMySqlCommand)">
|
||||||
|
<summary>
|
||||||
|
Sets the expected column types
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.MySqlClient.MySqlProviderServices.SetQueryExpectedTypes(System.Data.Entity.Core.Common.CommandTrees.DbQueryCommandTree,MySql.Data.Entity.EFMySqlCommand)">
|
||||||
|
<summary>
|
||||||
|
Sets the expected column types for a given query command tree
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:MySql.Data.MySqlClient.MySqlProviderServices.SetFunctionExpectedTypes(System.Data.Entity.Core.Common.CommandTrees.DbFunctionCommandTree,MySql.Data.Entity.EFMySqlCommand)">
|
||||||
|
<summary>
|
||||||
|
Sets the expected column types for a given function command tree
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
1
mysql/MySql.Data.InstallState
Normal file
1
mysql/MySql.Data.InstallState
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><ArrayOfKeyValueOfanyTypeanyType xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="http://www.w3.org/2001/XMLSchema" z:Id="1" z:Type="System.Collections.Hashtable" z:Assembly="0" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><LoadFactor z:Id="2" z:Type="System.Single" z:Assembly="0" xmlns="">0.72</LoadFactor><Version z:Id="3" z:Type="System.Int32" z:Assembly="0" xmlns="">2</Version><Comparer i:nil="true" xmlns="" /><HashCodeProvider i:nil="true" xmlns="" /><HashSize z:Id="4" z:Type="System.Int32" z:Assembly="0" xmlns="">3</HashSize><Keys z:Id="5" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Id="6" z:Type="System.String" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">_reserved_nestedSavedStates</anyType><anyType z:Id="7" z:Type="System.String" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">_reserved_lastInstallerAttempted</anyType></Keys><Values z:Id="8" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Id="9" z:Type="System.Collections.IDictionary[]" z:Assembly="0" z:Size="1" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><ArrayOfKeyValueOfanyTypeanyType z:Id="10" z:Type="System.Collections.Hashtable" z:Assembly="0"><LoadFactor z:Id="11" z:Type="System.Single" z:Assembly="0" xmlns="">0.72</LoadFactor><Version z:Id="12" z:Type="System.Int32" z:Assembly="0" xmlns="">2</Version><Comparer i:nil="true" xmlns="" /><HashCodeProvider i:nil="true" xmlns="" /><HashSize z:Id="13" z:Type="System.Int32" z:Assembly="0" xmlns="">3</HashSize><Keys z:Id="14" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Ref="6" i:nil="true" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /><anyType z:Ref="7" i:nil="true" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /></Keys><Values z:Id="15" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Id="16" z:Type="System.Collections.IDictionary[]" z:Assembly="0" z:Size="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /><anyType z:Id="17" z:Type="System.Int32" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">-1</anyType></Values></ArrayOfKeyValueOfanyTypeanyType></anyType><anyType z:Id="18" z:Type="System.Int32" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">0</anyType></Values></ArrayOfKeyValueOfanyTypeanyType>
|
BIN
mysql/MySql.Data.dll
Normal file
BIN
mysql/MySql.Data.dll
Normal file
Binary file not shown.
10606
mysql/MySql.Data.xml
Normal file
10606
mysql/MySql.Data.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
mysql/MySql.Web.dll
Normal file
BIN
mysql/MySql.Web.dll
Normal file
Binary file not shown.
1493
mysql/MySql.Web.xml
Normal file
1493
mysql/MySql.Web.xml
Normal file
File diff suppressed because it is too large
Load Diff
1
setadpicture.bat
Normal file
1
setadpicture.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
powershell.exe -executionpolicy bypass -noprofile -windowstyle hidden -nologo -ExecutionPolicy ByPass -command "& 'C:\Aufgaben\personio\setadpicture.ps1'"
|
1
setadpicture.vbs
Normal file
1
setadpicture.vbs
Normal file
@ -0,0 +1 @@
|
|||||||
|
sCreateObject("Wscript.Shell").Run ".\setadpicture.bat", 0, True
|
48
start.ps1
Normal file
48
start.ps1
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Personio Sync Script (Personio -> MEHRKANAL AD)
|
||||||
|
.DESCRIPTION
|
||||||
|
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\POSTV>.\mk.ps1
|
||||||
|
<Startet den Sync für alle User>
|
||||||
|
.NOTES
|
||||||
|
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
|
||||||
|
Date: Sep 13, 2017
|
||||||
|
.Link
|
||||||
|
URL: https://developer.personio.de/v1.0/reference
|
||||||
|
#>
|
||||||
|
|
||||||
|
# 288 = 24 Stunden ( 288 x 5 (minuten) )
|
||||||
|
$MAXCOUNTER = "288"
|
||||||
|
|
||||||
|
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
|
||||||
|
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
|
||||||
|
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
|
||||||
|
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
|
||||||
|
|
||||||
|
if (!( Test-Path "$ScriptDir\tmp\counter.txt" )){
|
||||||
|
New-Item -ItemType File "$ScriptDir\tmp\counter.txt"
|
||||||
|
$COUNTER = 0
|
||||||
|
$COUNTER | Out-File "$ScriptDir\tmp\counter.txt"
|
||||||
|
} else {
|
||||||
|
|
||||||
|
[int]$COUNTER = Get-Content "$ScriptDir\tmp\counter.txt"
|
||||||
|
}
|
||||||
|
|
||||||
|
$COUNTER ++
|
||||||
|
switch ( $COUNTER )
|
||||||
|
{
|
||||||
|
{$_ -le $MAXCOUNTER } {
|
||||||
|
Write-Output "$COUNTER ist kleiner"
|
||||||
|
& "$PSScriptRoot\sync_diff.ps1"
|
||||||
|
}
|
||||||
|
{$_ -gt $MAXCOUNTER } {
|
||||||
|
Write-Output "$COUNTER ist größer"
|
||||||
|
& "$PSScriptRoot\sync_full.ps1"
|
||||||
|
& "$PSScriptRoot\sync_adpicture.ps1"
|
||||||
|
$COUNTER = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$COUNTER | Out-File "$ScriptDir\tmp\counter.txt"
|
140
sync_adpicture.ps1
Normal file
140
sync_adpicture.ps1
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Personio Sync Script (Personio -> MEHRKANAL AD)
|
||||||
|
.DESCRIPTION
|
||||||
|
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\POSTV>.\mk.ps1
|
||||||
|
<Startet den Sync für alle User>
|
||||||
|
.NOTES
|
||||||
|
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
|
||||||
|
Date: Sep 13, 2017
|
||||||
|
.Link
|
||||||
|
URL: https://developer.personio.de/v1.0/reference
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Variablen setzen
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$application = "https://api.personio.de";
|
||||||
|
$company = "5989";
|
||||||
|
|
||||||
|
# Define the user credentials
|
||||||
|
$username = "#TOREPLACE#";
|
||||||
|
$password = "#TOREPLACE#";
|
||||||
|
|
||||||
|
# Force TLS1.2
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
|
||||||
|
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
|
||||||
|
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
|
||||||
|
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
|
||||||
|
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
|
||||||
|
|
||||||
|
$IMPERSONATEADMIN = $ini.exchange.impersonateuser
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Functions
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Active Directory Modul laden
|
||||||
|
. .\functions\json_function.ps1
|
||||||
|
|
||||||
|
# Active Directory Modul laden
|
||||||
|
. .\functions\activedirectory_function.ps1
|
||||||
|
|
||||||
|
# Füge Log Klasse hinzu, Inspiriert von https://gist.github.com/9to5IT/9620565
|
||||||
|
. .\functions\log_function.ps1
|
||||||
|
|
||||||
|
# Füge Exchange Klassen hinzu
|
||||||
|
. .\functions\exchange_function.ps1
|
||||||
|
|
||||||
|
# Füge Personio Klassen hinzu
|
||||||
|
. .\functions\personio.ps1
|
||||||
|
|
||||||
|
# Füge SQLITE Klassen hinzu
|
||||||
|
. .\functions\sqlite.ps1
|
||||||
|
|
||||||
|
# http://www.spech.de/2016/06/sqlite-mit-der-powershell-nutzen/
|
||||||
|
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
|
||||||
|
Write-Log -Message "Aktiviere SQLITE Modul" -Level Warn
|
||||||
|
Import-Module "$($ScriptDir)\modules\sqlite\PSSQLite.psm1"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Script
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Starte Logging
|
||||||
|
Write-Log -Message "Starte Picture Import" -Level Info
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf "User" Daten
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
try {
|
||||||
|
$getallapiuserdata = $(Get-UserInfo).content | ConvertFrom-Json | Select-Object -expand "data"
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $_.Exception.Message - check_user_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Send-ErrorMail -Mail "Error: get User-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
$getallapiuserdata | foreach {
|
||||||
|
[PSCustomObject]@{
|
||||||
|
FirstName = $_.attributes.first_name.value | Select-Object -First 1
|
||||||
|
LastName = $_.attributes.last_name.value | Select-Object -First 1
|
||||||
|
Email = $_.attributes.email.value | Select-Object -First 1
|
||||||
|
Position = $_.attributes.position.value | Select-Object -First 1
|
||||||
|
Abteilung = $_.attributes.department.value.attributes.name | Select-Object -First 1
|
||||||
|
Tel = $_.attributes.dynamic_99874.value | Select-Object -First 1
|
||||||
|
Status = $_.attributes.status.value | Select-Object -First 1
|
||||||
|
Kostenstelle = $_.attributes.cost_centers.value.attributes.name | Select-Object -First 1
|
||||||
|
Vorgesetzter = $_.attributes.supervisor.value.attributes.email.value | Select-Object -First 1
|
||||||
|
Fax = $_.attributes.dynamic_137780.value | Select-Object -First 1
|
||||||
|
ID = $_.attributes.dynamic_99886.value | Select-Object -First 1
|
||||||
|
PersonioID = $_.attributes.id.value | Select-Object -First 1
|
||||||
|
Mobile = $_.attributes.dynamic_99877.value | Select-Object -First 1
|
||||||
|
HomeMobile = $_.attributes.dynamic_130998.value | Select-Object -First 1
|
||||||
|
} | Where-Object { $_.Status -notLike "inactive" } | ForEach-Object {
|
||||||
|
if ( ! $_.ID -eq "$null" ) {
|
||||||
|
$photo = (Get-UserPicture $_.PersonioID).Content 2> $null
|
||||||
|
Write-Output "Prüfe: $($_.ID)"
|
||||||
|
$PhotoFile = "C:\Aufgaben\personio\pictures\$($_.ID).jpg"
|
||||||
|
if (! [string]::IsNullOrWhiteSpace($photo)) {
|
||||||
|
[System.IO.File]::WriteAllBytes($PhotoFile, $photo)
|
||||||
|
$file = [io.file]::ReadAllBytes($PhotoFile)
|
||||||
|
If ($file.length -gt 10000) {
|
||||||
|
Write-host " - Foto ist zu groß für AAD" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
$Current = (Get-ADUser "$($_.ID)" -Properties thumbnailPhoto).thumbnailPhoto
|
||||||
|
if ($current -eq $null) {
|
||||||
|
Write-Host " - hat bislang kein Foto... setze" -ForegroundColor Yellow
|
||||||
|
Set-ADUser -Identity "$($_.ID)" -Replace @{thumbnailPhoto = $file }
|
||||||
|
}
|
||||||
|
elseif (Compare-Object $photo $current) {
|
||||||
|
Write-Host " - hat ein neues Foto... setze" -ForegroundColor Yellow
|
||||||
|
Set-ADUser -Identity "$($_.ID)" -Replace @{thumbnailPhoto = $file }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host " - Bild bereits aktuell" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-host " - Kein Foto in Personio vorhanden" -ForegroundColor Yellow
|
||||||
|
Set-ADUser -Identity "$($_.ID)" -Clear thumbnailPhoto
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Starte Logging
|
||||||
|
Write-Log -Message "Beende Picture Import" -Level Info
|
294
sync_diff.ps1
Normal file
294
sync_diff.ps1
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Personio Sync Script (Personio -> MEHRKANAL AD)
|
||||||
|
.DESCRIPTION
|
||||||
|
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\POSTV>.\mk.ps1
|
||||||
|
<Startet den Sync für alle User>
|
||||||
|
.NOTES
|
||||||
|
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
|
||||||
|
Date: Sep 13, 2017
|
||||||
|
.Link
|
||||||
|
URL: https://developer.personio.de/v1.0/reference
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Variablen setzen
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$application = "https://api.personio.de";
|
||||||
|
$company = "5989";
|
||||||
|
|
||||||
|
# Define the user credentials
|
||||||
|
$username = "#TOREPLACE#";
|
||||||
|
$password = "#TOREPLACE#";
|
||||||
|
|
||||||
|
# Force TLS1.2
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
|
||||||
|
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
|
||||||
|
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
|
||||||
|
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
|
||||||
|
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
|
||||||
|
|
||||||
|
$IMPERSONATEADMIN = $ini.exchange.impersonateuser
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Functions
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Active Directory Modul laden
|
||||||
|
. .\functions\json_function.ps1
|
||||||
|
|
||||||
|
# Active Directory Modul laden
|
||||||
|
. .\functions\activedirectory_function.ps1
|
||||||
|
|
||||||
|
# Füge Log Klasse hinzu, Inspiriert von https://gist.github.com/9to5IT/9620565
|
||||||
|
. .\functions\log_function.ps1
|
||||||
|
|
||||||
|
# Füge Exchange Klassen hinzu
|
||||||
|
. .\functions\exchange_function.ps1
|
||||||
|
|
||||||
|
# Füge Personio Klassen hinzu
|
||||||
|
. .\functions\personio.ps1
|
||||||
|
|
||||||
|
# Füge SQLITE Klassen hinzu
|
||||||
|
. .\functions\sqlite.ps1
|
||||||
|
|
||||||
|
Write-Log -Message "Starte DIFF Import" -Level Info
|
||||||
|
|
||||||
|
# http://www.spech.de/2016/06/sqlite-mit-der-powershell-nutzen/
|
||||||
|
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
|
||||||
|
Write-Log -Message "Aktiviere SQLITE Modul" -Level Warn
|
||||||
|
#Import-Module "$($ScriptDir)\modules\sqlite\PSSQLite.psm1"
|
||||||
|
Import-Module PSSQLite
|
||||||
|
}
|
||||||
|
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
|
||||||
|
Send-ErrorMail -Mail "Error: Sqlite Module not found / working" -VACSTART "-" -VACENDE "-" -VACID "-"
|
||||||
|
Write-Log -Message "Aktiviere SQLITE Modul" -Level Error
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
$force = 0
|
||||||
|
$CHANGEDUSERDATA = $false
|
||||||
|
$CHANGEDAPPOINTMENT = $false
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf "neue" Kalender Daten
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
try {
|
||||||
|
Write-Log -Message "Get tmp Data (convert to json)" -Level Warn
|
||||||
|
$tmpcontent = $(Get-DiffUserVacation)
|
||||||
|
$tmpcontent | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_diff_tmp_test.csv"
|
||||||
|
$getallapidata = $($tmpcontent).content | ConvertFrom-Json | select -expand "data"
|
||||||
|
Write-Log -Message "Create tmp Data (convert to json)" -Level Warn
|
||||||
|
$tmpgetallapidata = ($getallapidata).attributes | convertto-json -depth 8
|
||||||
|
Write-Log -Message "Write tmp Data" -Level Warn
|
||||||
|
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_diff_tmp.csv"
|
||||||
|
if (Test-Path "$ScriptDir\$($ini.general.tmp_path)\data_diff.csv") {
|
||||||
|
Write-Log -Message "Compare tmp Data" -Level Warn
|
||||||
|
$fileA = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data_diff.csv"
|
||||||
|
$fileB = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data_diff_tmp.csv"
|
||||||
|
if ( Compare-Object "$fileA" "$fileB") {
|
||||||
|
Write-Log -Message "Daten haben sich geändert..." -Level Info
|
||||||
|
$CHANGEDAPPOINTMENT = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($force -eq "0") {
|
||||||
|
|
||||||
|
Write-Log -Message "Daten haben sich NICHT geändert... Breche ab" -Level Warn
|
||||||
|
$CHANGEDAPPOINTMENT = $false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Daten haben sich NICHT geändert... force aktiv" -Level Info
|
||||||
|
$CHANGEDAPPOINTMENT = $true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - check_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Send-ErrorMail -Mail "Error: get Cal-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
############################## DEBUG
|
||||||
|
#$CHANGEDUSERDATA = $true
|
||||||
|
#$CHANGEDAPPOINTMENT = $false
|
||||||
|
############################## DEBUG
|
||||||
|
|
||||||
|
if ( $CHANGEDUSERDATA -eq $false -and $CHANGEDAPPOINTMENT -eq $false) {
|
||||||
|
Write-Log -Message "Keine Datenänderungen vorhanden.. Beende Import" -Level Info
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Aktualisiere Kalenderdaten des Users -> $_.ID
|
||||||
|
######################################################################################
|
||||||
|
if ( $CHANGEDAPPOINTMENT -eq $true) {
|
||||||
|
Create-ExMsalToken
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Add new Appointments
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
#2022-09-21T00:00:00+02:00
|
||||||
|
# $DatePattern = "yyyy-MM-ddTHH:mm:ssK"
|
||||||
|
$DatePattern = "MM/dd/yyyy HH:mm:ss"
|
||||||
|
$getallapidata | where { $_.attributes.status -match "approved" -and [datetime]::ParseExact($_.attributes.start_date, $DatePattern, $null) -gt $STARTDATEOLDEST -and ([DateTime]::ParseExact($_.attributes.start_date, $DatePattern, $null).Year) -ge "2022" } | ForEach-Object {
|
||||||
|
[PSCustomObject]@{
|
||||||
|
"VACID" = $_.attributes.id | select -First 1
|
||||||
|
"VACStatus" = $_.attributes.status | select -First 1
|
||||||
|
"VACStart" = $_.attributes.start_date | select -First 1
|
||||||
|
"VACEnde" = $_.attributes.end_date | select -First 1
|
||||||
|
"VACTage" = $_.attributes.days_count | select -First 1
|
||||||
|
"VACHalbTagAnfang" = $_.attributes.half_day_start | select -First 1
|
||||||
|
"VACHalbTagEnde" = $_.attributes.half_day_end | select -First 1
|
||||||
|
"VACTyp" = $_.attributes.time_off_type.attributes.name | select -First 1
|
||||||
|
"VACTypID" = $_.attributes.time_off_type.attributes.id | select -First 1
|
||||||
|
"VACEMail" = $_.attributes.employee.attributes.email.value | select -First 1
|
||||||
|
"VACFirstName" = $_.attributes.employee.attributes.first_name.value | select -First 1
|
||||||
|
"VACLastName" = $_.attributes.employee.attributes.last_name.value | select -First 1
|
||||||
|
}
|
||||||
|
} | ForEach-Object {
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf gelöschte Termine
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$tmpmail = "$($_.VACEMail)"
|
||||||
|
Write-log -Message "Prüfe $tmpmail" -Level Info
|
||||||
|
$USERMAIL = (Get-ADUser -Filter { EmailAddress -eq $tmpmail }).UserPrincipalName
|
||||||
|
$USERID = (Get-ADUser -Filter { EmailAddress -eq $tmpmail }).SamAccountName
|
||||||
|
|
||||||
|
if (! (Test-path -Path "$($ScriptDir)\sqlite\$($USERID).db" )) {
|
||||||
|
CREATE-SQLITE $USERID
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
If ((Get-Item "$($ScriptDir)\sqlite\$($USERID).db").length -le 0kb) {
|
||||||
|
Remove-Item "$($ScriptDir)\sqlite\$($USERID).db"
|
||||||
|
CREATE-SQLITE $USERID
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$STARTDATE = Get-Date -date $_.VACStart
|
||||||
|
$STARTDATEOLDEST = (get-date).adddays(-60)
|
||||||
|
$ENDDATE = Get-Date -date $_.VACEnde
|
||||||
|
$ENDDATEOLDEST = (get-date).adddays(+360)
|
||||||
|
|
||||||
|
|
||||||
|
[datetime]$VACStart = $_.VACStart
|
||||||
|
[datetime]$VACEnde = $_.VACEnde
|
||||||
|
$VACHalbTagAnfang = $_.VACHalbTagAnfang
|
||||||
|
$VACHalbTagEnde = $_.VACHalbTagEnde
|
||||||
|
$VACTage = $_.VACTage
|
||||||
|
|
||||||
|
|
||||||
|
# Berechnung Urlaubsanfang und Urlaubsende
|
||||||
|
if ($VACTAGE -lt 1) {
|
||||||
|
if ($VACHalbTagAnfang -eq "1") {
|
||||||
|
$VACStart = $VACStart
|
||||||
|
}
|
||||||
|
if ($VACHalbTagEnde -eq "1") {
|
||||||
|
$VACStart = $VACStart.AddHours(13)
|
||||||
|
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$VACEnde = $VACEnde.AddHours(13)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($VACHalbTagAnfang -eq "1") {
|
||||||
|
$VACStart = $VACStart.AddHours(13)
|
||||||
|
}
|
||||||
|
if ($VACHalbTagEnde -eq "1") {
|
||||||
|
$VACEnde = $VACEnde.AddHours(13)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf vorhandensein des Kalendereintrags in SQLITE Objekt
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
$GETRESPONSE = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
|
||||||
|
if ($GETRESPONSE -eq $null) {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) nicht gefunden" -Level Warn
|
||||||
|
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Termin ist nicht im SQLITE vorhanden..
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
|
||||||
|
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
|
||||||
|
echo $CREATEEWSOK
|
||||||
|
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK
|
||||||
|
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) wurde hinzugefügt Start: $($_.VACStart) STOP: $VACEnde TYP: $($_.VACTYP)" -Level Warn
|
||||||
|
Write-Log -Message "Kalendereintrag: $($APIRESP)" -Level Warn
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
|
||||||
|
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Eintrag wurde gefunden... vergleiche" -Level Info
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Vergleiche API-Response mit vorhandenen SQLITE Daten...
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
|
||||||
|
$APIRESP = New-Object psobject -Property @{USERID = $USERID; MAIL = $_.VACEMail; VACID = $_.VACID; VACTYP = $_.VACTYP; VACSTART = $VACStart; VACENDE = $VACEnde }
|
||||||
|
$SQLITERESP = New-Object psobject -Property @{USERID = ($GETRESPONSE).Userid; MAIL = ($GETRESPONSE).Mail; VACID = ($GETRESPONSE).id; VACTYP = ($GETRESPONSE).Vactype; VACSTART = [datetime]($GETRESPONSE).Vacstart; VACENDE = [datetime]($GETRESPONSE).Vacend }
|
||||||
|
if (Compare-Object $APIRESP $SQLITERESP -Property VACID, MAIL, VACSTART, VACENDE, VACTYPE ) {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) haben sich geändert" -Level Warn
|
||||||
|
Write-Log -Message "Kalendereintrag: $($APIRESP)" -Level Warn
|
||||||
|
Write-Log -Message "Kalendereintrag: $($SQLITERESP)" -Level Warn
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Termin muss in Exchange geändert werden
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$EXCHANGEMEETINGID = ($GETRESPONSE).Vacexchangeid
|
||||||
|
Remove-CalendarItem -CALID ($GETRESPONSE).Vacexchangeid -Impersonate ($GETRESPONSE).Mail
|
||||||
|
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
|
||||||
|
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
|
||||||
|
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
|
||||||
|
echo $CREATEEWSOK
|
||||||
|
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
|
||||||
|
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Erhalte Kalender-Daten und bereite diese auf...
|
||||||
|
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_diff.csv"
|
||||||
|
|
||||||
|
# Starte Logging
|
||||||
|
Write-Log -Message "Beende Import" -Level Info
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Eintrag ist gleich..." -Level Info
|
||||||
|
}
|
||||||
|
|
405
sync_full.ps1
Normal file
405
sync_full.ps1
Normal file
@ -0,0 +1,405 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Personio Sync Script (Personio -> MEHRKANAL AD)
|
||||||
|
.DESCRIPTION
|
||||||
|
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\POSTV>.\mk.ps1
|
||||||
|
<Startet den Sync für alle User>
|
||||||
|
.NOTES
|
||||||
|
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
|
||||||
|
Date: Sep 13, 2017
|
||||||
|
.Link
|
||||||
|
URL: https://developer.personio.de/v1.0/reference
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Variablen setzen
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$application = "https://api.personio.de";
|
||||||
|
$company = "5989";
|
||||||
|
|
||||||
|
# Define the user credentials
|
||||||
|
$username = "#TOREPLACE#";
|
||||||
|
$password = "#TOREPLACE#";
|
||||||
|
|
||||||
|
# Force TLS1.2
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
|
||||||
|
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
|
||||||
|
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
|
||||||
|
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
|
||||||
|
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
|
||||||
|
|
||||||
|
$IMPERSONATEADMIN = $ini.exchange.impersonateuser
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Functions
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Active Directory Modul laden
|
||||||
|
. .\functions\json_function.ps1
|
||||||
|
|
||||||
|
# Active Directory Modul laden
|
||||||
|
. .\functions\activedirectory_function.ps1
|
||||||
|
|
||||||
|
# Füge Log Klasse hinzu, Inspiriert von https://gist.github.com/9to5IT/9620565
|
||||||
|
. .\functions\log_function.ps1
|
||||||
|
|
||||||
|
# Füge Exchange Klassen hinzu
|
||||||
|
. .\functions\exchange_function.ps1
|
||||||
|
|
||||||
|
# Füge Personio Klassen hinzu
|
||||||
|
. .\functions\personio.ps1
|
||||||
|
|
||||||
|
# Füge SQLITE Klassen hinzu
|
||||||
|
. .\functions\sqlite.ps1
|
||||||
|
|
||||||
|
# Starte Logging
|
||||||
|
Write-Log -Message "Starte FULL Import" -Level Info
|
||||||
|
|
||||||
|
# http://www.spech.de/2016/06/sqlite-mit-der-powershell-nutzen/
|
||||||
|
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
|
||||||
|
Write-Log -Message "Aktiviere SQLITE Modul" -Level Warn
|
||||||
|
#Import-Module "$($ScriptDir)\modules\sqlite\PSSQLite.psm1"
|
||||||
|
Import-Module PSSQLite
|
||||||
|
}
|
||||||
|
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
|
||||||
|
Send-ErrorMail -Mail "Error: Sqlite Module not found / working" -VACSTART "-" -VACENDE "-" -VACID "-"
|
||||||
|
Write-Log -Message "Aktiviere SQLITE Modul" -Level Error
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
$force = 0
|
||||||
|
$CHANGEDUSERDATA = $true
|
||||||
|
$CHANGEDAPPOINTMENT = $true
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf "User" Daten
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
try {
|
||||||
|
$getallapiuserdata = $(Get-UserInfo).content | ConvertFrom-Json | Select-Object -expand "data"
|
||||||
|
$tmpgetallapiuserdata = ($getallapiuserdata).attributes | convertto-json -depth 5
|
||||||
|
|
||||||
|
$tmpgetallapiuserdata | out-file "$ScriptDir\$($ini.general.tmp_path)\userdata_tmp.csv"
|
||||||
|
if (Test-Path "$ScriptDir\$($ini.general.tmp_path)\userdata.csv") {
|
||||||
|
$fileA = Get-Content "$ScriptDir\$($ini.general.tmp_path)\userdata.csv"
|
||||||
|
$fileB = Get-Content "$ScriptDir\$($ini.general.tmp_path)\userdata_tmp.csv"
|
||||||
|
if ( Compare-Object "$fileA" "$fileB") {
|
||||||
|
Write-Log -Message "User-Daten haben sich geändert..." -Level Info
|
||||||
|
$CHANGEDUSERDATA = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($force -eq "0") {
|
||||||
|
Write-Log -Message "User-Daten haben sich NICHT geändert... Breche ab" -Level Warn
|
||||||
|
$CHANGEDUSERDATA = $false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Daten haben sich NICHT geändert... force aktiv" -Level Info
|
||||||
|
$CHANGEDUSERDATA = $true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $_.Exception.Message - check_user_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Send-ErrorMail -Mail "Error: get User-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf "neue" Kalender Daten
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
try {
|
||||||
|
Write-Log -Message "Get tmp Data (convert to json)" -Level Warn
|
||||||
|
$(Get-UserVacation) | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_tmp_test.csv"
|
||||||
|
$getallapidata = $(Get-UserVacation).content | ConvertFrom-Json | select -expand "data"
|
||||||
|
Write-Log -Message "Create tmp Data (convert to json)" -Level Warn
|
||||||
|
$tmpgetallapidata = ($getallapidata).attributes | convertto-json -depth 8
|
||||||
|
Write-Log -Message "Write tmp Data" -Level Warn
|
||||||
|
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_tmp.csv"
|
||||||
|
if (Test-Path "$ScriptDir\$($ini.general.tmp_path)\data.csv") {
|
||||||
|
Write-Log -Message "Compare tmp Data" -Level Warn
|
||||||
|
$fileA = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data.csv"
|
||||||
|
$fileB = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data_tmp.csv"
|
||||||
|
if ( Compare-Object "$fileA" "$fileB") {
|
||||||
|
Write-Log -Message "Daten haben sich geändert..." -Level Info
|
||||||
|
$CHANGEDAPPOINTMENT = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($force -eq "0") {
|
||||||
|
|
||||||
|
Write-Log -Message "Daten haben sich NICHT geändert... Breche ab" -Level Warn
|
||||||
|
$CHANGEDAPPOINTMENT = $false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Daten haben sich NICHT geändert... force aktiv" -Level Info
|
||||||
|
$CHANGEDAPPOINTMENT = $true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Log -Message "Error: $($_.Exception.Message) - check_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
|
||||||
|
Send-ErrorMail -Mail "Error: get Cal-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
############################## DEBUG
|
||||||
|
#$CHANGEDUSERDATA = $true
|
||||||
|
#$CHANGEDAPPOINTMENT = $false
|
||||||
|
############################## DEBUG
|
||||||
|
|
||||||
|
if ( $CHANGEDUSERDATA -eq $false -and $CHANGEDAPPOINTMENT -eq $false) {
|
||||||
|
Write-Log -Message "Keine Datenänderungen vorhanden.. Beende Import" -Level Info
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
Create-ExMsalToken
|
||||||
|
$getallapiuserdata | foreach {
|
||||||
|
[PSCustomObject]@{
|
||||||
|
FirstName = $_.attributes.first_name.value | Select-Object -First 1
|
||||||
|
LastName = $_.attributes.last_name.value | Select-Object -First 1
|
||||||
|
Email = $_.attributes.email.value | Select-Object -First 1
|
||||||
|
Position = $_.attributes.position.value | Select-Object -First 1
|
||||||
|
Abteilung = $_.attributes.department.value.attributes.name | Select-Object -First 1
|
||||||
|
Tel = $_.attributes.dynamic_99874.value | Select-Object -First 1
|
||||||
|
Status = $_.attributes.status.value | Select-Object -First 1
|
||||||
|
Kostenstelle = $_.attributes.cost_centers.value.attributes.name | Select-Object -First 1
|
||||||
|
Vorgesetzter = $_.attributes.supervisor.value.attributes.email.value | Select-Object -First 1
|
||||||
|
Fax = $_.attributes.dynamic_137780.value | Select-Object -First 1
|
||||||
|
ID = $_.attributes.dynamic_99886.value | Select-Object -First 1
|
||||||
|
PersonioID = $_.attributes.id.value | Select-Object -First 1
|
||||||
|
Mobile = $_.attributes.dynamic_99877.value | Select-Object -First 1
|
||||||
|
HomeMobile = $_.attributes.dynamic_130998.value | Select-Object -First 1
|
||||||
|
} | Where-Object { $_.Status -notLike "inactive" } | ForEach-Object {
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe ob die ID aus Personio in der AD enthalten ist
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
if ( ! $_.ID -eq "$null" ) {
|
||||||
|
Write-Log -Message "Gefunden: $($_.FirstName) $($_.LastName) = $($_.ID) $($_.Kostenstelle)" -Level Info
|
||||||
|
if ( (Get-ADUser $_.ID -ErrorAction SilentlyContinue) -eq "$false") {
|
||||||
|
Write-Log -Message "Mitarbeiter ID nicht korrekt: $($_.ID)" -Level Error
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Mitarbeiter gefunden $($_.ID)" -Level Info
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Aktualisiere AD Daten des Users -> $_.ID
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
if ($CHANGEDUSERDATA -eq $true) {
|
||||||
|
SYNC-ADUser -USERNAME $_.ID -Position $_.Position -Abteilung $_.Abteilung -Tel $_.Tel -Fax $_.Fax -Manager $_.Vorgesetzter -Mobile $_.Mobile -HomeMobile $_.HomeMobile
|
||||||
|
}
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Aktualisiere Kalenderdaten des Users -> $_.ID
|
||||||
|
######################################################################################
|
||||||
|
if ( $CHANGEDAPPOINTMENT -eq $true) {
|
||||||
|
|
||||||
|
$USERMAIL = $_.Email
|
||||||
|
$USERID = $_.ID
|
||||||
|
if (! (Test-path -Path "$($ScriptDir)\sqlite\$($_.ID).db" )) {
|
||||||
|
CREATE-SQLITE $USERID
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
If ((Get-Item "$($ScriptDir)\sqlite\$($_.ID).db").length -le 0kb) {
|
||||||
|
Remove-Item "$($ScriptDir)\sqlite\$($_.ID).db"
|
||||||
|
CREATE-SQLITE $USERID
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# DELETE old and dup Appointments
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$USERAPPOINTMENTSSQLITE = GET-SQLITEUSERAPPOINTMENTS -USERID $USERID
|
||||||
|
$USERAPPOINTMENTSSQLITE | foreach {
|
||||||
|
if ( $getallapidata.attributes.id -notcontains "$($_.Id)" ) {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($($_.Id)) für $($USERID) nicht mehr in Personio enthalten... delete" -Level WARN
|
||||||
|
$GETOLDEXCHANGEID = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
|
||||||
|
$EXCHANGEMEETINGID = ($GETOLDEXCHANGEID).Vacexchangeid
|
||||||
|
|
||||||
|
if ( $EXCHANGEMEETINGID -notlike "False" ) {
|
||||||
|
if ( Remove-CalendarItem -CALID "$($EXCHANGEMEETINGID)" -Impersonate ($GETOLDEXCHANGEID).Mail ) {
|
||||||
|
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
|
||||||
|
Write-Log -Message "Kalendereintrag und SQLITE Daten: $($($_.Id)) für $($USERID) gelöscht" -Level WARN
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Kalendereintrag : $($($_.Id)) für $($USERID) konnte nicht gelöscht werden" -Level WARN
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($($_.Id)) für $($USERID) fehlerhafte SQLITE Daten... delete wird anhand Datum durchgeführt" -Level WARN
|
||||||
|
$EXCHANGEMEETINGSTART = ($GETOLDEXCHANGEID).Vacstart
|
||||||
|
$EXCHANGEMEETINGEND = ($GETOLDEXCHANGEID).Vacend
|
||||||
|
if ( Remove-CalendarItemByDate -Start $EXCHANGEMEETINGSTART -End $EXCHANGEMEETINGEND -Impersonate ($GETOLDEXCHANGEID).Mail ) {
|
||||||
|
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$GETOLDEXCHANGEID = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
|
||||||
|
$EXCHANGEMEETINGSTART = ($GETOLDEXCHANGEID).Vacstart
|
||||||
|
$EXCHANGEMEETINGEND = ($GETOLDEXCHANGEID).Vacend
|
||||||
|
Remove-DupCalendarItem -Start "$($EXCHANGEMEETINGSTART)" -End "$($EXCHANGEMEETINGEND)" -Impersonate ($GETOLDEXCHANGEID).Mail -USERID "$($USERID)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Write-Log -Message "Lösche nicht zuordbare Kalendereinträge für $($USERID) in SQLITE" -Level Info
|
||||||
|
DELETE-WRONGSQLITEDATA -USERID $USERID
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Add new Appointments
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
#2022-09-21T00:00:00+02:00
|
||||||
|
#$DatePattern = "yyyy-MM-ddTHH:mm:ssK"
|
||||||
|
$DatePattern = "MM/dd/yyyy HH:mm:ss"
|
||||||
|
$getallapidata | where { $_.attributes.employee.attributes.email.value -Like $USERMAIL -and $_.attributes.status -match "approved" -and [datetime]::ParseExact($_.attributes.start_date, $DatePattern, $null) -gt $STARTDATEOLDEST -and ([DateTime]::ParseExact($_.attributes.start_date, $DatePattern, $null).Year) -ge "2018" } | ForEach-Object {
|
||||||
|
[PSCustomObject]@{
|
||||||
|
"VACID" = $_.attributes.id | select -First 1
|
||||||
|
"VACStatus" = $_.attributes.status | select -First 1
|
||||||
|
"VACStart" = $_.attributes.start_date | select -First 1
|
||||||
|
"VACEnde" = $_.attributes.end_date | select -First 1
|
||||||
|
"VACTage" = $_.attributes.days_count | select -First 1
|
||||||
|
"VACHalbTagAnfang" = $_.attributes.half_day_start | select -First 1
|
||||||
|
"VACHalbTagEnde" = $_.attributes.half_day_end | select -First 1
|
||||||
|
"VACTyp" = $_.attributes.time_off_type.attributes.name | select -First 1
|
||||||
|
"VACTypID" = $_.attributes.time_off_type.attributes.id | select -First 1
|
||||||
|
"VACEMail" = $_.attributes.employee.attributes.email.value | select -First 1
|
||||||
|
"VACFirstName" = $_.attributes.employee.attributes.first_name.value | select -First 1
|
||||||
|
"VACLastName" = $_.attributes.employee.attributes.last_name.value | select -First 1
|
||||||
|
}
|
||||||
|
} | ForEach-Object {
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf gelöschte Termine
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$STARTDATE = Get-Date -date $_.VACStart
|
||||||
|
$STARTDATEOLDEST = (get-date).adddays(-60)
|
||||||
|
$ENDDATE = Get-Date -date $_.VACEnde
|
||||||
|
$ENDDATEOLDEST = (get-date).adddays(+360)
|
||||||
|
|
||||||
|
|
||||||
|
[datetime]$VACStart = $_.VACStart
|
||||||
|
[datetime]$VACEnde = $_.VACEnde
|
||||||
|
$VACHalbTagAnfang = $_.VACHalbTagAnfang
|
||||||
|
$VACHalbTagEnde = $_.VACHalbTagEnde
|
||||||
|
$VACTage = $_.VACTage
|
||||||
|
|
||||||
|
|
||||||
|
# Berechnung Urlaubsanfang und Urlaubsende
|
||||||
|
if ($VACTAGE -lt 1) {
|
||||||
|
if ($VACHalbTagAnfang -eq "1") {
|
||||||
|
$VACStart = $VACStart
|
||||||
|
}
|
||||||
|
if ($VACHalbTagEnde -eq "1") {
|
||||||
|
$VACStart = $VACStart.AddHours(13)
|
||||||
|
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$VACEnde = $VACEnde.AddHours(13)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($VACHalbTagAnfang -eq "1") {
|
||||||
|
$VACStart = $VACStart.AddHours(13)
|
||||||
|
}
|
||||||
|
if ($VACHalbTagEnde -eq "1") {
|
||||||
|
$VACEnde = $VACEnde.AddHours(13)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Prüfe auf vorhandensein des Kalendereintrags in SQLITE Objekt
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
|
$GETRESPONSE = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
|
||||||
|
if ($GETRESPONSE -eq $null) {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) nicht gefunden" -Level Warn
|
||||||
|
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Termin ist nicht im SQLITE vorhanden..
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
|
||||||
|
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
|
||||||
|
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK
|
||||||
|
Remove-DupCalendarItem -Start "$($VACStart)" -End "$($VACEnde)" -Impersonate $_.VACEMail -USERID "$($USERID)"
|
||||||
|
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) angelegt und wenn vorhanden dupplikate gelöscht" -Level Info
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
|
||||||
|
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Vergleiche API-Response mit vorhandenen SQLITE Daten...
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
|
||||||
|
$APIRESP = New-Object psobject -Property @{USERID = $USERID; MAIL = $_.VACEMail; VACID = $_.VACID; VACTYP = $_.VACTYP; VACSTART = $VACStart; VACENDE = $VACEnde }
|
||||||
|
$SQLITERESP = New-Object psobject -Property @{USERID = ($GETRESPONSE).Userid; MAIL = ($GETRESPONSE).Mail; VACID = ($GETRESPONSE).id; VACTYP = ($GETRESPONSE).Vactype; VACSTART = [datetime]($GETRESPONSE).Vacstart; VACENDE = [datetime]($GETRESPONSE).Vacend }
|
||||||
|
if (Compare-Object $APIRESP $SQLITERESP -Property VACID, MAIL, VACSTART, VACENDE, VACTYPE ) {
|
||||||
|
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) haben sich geändert" -Level Warn
|
||||||
|
Write-Log -Message "Kalendereintrag: $($APIRESP)" -Level Warn
|
||||||
|
Write-Log -Message "Kalendereintrag: $($SQLITERESP)" -Level Warn
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
# Termin muss in Exchange geändert werden
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
$EXCHANGEMEETINGID = ($GETRESPONSE).Vacexchangeid
|
||||||
|
Remove-CalendarItem -CALID "$(($GETRESPONSE).Vacexchangeid)" -Impersonate ($GETRESPONSE).Mail
|
||||||
|
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
|
||||||
|
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
|
||||||
|
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
|
||||||
|
#$Name=$($_.VACEMail).Split("@")[0]
|
||||||
|
echo $CREATEEWSOK
|
||||||
|
#exit
|
||||||
|
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK.Replace("Microsoft.Exchange.WebServices.Data.Appointment ",'')
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
|
||||||
|
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Erhalte Kalender-Daten und bereite diese auf...
|
||||||
|
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data.csv"
|
||||||
|
$tmpgetallapiuserdata | out-file "$ScriptDir\$($ini.general.tmp_path)\userdata.csv"
|
||||||
|
|
||||||
|
# Starte Logging
|
||||||
|
Write-Log -Message "Beende Import" -Level Info
|
Loading…
Reference in New Issue
Block a user