From eb60910efa6e8b5d590ec9565bd3ef1cc361f6db Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 3 Jan 2024 18:47:49 +0100 Subject: [PATCH 01/17] pushing infra code --- infra/bicep/main.bicep | 187 +++++++++++++++ infra/bicep/modules/app-insights.bicep | 38 +++ infra/bicep/modules/azure-openai.bicep | 149 ++++++++++++ infra/bicep/modules/container-registry.bicep | 116 ++++++++++ infra/bicep/modules/key-vault.bicep | 119 ++++++++++ infra/bicep/modules/linux-machine.bicep | 131 +++++++++++ .../modules/machine-learning-workspace.bicep | 170 ++++++++++++++ .../modules/machinelearningnetworking.bicep | 108 +++++++++ infra/bicep/modules/network.bicep | 66 ++++++ infra/bicep/modules/nsg.bicep | 139 +++++++++++ infra/bicep/modules/rolesAssignments.bicep | 37 +++ infra/bicep/modules/storage.bicep | 216 ++++++++++++++++++ infra/bicep/scripts/deploy-infra.sh | 200 ++++++++++++++++ 13 files changed, 1676 insertions(+) create mode 100644 infra/bicep/main.bicep create mode 100644 infra/bicep/modules/app-insights.bicep create mode 100644 infra/bicep/modules/azure-openai.bicep create mode 100644 infra/bicep/modules/container-registry.bicep create mode 100644 infra/bicep/modules/key-vault.bicep create mode 100644 infra/bicep/modules/linux-machine.bicep create mode 100644 infra/bicep/modules/machine-learning-workspace.bicep create mode 100644 infra/bicep/modules/machinelearningnetworking.bicep create mode 100644 infra/bicep/modules/network.bicep create mode 100644 infra/bicep/modules/nsg.bicep create mode 100644 infra/bicep/modules/rolesAssignments.bicep create mode 100644 infra/bicep/modules/storage.bicep create mode 100755 infra/bicep/scripts/deploy-infra.sh diff --git a/infra/bicep/main.bicep b/infra/bicep/main.bicep new file mode 100644 index 000000000..888ee5851 --- /dev/null +++ b/infra/bicep/main.bicep @@ -0,0 +1,187 @@ +@description('Location for all resources.') +param location string = resourceGroup().location + +@description('Type of environment (dev, qa, prod, ...).') +param environmentType string + +@description('The SKU for Key Vault.') +param keyVaultSku string = 'premium' + +@description('Public SSH key to connect to the Linux jumpbox') +param jumpboxSshKey string + +@description('Associated private SSH key to connect to the Linux jumpbox') +param jumpboxSshPrivateKey string + +@description('Enable public access to ease dev tests?') +param enableNetworkIsolation bool = false + +@description('Set of tags to apply to all resources.') +param tags object = { + environmentType: environmentType +} +// Parameters for the storage account +param storageSku string ='Standard_LRS' + +module nsg 'modules/nsg.bicep' = { + name: 'nsg-${uniqueString(resourceGroup().id)}' + params: { + location: location + tags: tags + nameNsg: 'nsg-${uniqueString(resourceGroup().id)}' + } +} + +module network 'modules/network.bicep' = { + name: 'vnet' + params: { + location: location + environmentType: environmentType + idNetworkSecurityGroup: nsg.outputs.networkSecurityGroup + vnetName: 'vnet-${uniqueString(resourceGroup().id)}' + vnetAddressSpace: '10.1.0.0/16' + llmopsSubnet: '10.1.4.0/24' + jumpboxSubnet: '10.1.6.0/24' + enableNetworkIsolation: enableNetworkIsolation + } +} + +module appInsights 'modules/app-insights.bicep' = { + name: 'appInsights' + params: { + location: location + environmentType: environmentType + enableNetworkIsolation: enableNetworkIsolation + } +} + + +module keyVault 'modules/key-vault.bicep' = { + name: 'keyVault' + params: { + location: location + environmentType: environmentType + skuName: keyVaultSku + enableNetworkIsolation: enableNetworkIsolation + sshPrivateKey: jumpboxSshPrivateKey + virtualNetworkId: network.outputs.vnetId + subnetId: network.outputs.llmopsSubnetId + } +} + + + +// Creating two storage accounts: +// - one for the Azure Machine Learning workspace +module storage 'modules/storage.bicep' = { + name: 'storagellmops' + params: { + location: location + nameStorage: 'stllmops${uniqueString(resourceGroup().id)}' + nameStoragePleBlob: 'pep-blob-stllmops${uniqueString(resourceGroup().id)}' + nameStoragePleFile: 'pep-file-stllmops${uniqueString(resourceGroup().id)}' + nameStorageSku: storageSku + subnetId: network.outputs.llmopsSubnetId + virtualNetworkId: network.outputs.vnetId + enableNetworkIsolation: enableNetworkIsolation + tags: tags + } +} + + +// Creating the Azure Container registry required by +// Azure machine Learning to serve as a model registry +module containerRegistry 'modules/container-registry.bicep' = { + name: 'llmopsContainerRegistry' + params: { + location: location + nameContainerRegistry: 'acr${uniqueString(resourceGroup().id)}' + nameContainerRegistryPep: 'pep-acr-${uniqueString(resourceGroup().id)}' + subnetId: network.outputs.llmopsSubnetId + virtualNetworkId: network.outputs.vnetId + enableNetworkIsolation: enableNetworkIsolation + tags: tags + } +} + + +// Creating the Azure Machine Learning workspace, compute and networking resources +module azuremlWorkspace 'modules/machine-learning-workspace.bicep' = { + name: 'azuremlWorkspace' + params: { + // workspace organization + nameMachineLearning: 'amlws-${environmentType}-${uniqueString(resourceGroup().id)}' + nameMachineLearningFriendly: 'Azure ML ${environmentType} workspace' + descriptionMachineLearning: 'This is an AML workspace for ${environmentType} environment' + location: location + tags: tags + + // dependant resources + applicationInsightsId: appInsights.outputs.id + containerRegistryId: containerRegistry.outputs.containerRegistryId + keyVaultId: keyVault.outputs.keyVaultId + storageAccountId: storage.outputs.storageId + azureOpenAIId: azureOpenAI.outputs.azureOpenAIId + + // networking + subnetId: network.outputs.llmopsSubnetId + virtualNetworkId: network.outputs.vnetId + machineLearningPepName: 'pep-amlws-${uniqueString(resourceGroup().id)}' + + enableNetworkIsolation: enableNetworkIsolation + } + dependsOn: [ + keyVault + containerRegistry + appInsights + storage + ] +} + +// Creating all the role assignments required for the end-to-end flow to work +module rolesAssignments 'modules/rolesAssignments.bicep' = { + name: 'rolesAssignments-${uniqueString(resourceGroup().id)}' + params: { + nameStorage: storage.outputs.nameStorage + azuremlWorkspacePrincipalId: azuremlWorkspace.outputs.machineLearningPrincipalId + } +} + +// Creating the Azure OpenAI resource +module azureOpenAI 'modules/azure-openai.bicep' = { + name: 'azureOpenAI' + params: { + //Azure OpenAI resource + nameAOAI: 'aoai-eastus-${environmentType}-${uniqueString(resourceGroup().id)}' + location: location + nameDeploymentAOAI: 'deployment-${environmentType}-gpt35-0301' + nameDeployedModel: 'gpt-35-turbo' + versionDeployedModel: '0301' + skuAOAI: { + name: 'S0' + } + environmentType: environmentType + enableNetworkIsolation: enableNetworkIsolation + + // Networking + subnetId: network.outputs.llmopsSubnetId + virtualNetworkId: network.outputs.vnetId + namePepAOAI: 'pep-aoai-eastus-${uniqueString(resourceGroup().id)}' + privateDnsZoneName: 'privatelink.openai.azure.com' + + } +} + + +// Creating the SSH linux VM +module linuxmachine 'modules/linux-machine.bicep' = if (enableNetworkIsolation) { + name: 'sshmachine' + params: { + location: location + nameVm: 'VMsshLinux' + subnetId: network.outputs.jumpboxSubnetId + adminUsername: 'azureuser' + sshKey: jumpboxSshKey + networkSecurityGroupId: nsg.outputs.networkSecurityGroup + } +} diff --git a/infra/bicep/modules/app-insights.bicep b/infra/bicep/modules/app-insights.bicep new file mode 100644 index 000000000..b8182f441 --- /dev/null +++ b/infra/bicep/modules/app-insights.bicep @@ -0,0 +1,38 @@ +@description('The type of the environment') +param environmentType string +@description('Application Insight name') +param appInsightsName string = 'appinsights-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('Application Insight name') +param logAnalyticsWorkspaceName string = 'loganalyticsw-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('Location for all resources.') +param location string = resourceGroup().location +@description('Enable public access to ease dev tests?') +param enableNetworkIsolation bool + +resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = { + name: logAnalyticsWorkspaceName + location: location + properties: { + sku: { + name: 'PerGB2018' + } + retentionInDays: 30 + publicNetworkAccessForIngestion: 'Enabled' + publicNetworkAccessForQuery: ( enableNetworkIsolation ? 'Enabled' : 'Disabled' ) + } +} + +resource appInsights 'Microsoft.Insights/components@2020-02-02' = { + name: appInsightsName + location: location + kind: 'web' + properties: { + Application_Type: 'web' + Request_Source: 'rest' + WorkspaceResourceId: logAnalyticsWorkspace.id + Flow_Type: 'Bluefield' + } +} + +output connectionString string = appInsights.properties.ConnectionString +output id string = appInsights.id diff --git a/infra/bicep/modules/azure-openai.bicep b/infra/bicep/modules/azure-openai.bicep new file mode 100644 index 000000000..c153066ee --- /dev/null +++ b/infra/bicep/modules/azure-openai.bicep @@ -0,0 +1,149 @@ +@description('Name of the Azure OpenAI resource') +param nameAOAI string + +@description('The Azure Region to deploy the resources into') +param location string + +@description('Name of the deployment that appears in the studio') +param nameDeploymentAOAI string + +@description('Name of the model that will be deployed') +param nameDeployedModel string + +@description('Version of the model that will be deployed') +param versionDeployedModel string + +@description('SKU of the Azure OpenAI resource') +param skuAOAI object = { + name: 'S0' +} + +@description('Scale type of the Azure OpenAI resource') +param scaleTypeAOAI string = 'Standard' + +@description('Environment type') +param environmentType string + +@description('Azure OpenAI private link endpoint name') +param namePepAOAI string + +@description('Resource ID of the subnet') +param subnetId string + +@description('Resource ID of the virtual network') +param virtualNetworkId string + +@description('Enable public access to ease dev tests?') +param enableNetworkIsolation bool + +param privateDnsZoneName string + +// Array containing the models we want to deploy +var deploymentsAOAI = [ + { + name: nameDeploymentAOAI + model: { + format: 'OpenAI' + name: nameDeployedModel + version: versionDeployedModel + } + scaleSettings: { + scaleType: scaleTypeAOAI + } + } +] + +param tags object = { + Creator: 'ServiceAccount' + Service: 'OpenAI' + Environment: environmentType +} + + +// Azure OpenAI service +resource azureOpenAI 'Microsoft.CognitiveServices/accounts@2023-05-01' = { + name: nameAOAI + location: location + kind: 'OpenAI' + properties: { + publicNetworkAccess: (!enableNetworkIsolation ? 'Enabled' : 'Disabled') + customSubDomainName: nameAOAI + networkAcls: { + defaultAction: (!enableNetworkIsolation ? 'Allow' : 'Deny') + } + } + tags: tags + sku: skuAOAI +} + +@batchSize(1) +resource deployment 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = [for deployment in deploymentsAOAI: { + parent: azureOpenAI + sku: { + name: 'Standard' + capacity: 120 + } + name: deployment.name + properties: { + model: deployment.model + } +}] + + + +resource azureOpenAIPrivateEndpoint 'Microsoft.Network/privateEndpoints@2023-02-01' = if (enableNetworkIsolation) { + name: namePepAOAI + location: location + tags: tags + properties: { + privateLinkServiceConnections: [ + { + name: namePepAOAI + properties: { + groupIds: [ + 'account' + ] + privateLinkServiceId: azureOpenAI.id + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource azureOpenAIPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: privateDnsZoneName + location: 'global' +} + +resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2023-02-01' = if (enableNetworkIsolation) { + name: 'openai-PrivateDnsZoneGroup' + parent: azureOpenAIPrivateEndpoint + properties:{ + privateDnsZoneConfigs: [ + { + name: privateDnsZoneName + properties:{ + privateDnsZoneId: azureOpenAIPrivateDnsZone.id + } + } + ] + } +} + +resource azureAOAIPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(azureOpenAI.id) + parent: azureOpenAIPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +output azureOpenAIId string = azureOpenAI.id +output azureOpenAIName string = azureOpenAI.name diff --git a/infra/bicep/modules/container-registry.bicep b/infra/bicep/modules/container-registry.bicep new file mode 100644 index 000000000..6011d21c2 --- /dev/null +++ b/infra/bicep/modules/container-registry.bicep @@ -0,0 +1,116 @@ +// Creates an Azure Container Registry with Azure Private Link endpoint +@description('Azure region of the deployment') +param location string + +@description('Tags to add to the resources') +param tags object + +@description('Container registry name') +param nameContainerRegistry string + +@description('Container registry private link endpoint name') +param nameContainerRegistryPep string + +@description('Resource ID of the subnet') +param subnetId string + +@description('Resource ID of the virtual network') +param virtualNetworkId string + +@description('Enable public access to ease dev tests?') +param enableNetworkIsolation bool + + +var nameContainerRegistryCleaned = replace(nameContainerRegistry, '-', '') +var privateDnsZoneName = 'privatelink${environment().suffixes.acrLoginServer}' +var groupName = 'registry' + + +resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-07-01' = { + name: nameContainerRegistryCleaned + location: location + tags: tags + sku: { + name: 'Premium' + } + properties: { + adminUserEnabled: true + dataEndpointEnabled: false + networkRuleBypassOptions: 'AzureServices' + networkRuleSet: { + defaultAction: (!enableNetworkIsolation ? 'Allow' : 'Deny') + } + policies: { + quarantinePolicy: { + status: 'disabled' + } + retentionPolicy: { + status: 'enabled' + days: 7 + } + trustPolicy: { + status: 'disabled' + type: 'Notary' + } + } + publicNetworkAccess: (!enableNetworkIsolation ? 'Enabled' : 'Disabled') + zoneRedundancy: 'Disabled' + } +} + +resource containerRegistryPrivateEndpoint 'Microsoft.Network/privateEndpoints@2022-01-01' = if (enableNetworkIsolation) { + name: nameContainerRegistryPep + location: location + tags: tags + properties: { + privateLinkServiceConnections: [ + { + name: nameContainerRegistryPep + properties: { + groupIds: [ + groupName + ] + privateLinkServiceId: containerRegistry.id + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource acrPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: privateDnsZoneName + location: 'global' +} + +resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = if (enableNetworkIsolation) { + name: '${groupName}-PrivateDnsZoneGroup' + parent: containerRegistryPrivateEndpoint + properties:{ + privateDnsZoneConfigs: [ + { + name: privateDnsZoneName + properties:{ + privateDnsZoneId: acrPrivateDnsZone.id + } + } + ] + } +} + +resource acrPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(containerRegistry.id) + parent: acrPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +output containerRegistryId string = containerRegistry.id +output nameContainerRegistry string = containerRegistry.name diff --git a/infra/bicep/modules/key-vault.bicep b/infra/bicep/modules/key-vault.bicep new file mode 100644 index 000000000..331bfb1b8 --- /dev/null +++ b/infra/bicep/modules/key-vault.bicep @@ -0,0 +1,119 @@ +@description('The type of the environment') +param environmentType string +@description('The name of the key vault to be created.') +param vaultName string = 'kv-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('Location for all resources.') +param location string = resourceGroup().location +@description('The SKU of the vault to be created.') +@allowed([ + 'standard' + 'premium' +]) +param skuName string = 'standard' +@description('The name of the key vault pep to be created.') +param vaultPepName string = 'pep-kv-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('The Subnet ID where the Key Vault Private Link is to be created') +param subnetId string +@description('The VNet ID where the Key Vault Private Link is to be created') +param virtualNetworkId string +@description('Enable Network Isolation for the Key Vault') +param enableNetworkIsolation bool + +@description('Associated private SSH key to connect to the Linux VM') +@secure() +param sshPrivateKey string + + +resource keyVault 'Microsoft.KeyVault/vaults@2023-02-01' = { + name: vaultName + location: location + properties: { + accessPolicies: [] + createMode: 'default' + enableRbacAuthorization: true + enableSoftDelete: true + softDeleteRetentionInDays: 90 + enablePurgeProtection: null + enabledForDeployment: true + enabledForDiskEncryption: false + enabledForTemplateDeployment: true + tenantId: subscription().tenantId + publicNetworkAccess: (enableNetworkIsolation ? 'Disabled' : null) + sku: { + name: skuName + family: 'A' + } + networkAcls: { + defaultAction: (!enableNetworkIsolation ? 'Allow' : 'Deny') + bypass: 'AzureServices' + } + } +} + +resource keyVaultPrivateEndpoint 'Microsoft.Network/privateEndpoints@2022-01-01' = if (enableNetworkIsolation) { + name: vaultPepName + location: location + properties: { + privateLinkServiceConnections: [ + { + name: vaultPepName + properties: { + groupIds: [ + 'vault' + ] + privateLinkServiceId: keyVault.id + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource keyVaultPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: 'privatelink.vaultcore.azure.net' + location: 'global' +} + +resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = if (enableNetworkIsolation) { + name: 'vault-PrivateDnsZoneGroup' + parent: keyVaultPrivateEndpoint + properties:{ + privateDnsZoneConfigs: [ + { + name: keyVaultPrivateDnsZone.name + properties:{ + privateDnsZoneId: keyVaultPrivateDnsZone.id + } + } + ] + } +} + +resource keyVaultPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(keyVault.id) + parent: keyVaultPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + + +resource sshLinuxPrivateKey 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = if (enableNetworkIsolation) { + name: 'ssh-key-linux' + parent: keyVault + properties: { + value: sshPrivateKey + } +} + + + +output keyVaultDnsZoneName string = keyVaultPrivateDnsZone.name +output keyVaultId string = keyVault.id +output keyVaultName string = keyVault.name diff --git a/infra/bicep/modules/linux-machine.bicep b/infra/bicep/modules/linux-machine.bicep new file mode 100644 index 000000000..292634afa --- /dev/null +++ b/infra/bicep/modules/linux-machine.bicep @@ -0,0 +1,131 @@ +// Creates a Data Science Virtual Machine jumpbox. +@description('Azure region of the deployment') +param location string = resourceGroup().location + +@description('Resource ID of the subnet') +param subnetId string + +@description('Network Security Group Resource ID') +param networkSecurityGroupId string + +@description('Virtual machine admin username') +param adminUsername string + +@description('Public SSH key to connect to the Linux VM') +param sshKey string + + +@description('Name of the Linux VM') +param nameVm string='VMsshLinux' + + +@description('Size of the Linux VM') +param vmSize string='Standard_DS1_v2' + +var setSshKey = !empty(sshKey) // True if a non-empty string is provided +var dnsLabelPrefix=toLower('${nameVm}-${uniqueString(resourceGroup().id)}') +var publicIPAddressName = '${nameVm}PublicIP' +var osDiskType = 'Standard_LRS' +var nameNic='${nameVm}-nic' + +resource networkInterface 'Microsoft.Network/networkInterfaces@2022-07-01' = { + name: nameNic + location: location + properties: { + ipConfigurations: [ + { + name: 'ipconfig1' + properties: { + subnet: { + id: subnetId + } + privateIPAllocationMethod: 'Dynamic' + publicIPAddress: { + id: publicIPAddress.id + } + } + } + ] + networkSecurityGroup: { + id: networkSecurityGroupId + } + } +} + + +resource publicSshKey 'Microsoft.Compute/sshPublicKeys@2022-11-01' = if (!empty(sshKey)) { + name: 'sshkey-linuxmachine' + location: location + properties: { + publicKey: sshKey + } +} + +var linuxConfiguration = { + disablePasswordAuthentication: true +} +var linuxConfigurationWithSSH = { + disablePasswordAuthentication: true + ssh: { + publicKeys: [ + { + path: '/home/${adminUsername}/.ssh/authorized_keys' + keyData: publicSshKey.properties.publicKey + } + ] + } +} + + +resource publicIPAddress 'Microsoft.Network/publicIPAddresses@2023-02-01' = { + name: publicIPAddressName + location: location + sku:{ + name:'Basic' + } + properties:{ + publicIPAllocationMethod:'Dynamic' + dnsSettings:{ + domainNameLabel:dnsLabelPrefix + } + idleTimeoutInMinutes :4 + } +} + +resource vm 'Microsoft.Compute/virtualMachines@2023-03-01' = { + name: nameVm + location: location + properties:{ + hardwareProfile:{ + vmSize : vmSize + } + storageProfile:{ + osDisk:{ + createOption:'FromImage' + managedDisk:{ + storageAccountType : osDiskType + } + } + imageReference: { + publisher: 'Canonical' + offer: '0001-com-ubuntu-server-focal' + sku: '20_04-lts-gen2' + version: 'latest' + } + } + networkProfile:{ + networkInterfaces:[ + { + id : networkInterface.id + } + ] + } + osProfile:{ + computerName : nameVm + adminUsername : adminUsername + linuxConfiguration : (setSshKey ? linuxConfigurationWithSSH : linuxConfiguration) + } + } +} + +output vmId string = vm.id diff --git a/infra/bicep/modules/machine-learning-workspace.bicep b/infra/bicep/modules/machine-learning-workspace.bicep new file mode 100644 index 000000000..69090f966 --- /dev/null +++ b/infra/bicep/modules/machine-learning-workspace.bicep @@ -0,0 +1,170 @@ +// Creates a machine learning workspace, private endpoints and DNS zones for the azure machine learning workspace + +@description('Azure region of the deployment') +param location string + +@description('Tags to add to the resources') +param tags object + +@description('Machine learning workspace name') +param nameMachineLearning string + +@description('Machine learning workspace display name') +param nameMachineLearningFriendly string = nameMachineLearning + +@description('Machine learning workspace description') +param descriptionMachineLearning string + +@description('Resource ID of the application insights resource') +param applicationInsightsId string + +@description('Resource ID of the container registry resource') +param containerRegistryId string + +@description('Resource ID of the key vault resource') +param keyVaultId string + +@description('Resource ID of the storage account resource') +param storageAccountId string + +@description('Resource ID of the Azure OpenAI resource') +param azureOpenAIId string + +@description('Resource ID of the subnet resource') +param subnetId string + +@description('Resource ID of the virtual network') +param virtualNetworkId string + +@description('Machine learning workspace private link endpoint name') +param machineLearningPepName string + +@description('Enable public access to ease dev tests?') +param enableNetworkIsolation bool + +var privateDnsZoneName = 'privatelink.api.azureml.ms' +var privateAznbDnsZoneName = 'privatelink.notebooks.azure.net' + +resource machineLearning 'Microsoft.MachineLearningServices/workspaces@2023-10-01' = { + name: nameMachineLearning + location: location + tags: tags + identity: { + type: 'SystemAssigned' + } + properties: { + // workspace organization + friendlyName: nameMachineLearningFriendly + description: descriptionMachineLearning + + // dependent resources + applicationInsights: applicationInsightsId + containerRegistry: containerRegistryId + keyVault: keyVaultId + storageAccount: storageAccountId + + // Managed VNET + managedNetwork: (enableNetworkIsolation ? { + isolationMode: 'AllowInternetOutbound' + outboundRules: { + ruleAMLtoAOAI:{ + type:'PrivateEndpoint' + destination: { + serviceResourceId: azureOpenAIId + subresourceTarget: 'account' + sparkEnabled: false + sparkStatus: 'Inactive' + } + } + } + status: { + sparkReady: false + status: 'active' + } + } : null) + publicNetworkAccess: (!enableNetworkIsolation ? 'Enabled' : 'Disabled') + } +} + +resource machineLearningPrivateEndpoint 'Microsoft.Network/privateEndpoints@2022-01-01' = if (enableNetworkIsolation) { + name: machineLearningPepName + location: location + tags: tags + properties: { + privateLinkServiceConnections: [ + { + name: machineLearningPepName + properties: { + groupIds: [ + 'amlworkspace' + ] + privateLinkServiceId: machineLearning.id + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource amlPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: privateDnsZoneName + location: 'global' +} + +resource amlPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(machineLearning.id) + parent: amlPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +// Notebook +resource notebookPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: privateAznbDnsZoneName + location: 'global' +} + +resource notebookPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(machineLearning.id) + parent: notebookPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = if (enableNetworkIsolation) { + name: 'amlworkspace-PrivateDnsZoneGroup' + parent: machineLearningPrivateEndpoint + properties:{ + privateDnsZoneConfigs: [ + { + name: privateDnsZoneName + properties:{ + privateDnsZoneId: amlPrivateDnsZone.id + } + } + { + name: privateAznbDnsZoneName + properties:{ + privateDnsZoneId: notebookPrivateDnsZone.id + } + } + ] + } +} + +output nameMachineLearning string = machineLearning.name +output machineLearningId string = machineLearning.id +output machineLearningPrincipalId string = machineLearning.identity.principalId +output usedSuffix string = uniqueString(resourceGroup().id) diff --git a/infra/bicep/modules/machinelearningnetworking.bicep b/infra/bicep/modules/machinelearningnetworking.bicep new file mode 100644 index 000000000..0d0e56245 --- /dev/null +++ b/infra/bicep/modules/machinelearningnetworking.bicep @@ -0,0 +1,108 @@ +// Creates private endpoints and DNS zones for the azure machine learning workspace +@description('Azure region of the deployment') +param location string + +@description('Machine learning workspace private link endpoint name') +param nameMachineLearningPle string + +@description('Resource ID of the virtual network resource') +param virtualNetworkId string + +@description('Resource ID of the subnet resource') +param subnetId string + +@description('Resource ID of the machine learning workspace') +param workspaceArmId string + +@description('Tags to add to the resources') +param tags object + +var privateDnsZoneName = { + azureusgovernment: 'privatelink.api.ml.azure.us' + azurechinacloud: 'privatelink.api.ml.azure.cn' + azurecloud: 'privatelink.api.azureml.ms' +} + +var privateAznbDnsZoneName = { + azureusgovernment: 'privatelink.notebooks.usgovcloudapi.net' + azurechinacloud: 'privatelink.notebooks.chinacloudapi.cn' + azurecloud: 'privatelink.notebooks.azure.net' +} + +resource machineLearningPrivateEndpoint 'Microsoft.Network/privateEndpoints@2022-01-01' = { + name: nameMachineLearningPle + location: location + tags: tags + properties: { + privateLinkServiceConnections: [ + { + name: nameMachineLearningPle + properties: { + groupIds: [ + 'amlworkspace' + ] + privateLinkServiceId: workspaceArmId + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource amlPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = { + name: privateDnsZoneName[toLower(environment().name)] + location: 'global' +} + +resource amlPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = { + name: uniqueString(workspaceArmId) + parent: amlPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +// Notebook +resource notebookPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = { + name: privateAznbDnsZoneName[toLower(environment().name)] + location: 'global' +} + +resource notebookPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = { + name: uniqueString(workspaceArmId) + parent: notebookPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = { + name: 'amlworkspace-PrivateDnsZoneGroup' + parent: machineLearningPrivateEndpoint + properties:{ + privateDnsZoneConfigs: [ + { + name: privateDnsZoneName[environment().name] + properties:{ + privateDnsZoneId: amlPrivateDnsZone.id + } + } + { + name: privateAznbDnsZoneName[environment().name] + properties:{ + privateDnsZoneId: notebookPrivateDnsZone.id + } + } + ] + } +} diff --git a/infra/bicep/modules/network.bicep b/infra/bicep/modules/network.bicep new file mode 100644 index 000000000..e133d2793 --- /dev/null +++ b/infra/bicep/modules/network.bicep @@ -0,0 +1,66 @@ +@description('The type of the environment') +param environmentType string +@description('Location for all resources.') +param location string = resourceGroup().location +@description('Name of the virtual network') +param vnetName string = 'vnet-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('llmops subnet name') +param llmopsSubnetName string = 'snet-llmops-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('Name of the subnet where the Linux VM for SSH tunelling will be deployed') +param jumpboxSubnetName string = 'snet-jumpb-${environmentType}-${uniqueString(resourceGroup().id)}' +@description('Address space for the virtual network') +param vnetAddressSpace string = '10.1.0.0/16' +@description('llmops subnet address prefix') +param llmopsSubnet string = '10.1.4.0/24' +@description('Jumpbox subnet address prefix') +param jumpboxSubnet string = '10.1.6.0/24' +@description('Group ID of the network security group') +param idNetworkSecurityGroup string +@description('Enable network isolation for the virtual network') +param enableNetworkIsolation bool + + +var subnetLlmops = [ + { + name: llmopsSubnetName + properties: { + addressPrefix: llmopsSubnet + privateEndpointNetworkPolicies: 'Disabled' + privateLinkServiceNetworkPolicies: 'Disabled' + networkSecurityGroup: { + id: idNetworkSecurityGroup + } + } + } +] + +var subnetJumpbox = [ + { + name: jumpboxSubnetName + properties: { + addressPrefix: jumpboxSubnet + } + } +] + +var subnets = (enableNetworkIsolation ? subnetLlmops : concat(subnetLlmops, subnetJumpbox)) + +resource vnet 'Microsoft.Network/virtualNetworks@2023-04-01' = { + name: vnetName + location: location + properties: { + addressSpace: { + addressPrefixes: [ + vnetAddressSpace + ] + } + subnets: subnets + } +} + + +output vnetId string = vnet.id +output llmopsSubnetId string = '${vnet.id}/subnets/${llmopsSubnetName}' +output jumpboxSubnetId string = '${vnet.id}/subnets/${jumpboxSubnetName}' + + diff --git a/infra/bicep/modules/nsg.bicep b/infra/bicep/modules/nsg.bicep new file mode 100644 index 000000000..68621be25 --- /dev/null +++ b/infra/bicep/modules/nsg.bicep @@ -0,0 +1,139 @@ +// Creates a network security group preconfigured for use with Azure ML +// To learn more, see https://docs.microsoft.com/en-us/azure/machine-learning/how-to-access-azureml-behind-firewall +@description('Azure region of the deployment') +param location string + +@description('Tags to add to the resources') +param tags object + +@description('Name of the network security group') +param nameNsg string + +resource nsg 'Microsoft.Network/networkSecurityGroups@2022-01-01' = { + name: nameNsg + location: location + tags: tags + properties: { + securityRules: [ + { + name: 'BatchNodeManagement' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '29876-29877' + sourceAddressPrefix: 'BatchNodeManagement' + destinationAddressPrefix: '*' + access: 'Allow' + priority: 120 + direction: 'Inbound' + } + } + { + name: 'AzureMachineLearning' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '44224' + sourceAddressPrefix: 'AzureMachineLearning' + destinationAddressPrefix: '*' + access: 'Allow' + priority: 130 + direction: 'Inbound' + } + } + { + name: 'AzureActiveDirectory' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '*' + sourceAddressPrefix: '*' + destinationAddressPrefix: 'AzureActiveDirectory' + access: 'Allow' + priority: 140 + direction: 'Outbound' + } + } + { + name: 'AzureMachineLearningOutbound' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '443' + sourceAddressPrefix: '*' + destinationAddressPrefix: 'AzureMachineLearning' + access: 'Allow' + priority: 150 + direction: 'Outbound' + } + } + { + name: 'AzureResourceManager' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '443' + sourceAddressPrefix: '*' + destinationAddressPrefix: 'AzureResourceManager' + access: 'Allow' + priority: 160 + direction: 'Outbound' + } + } + { + name: 'AzureStorageAccount' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '443' + sourceAddressPrefix: '*' + destinationAddressPrefix: 'Storage.${location}' + access: 'Allow' + priority: 170 + direction: 'Outbound' + } + } + { + name: 'AzureFrontDoor' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '443' + sourceAddressPrefix: '*' + destinationAddressPrefix: 'AzureFrontDoor.FrontEnd' + access: 'Allow' + priority: 180 + direction: 'Outbound' + } + } + { + name: 'AzureContainerRegistry' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '443' + sourceAddressPrefix: '*' + destinationAddressPrefix: 'AzureContainerRegistry.${location}' + access: 'Allow' + priority: 190 + direction: 'Outbound' + } + } + { + name: 'MicrosoftContainerRegistry' + properties: { + protocol: 'Tcp' + sourcePortRange: '*' + destinationPortRange: '443' + sourceAddressPrefix: 'VirtualNetwork' + destinationAddressPrefix: 'MicrosoftContainerRegistry' + access: 'Allow' + priority: 200 + direction: 'Outbound' + } + } + ] + } +} + +output networkSecurityGroup string = nsg.id diff --git a/infra/bicep/modules/rolesAssignments.bicep b/infra/bicep/modules/rolesAssignments.bicep new file mode 100644 index 000000000..0d015752c --- /dev/null +++ b/infra/bicep/modules/rolesAssignments.bicep @@ -0,0 +1,37 @@ +@description('Name of the storage account') +param nameStorage string + +@description('AML workspace principal id') +param azuremlWorkspacePrincipalId string + +// Identifiers for the required roles +var roleStorageTableDataContributorId = '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3' +var roleFileDataPriviligedContributorId = '69566ab7-960f-475b-8e7c-b3118f30c6bd' + + +resource referenceStorage 'Microsoft.Storage/storageAccounts@2022-09-01' existing = { + name: nameStorage +} + + +// Assign "Table data contributor" role to AML Workspace +resource roleAssignmentTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = { + scope: referenceStorage + name: guid(nameStorage, roleStorageTableDataContributorId, resourceGroup().id) + properties: { + roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleStorageTableDataContributorId) + principalId: azuremlWorkspacePrincipalId + principalType: 'ServicePrincipal' + } +} + +// Assign "Storage File Data Privileged Contributor" role to AML Workspace +resource roleAssignmentFileDataPriviligedContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = { + scope: referenceStorage + name: guid(nameStorage, roleFileDataPriviligedContributorId, resourceGroup().id) + properties: { + roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleFileDataPriviligedContributorId) + principalId: azuremlWorkspacePrincipalId + principalType: 'ServicePrincipal' + } +} diff --git a/infra/bicep/modules/storage.bicep b/infra/bicep/modules/storage.bicep new file mode 100644 index 000000000..572962e46 --- /dev/null +++ b/infra/bicep/modules/storage.bicep @@ -0,0 +1,216 @@ +@description('Azure region of the deployment') +param location string + +@description('Tags to add to the resources') +param tags object + +@description('Name of the storage account') +param nameStorage string + +@description('Name of the storage blob private link endpoint') +param nameStoragePleBlob string + +@description('Name of the storage file private link endpoint') +param nameStoragePleFile string + +@description('Resource ID of the subnet') +param subnetId string + +@description('Resource ID of the virtual network') +param virtualNetworkId string + +@allowed([ + 'Standard_LRS' + 'Standard_ZRS' + 'Standard_GRS' + 'Standard_GZRS' + 'Standard_RAGRS' + 'Standard_RAGZRS' + 'Premium_LRS' + 'Premium_ZRS' +]) +@description('Storage SKU') +param nameStorageSku string = 'Standard_LRS' + +@description('Enable public access to ease dev tests?') +param enableNetworkIsolation bool + +var nameStorageCleaned = replace(nameStorage, '-', '') +var nameBlobPrivateDnsZone = 'privatelink.blob.${environment().suffixes.storage}' +var nameFilePrivateDnsZone = 'privatelink.file.${environment().suffixes.storage}' + +resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = { + name: nameStorageCleaned + location: location + tags: tags + sku: { + name: nameStorageSku + } + kind: 'StorageV2' + identity: { + type: 'SystemAssigned' + } + properties: { + accessTier: 'Hot' + allowBlobPublicAccess: (!enableNetworkIsolation ? true : false) + publicNetworkAccess: (!enableNetworkIsolation ? 'Enabled' : 'Disabled') + allowCrossTenantReplication: false + allowSharedKeyAccess: true + encryption: { + keySource: 'Microsoft.Storage' + requireInfrastructureEncryption: false + services: { + blob: { + enabled: true + keyType: 'Account' + } + file: { + enabled: true + keyType: 'Account' + } + queue: { + enabled: true + keyType: 'Service' + } + table: { + enabled: true + keyType: 'Service' + } + } + } + isHnsEnabled: false + isNfsV3Enabled: false + keyPolicy: { + keyExpirationPeriodInDays: 7 + } + largeFileSharesState: 'Disabled' + minimumTlsVersion: 'TLS1_2' + networkAcls: { + bypass: 'AzureServices' + defaultAction: (!enableNetworkIsolation ? 'Allow' : 'Deny') + } + supportsHttpsTrafficOnly: true + } +} + +resource storagePrivateEndpointBlob 'Microsoft.Network/privateEndpoints@2022-01-01' = if (enableNetworkIsolation) { + name: nameStoragePleBlob + location: location + tags: tags + properties: { + privateLinkServiceConnections: [ + { + name: nameStoragePleBlob + properties: { + groupIds: [ + 'blob' + ] + privateLinkServiceId: storage.id + privateLinkServiceConnectionState: { + status: 'Approved' + description: 'Auto-Approved' + actionsRequired: 'None' + } + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource storagePrivateEndpointFile 'Microsoft.Network/privateEndpoints@2022-01-01' = if (enableNetworkIsolation) { + name: nameStoragePleFile + location: location + tags: tags + properties: { + privateLinkServiceConnections: [ + { + name: nameStoragePleFile + properties: { + groupIds: [ + 'file' + ] + privateLinkServiceId: storage.id + privateLinkServiceConnectionState: { + status: 'Approved' + description: 'Auto-Approved' + actionsRequired: 'None' + } + } + } + ] + subnet: { + id: subnetId + } + } +} + +resource blobPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: nameBlobPrivateDnsZone + location: 'global' +} + +resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = if (enableNetworkIsolation) { + name: 'blob-PrivateDnsZoneGroup' + parent: storagePrivateEndpointBlob + properties:{ + privateDnsZoneConfigs: [ + { + name: nameBlobPrivateDnsZone + properties:{ + privateDnsZoneId: blobPrivateDnsZone.id + } + } + ] + } +} + + +resource blobPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(storage.id) + parent: blobPrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +resource filePrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if (enableNetworkIsolation) { + name: nameFilePrivateDnsZone + location: 'global' +} + +resource filePrivateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = if (enableNetworkIsolation) { + name: 'flie-PrivateDnsZoneGroup' + parent: storagePrivateEndpointFile + properties:{ + privateDnsZoneConfigs: [ + { + name: nameFilePrivateDnsZone + properties:{ + privateDnsZoneId: filePrivateDnsZone.id + } + } + ] + } +} + +resource filePrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = if (enableNetworkIsolation) { + name: uniqueString(storage.id) + parent: filePrivateDnsZone + location: 'global' + properties: { + registrationEnabled: false + virtualNetwork: { + id: virtualNetworkId + } + } +} + +output storageId string = storage.id +output nameStorage string = storage.name diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh new file mode 100755 index 000000000..0ebe7a603 --- /dev/null +++ b/infra/bicep/scripts/deploy-infra.sh @@ -0,0 +1,200 @@ +#Bash shell +#Remaining TODO: +##Call create or update SP +## Pass sp secrets on as env vars to the bicep +## Add the secrets in the keyvault + +#!/bin/bash +repoRoot=$( + cd "$(dirname "${BASH_SOURCE[0]}")/../../" + pwd -P +) +############################################################################## +# colors for formatting the output +############################################################################## +# shellcheck disable=SC2034 +{ +YELLOW='\033[1;33m' +GREEN='\033[1;32m' +RED='\033[0;31m' +BLUE='\033[1;34m' +NC='\033[0m' # No Color +} +############################################################################## +#- print functions +############################################################################## +function printMessage(){ + echo -e "${GREEN}$1${NC}" +} +function printWarning(){ + echo -e "${YELLOW}$1${NC}" +} +function printError(){ + echo -e "${RED}$1${NC}" +} +function printProgress(){ + echo -e "${BLUE}$1${NC}" +} +############################################################################## +#- checkLoginAndSubscription +############################################################################## +function checkLoginAndSubscription() { + az account show -o none + # shellcheck disable=SC2181 + if [ $? -ne 0 ]; then + printError "\nYou seems disconnected from Azure, stopping the script." + exit 1 + fi +} +############################################################################## +#- function used to check whether an error occurred +############################################################################## +function checkError() { + # shellcheck disable=SC2181 + if [ $? -ne 0 ]; then + echo -e "${RED}\nAn error occurred exiting from the current bash${NC}" + exit 1 + fi +} +####################################################### +#- function used to print out script usage +####################################################### +function usage() { + echo + echo "Arguments:" + echo -e " -e [ENV] set environment where ENV=DEV, QA, PREPROD or PROD" + echo -e " -r [RESOURCE_GROUP] set resource group" + + echo + echo "Example:" + echo -e " bash ./deploy-infra.sh -e DEV -r DevRessourceGroup " + echo -e " bash ./deploy-infra.sh -e QA -r QARessourceGroup " + echo -e " bash ./deploy-infra.sh -e PREPROD -r PREPRODRessourceGroup" +} + +set -a # automatically export all variables +source "$repoRoot/config/.env" 2> /dev/null || true +set +a + +NETWORK_ISOLATION=false +# shellcheck disable=SC2034 +while getopts "e:r:i:" opt; do + case $opt in + e) TYPE_ENVIRONMENT=$OPTARG ;; + r) RESOURCE_GROUP=$OPTARG ;; + i) NETWORK_ISOLATION=$OPTARG ;; + :) + printError "Error: -${OPTARG} requires a value" + exit 1 + ;; + *) + usage + exit 1 + ;; + esac +done + +# Validation +if [[ -z "${TYPE_ENVIRONMENT}" || -z "${RESOURCE_GROUP}" ]]; then + printError "Required parameters are missing" + usage + exit 1 +fi + +if [[ -z "$appId" || -z $password || -z $tenantId || -z $subId ]]; then + printWarning "Variables \$appId \$password \$tenantId \$subId not set" + printProgress "Interactive Azure login..." + if [[ -z $tenantId ]]; then + az login + else + az login -t $tenantId + fi + if [[ ! -z $subId ]]; then + az account set -s $subId + fi +else + printProgress "Service Principal Azure login..." + az login --service-principal -u $appId -p $password -t $tenantId + az account set -s $subId +fi +checkLoginAndSubscription + +printProgress "Installing jq..." +if [ "${OSTYPE}" == "msys" ]; then + curl -s -L -o /usr/bin/jq.exe https://github.com/stedolan/jq/releases/latest/download/jq-win64.exe +else + sudo apt-get -y install jq +fi + +printProgress "Adding ml extension if not installed..." +az extension add --name "ml" + +printProgress "Getting Resource Group Name..." +resourceGroupName=$(az group show -g "${RESOURCE_GROUP}" 2> /dev/null | jq '.name' | tr -d '"' ) || true +if [[ -z $resourceGroupName ]]; then + printError "Resource Group ${RESOURCE_GROUP} doesn't exist" + exit 1 +fi +printProgress "Resource Group Name: ${resourceGroupName}" + +# Deploy the infrastructure for DEV environment + +pathToBicep="${repoRoot}/bicep/main.bicep" +environmentType="${TYPE_ENVIRONMENT}" +networkIsolationBool=${NETWORK_ISOLATION} + +printProgress "generate keys for the jumpbox..." + +printProgress "Check if ssh keys already created in resource group ${resourceGroupName}..." +sshKeyName=$(az sshkey list -g "$resourceGroupName" --query "[?contains(name, 'sshkey-linuxmachine')].name" -o tsv) + +if [ -z "$sshKeyName" ] || [ "$sshKeyName" == "" ]; then + printProgress "Creating ssh keys in resource group ${resourceGroupName}..." + yes y | ssh-keygen -t rsa -N "" -f /tmp/deploy_id_rsa + privateSshKey=$(cat /tmp/deploy_id_rsa) + publicSshKey=$(cat /tmp/deploy_id_rsa.pub) + rm /tmp/deploy_id_rsa* + printProgress "publicSshKey=$publicSshKey" + printProgress "privateSshKey=$privateSshKey" +else + printProgress "Ssh keys already created in resource group ${resourceGroupName}..." + publicSshKey="" + privateSshKey="" +fi + +echo "networkIsolationBool=$networkIsolationBool" +echo "environmentType=$environmentType" +echo "resourceGroupName=$resourceGroupName" + +# # printProgress "Deploying resources in resource group ${resourceGroupName}..." +az deployment group create --mode Incremental --resource-group $resourceGroupName --template-file $pathToBicep --parameters environmentType=$environmentType keyVaultSku='standard' jumpboxSshKey="$publicSshKey" jumpboxSshPrivateKey="$privateSshKey" enableNetworkIsolation=$networkIsolationBool + +if [ $networkIsolationBool = true ]; then + printMessage "Getting AML Workspace name deployed in ${resourceGroupName} ..." + + nameAmlWorkspace=$(az deployment group show --resource-group ${resourceGroupName} --name azuremlWorkspace --query properties.outputs.nameMachineLearning.value -o tsv) + usedSuffix=$(az deployment group show --resource-group ${resourceGroupName} --name azuremlWorkspace --query properties.outputs.usedSuffix.value -o tsv) + nameStorageAccount=$(az deployment group show --resource-group ${resourceGroupName} --name storageMlops --query properties.outputs.nameStorage.value -o tsv) + + + if [ -z "$nameAmlWorkspace" ]; then + printProgress "Missing AML workspace name" + printProgress "AML workspace name: ${nameAmlWorkspace}" + exit 1 + fi + + printProgress "AML workspace name: ${nameAmlWorkspace}" + + if [ -z "$usedSuffix" ]; then + printProgress "Missing suffix, unable to create a managed compute instance for AML workspace" + printProgress "Suffix: ${usedSuffix}" + exit 1 + fi + printProgress "Used suffix: ${usedSuffix}" + + printProgress "Provisionning AML managed VNET..." + az ml workspace provision-network --name ${nameAmlWorkspace} -g ${resourceGroupName} +fi + +checkError +printMessage "Deployment in resource group ${resourceGroupName} successful!" From dd65e5b6c2f18acf5686102bee77ab4f8288b762 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 10 Jan 2024 10:28:14 +0100 Subject: [PATCH 02/17] Adding config files generation --- infra/bicep/main.bicep | 3 + infra/bicep/modules/key-vault.bicep | 2 +- infra/bicep/modules/network.bicep | 2 +- infra/bicep/scripts/deploy-infra.sh | 35 +++----- .../scripts/export-deployment-variables.sh | 80 +++++++++++++++++++ llmops_config.json.sample | 22 +++++ 6 files changed, 119 insertions(+), 25 deletions(-) create mode 100755 infra/bicep/scripts/export-deployment-variables.sh create mode 100644 llmops_config.json.sample diff --git a/infra/bicep/main.bicep b/infra/bicep/main.bicep index 888ee5851..7c18e3e3d 100644 --- a/infra/bicep/main.bicep +++ b/infra/bicep/main.bicep @@ -185,3 +185,6 @@ module linuxmachine 'modules/linux-machine.bicep' = if (enableNetworkIsolation) networkSecurityGroupId: nsg.outputs.networkSecurityGroup } } + +output keyVaultName string = keyVault.name +output amlWorkspaceName string = azuremlWorkspace.outputs.nameMachineLearning diff --git a/infra/bicep/modules/key-vault.bicep b/infra/bicep/modules/key-vault.bicep index 331bfb1b8..6df059cae 100644 --- a/infra/bicep/modules/key-vault.bicep +++ b/infra/bicep/modules/key-vault.bicep @@ -105,7 +105,7 @@ resource keyVaultPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtu resource sshLinuxPrivateKey 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = if (enableNetworkIsolation) { - name: 'ssh-key-linux' + name: 'ssh-private-key-linux' parent: keyVault properties: { value: sshPrivateKey diff --git a/infra/bicep/modules/network.bicep b/infra/bicep/modules/network.bicep index e133d2793..18f646647 100644 --- a/infra/bicep/modules/network.bicep +++ b/infra/bicep/modules/network.bicep @@ -43,7 +43,7 @@ var subnetJumpbox = [ } ] -var subnets = (enableNetworkIsolation ? subnetLlmops : concat(subnetLlmops, subnetJumpbox)) +var subnets = (enableNetworkIsolation ? concat(subnetLlmops, subnetJumpbox) : subnetLlmops) resource vnet 'Microsoft.Network/virtualNetworks@2023-04-01' = { name: vnetName diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index 0ebe7a603..28374f627 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -64,17 +64,15 @@ function usage() { echo "Arguments:" echo -e " -e [ENV] set environment where ENV=DEV, QA, PREPROD or PROD" echo -e " -r [RESOURCE_GROUP] set resource group" + echo -e " -i [NETWORK_ISOLATION] trigger on/off network isolation for AML workspace and its dependant resources. Set to false by default" echo echo "Example:" - echo -e " bash ./deploy-infra.sh -e DEV -r DevRessourceGroup " - echo -e " bash ./deploy-infra.sh -e QA -r QARessourceGroup " - echo -e " bash ./deploy-infra.sh -e PREPROD -r PREPRODRessourceGroup" + echo -e " bash ./deploy-infra.sh -e DEV -r DevRessourceGroup" + echo -e " bash ./deploy-infra.sh -e QA -r QARessourceGroup -i false" + echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -true" } -set -a # automatically export all variables -source "$repoRoot/config/.env" 2> /dev/null || true -set +a NETWORK_ISOLATION=false # shellcheck disable=SC2034 @@ -166,32 +164,23 @@ echo "networkIsolationBool=$networkIsolationBool" echo "environmentType=$environmentType" echo "resourceGroupName=$resourceGroupName" -# # printProgress "Deploying resources in resource group ${resourceGroupName}..." +#Deploy infrastructure using main.bicep file +printProgress "Deploying resources in resource group ${resourceGroupName}..." az deployment group create --mode Incremental --resource-group $resourceGroupName --template-file $pathToBicep --parameters environmentType=$environmentType keyVaultSku='standard' jumpboxSshKey="$publicSshKey" jumpboxSshPrivateKey="$privateSshKey" enableNetworkIsolation=$networkIsolationBool -if [ $networkIsolationBool = true ]; then - printMessage "Getting AML Workspace name deployed in ${resourceGroupName} ..." - - nameAmlWorkspace=$(az deployment group show --resource-group ${resourceGroupName} --name azuremlWorkspace --query properties.outputs.nameMachineLearning.value -o tsv) - usedSuffix=$(az deployment group show --resource-group ${resourceGroupName} --name azuremlWorkspace --query properties.outputs.usedSuffix.value -o tsv) - nameStorageAccount=$(az deployment group show --resource-group ${resourceGroupName} --name storageMlops --query properties.outputs.nameStorage.value -o tsv) +#Get Azure Key Vault and Azure ML workspace name from the deployment named "main" +keyVaultName=$(az deployment group show --resource-group ${resourceGroupName} --name main --query properties.outputs.keyVault.value -o tsv) +nameAmlWorkspace=$(az deployment group show --resource-group ${resourceGroupName} --name main --query properties.outputs.nameMachineLearning.value -o tsv) +#Exporting variable names in llmops_config.json file at the root of the repo +./bicep/scripts/export-deployment-variables.sh -k $keyVaultName -g $resourceGroupName -e $environmentType -w $workspaceName -r $runtimeName +if [ $networkIsolationBool = true ]; then if [ -z "$nameAmlWorkspace" ]; then printProgress "Missing AML workspace name" - printProgress "AML workspace name: ${nameAmlWorkspace}" exit 1 fi - printProgress "AML workspace name: ${nameAmlWorkspace}" - - if [ -z "$usedSuffix" ]; then - printProgress "Missing suffix, unable to create a managed compute instance for AML workspace" - printProgress "Suffix: ${usedSuffix}" - exit 1 - fi - printProgress "Used suffix: ${usedSuffix}" - printProgress "Provisionning AML managed VNET..." az ml workspace provision-network --name ${nameAmlWorkspace} -g ${resourceGroupName} fi diff --git a/infra/bicep/scripts/export-deployment-variables.sh b/infra/bicep/scripts/export-deployment-variables.sh new file mode 100755 index 000000000..1156d0c14 --- /dev/null +++ b/infra/bicep/scripts/export-deployment-variables.sh @@ -0,0 +1,80 @@ +#!/bin/bash +repoRoot=$( + cd "$(dirname "${BASH_SOURCE[0]}")/../../../" + pwd -P +) + +# shellcheck disable=SC2034 +while getopts "k:g:e:w:r:" opt; do + case $opt in + k) kvName=$OPTARG ;; + g) rgName=$OPTARG ;; + e) envName=$OPTARG ;; + w) workspaceName=$OPTARG ;; + r) runtimeName=$OPTARG ;; + :) + printError "Error: -${OPTARG} requires a value" + exit 1 + ;; + *) + usage + exit 1 + ;; + esac +done + +# The JSON file +FILE="${repoRoot}/llmops_config.json" + +#If the llmops_config.json file does not exist, create it and add one block containing the environment variables +if [[ ! -e $FILE ]]; then + echo "File $FILE does not exist, creating it..." + touch $FILE + blockToAdd="{ + \"ENV_NAME\": \"$envName\", + \"RUNTIME_NAME\": \"$runtimeName\", + \"KEYVAULT_NAME\": \"$kvName\", + \"RESOURCE_GROUP_NAME\": \"$rgName\", + \"WORKSPACE_NAME\": \"$workspaceName\", + \"STANDARD_FLOW_PATH\": \"flows/experiment\", + \"EVALUATION_FLOW_PATH\": \"flows/evaluation, flows/evaluation_adv\" + }" + echo "File $FILE created." + cat << EOF > $FILE +{ + "envs":[ + $blockToAdd + ] +} +EOF +else + #If the the llmops_config.json exists, update it. + #The update is done by adding a new block if the environment does not exist, or by updating the existing block if the environment already exists + echo "File $FILE already exists. Updating it configuration of environment $envName..." + jq --arg envName "$envName" --arg runtimeName "$runtimeName" --arg kvName "$kvName" --arg rgName "$rgName" --arg workspaceName "$workspaceName" ' + if any(.envs[]; .ENV_NAME == $envName) then + .envs |= map( + if .ENV_NAME == $envName then + .ENV_NAME = $envName + | .RUNTIME_NAME = $runtimeName + | .KEYVAULT_NAME = $kvName + | .RESOURCE_GROUP_NAME = $rgName + | .WORKSPACE_NAME = $workspaceName + else + . + end + ) + else + .envs += [ + { + "ENV_NAME": $envName, + "RUNTIME_NAME": $runtimeName, + "KEYVAULT_NAME": $kvName, + "RESOURCE_GROUP_NAME": $rgName, + "WORKSPACE_NAME": $workspaceName, + "STANDARD_FLOW_PATH": "flows/experiment", + "EVALUATION_FLOW_PATH": "flows/evaluation" + } + ] + end' $FILE > temp.json && mv temp.json $FILE +fi diff --git a/llmops_config.json.sample b/llmops_config.json.sample new file mode 100644 index 000000000..5d48976f0 --- /dev/null +++ b/llmops_config.json.sample @@ -0,0 +1,22 @@ +{ + "envs":[ + { + "ENV_NAME": "pr", + "RUNTIME_NAME": "", + "KEYVAULT_NAME": "", + "RESOURCE_GROUP_NAME": "", + "WORKSPACE_NAME": "", + "STANDARD_FLOW_PATH": "flows/experiment", + "EVALUATION_FLOW_PATH": "flows/evaluation" + }, + { + "ENV_NAME": "dev", + "RUNTIME_NAME": "", + "KEYVAULT_NAME": "", + "RESOURCE_GROUP_NAME": "", + "WORKSPACE_NAME": "", + "STANDARD_FLOW_PATH": "flows/experiment", + "EVALUATION_FLOW_PATH": "flows/evaluation, flows/evaluation_adv" + } + ] +} \ No newline at end of file From 719133816921f9f4c7132d3602223c0b1c2698b7 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 10 Jan 2024 11:15:02 +0100 Subject: [PATCH 03/17] Adapting conf file from deploy script --- .gitignore | 2 ++ infra/bicep/main.bicep | 2 +- infra/bicep/scripts/deploy-infra.sh | 29 ++++++++++--------- .../scripts/export-deployment-variables.sh | 3 +- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 2c4b65f20..10056b54f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +llmops_config.json + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/infra/bicep/main.bicep b/infra/bicep/main.bicep index 7c18e3e3d..0fdc5077a 100644 --- a/infra/bicep/main.bicep +++ b/infra/bicep/main.bicep @@ -186,5 +186,5 @@ module linuxmachine 'modules/linux-machine.bicep' = if (enableNetworkIsolation) } } -output keyVaultName string = keyVault.name +output keyVaultName string = keyVault.outputs.keyVaultName output amlWorkspaceName string = azuremlWorkspace.outputs.nameMachineLearning diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index 28374f627..f7ce5ac31 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -1,9 +1,3 @@ -#Bash shell -#Remaining TODO: -##Call create or update SP -## Pass sp secrets on as env vars to the bicep -## Add the secrets in the keyvault - #!/bin/bash repoRoot=$( cd "$(dirname "${BASH_SOURCE[0]}")/../../" @@ -168,18 +162,25 @@ echo "resourceGroupName=$resourceGroupName" printProgress "Deploying resources in resource group ${resourceGroupName}..." az deployment group create --mode Incremental --resource-group $resourceGroupName --template-file $pathToBicep --parameters environmentType=$environmentType keyVaultSku='standard' jumpboxSshKey="$publicSshKey" jumpboxSshPrivateKey="$privateSshKey" enableNetworkIsolation=$networkIsolationBool -#Get Azure Key Vault and Azure ML workspace name from the deployment named "main" -keyVaultName=$(az deployment group show --resource-group ${resourceGroupName} --name main --query properties.outputs.keyVault.value -o tsv) -nameAmlWorkspace=$(az deployment group show --resource-group ${resourceGroupName} --name main --query properties.outputs.nameMachineLearning.value -o tsv) +echo "repo root: $repoRoot" +#Getting Azure Key Vault and Azure ML workspace names from the deployment named "main" and "azuremlWorkspace" +keyVaultName=$(az deployment group show --resource-group ${resourceGroupName} --name main --query properties.outputs.keyVaultName.value -o tsv) +nameAmlWorkspace=$(az deployment group show --resource-group ${resourceGroupName} --name azuremlWorkspace --query properties.outputs.nameMachineLearning.value -o tsv) +echo $nameAmlWorkspace #Exporting variable names in llmops_config.json file at the root of the repo -./bicep/scripts/export-deployment-variables.sh -k $keyVaultName -g $resourceGroupName -e $environmentType -w $workspaceName -r $runtimeName +if [ -z "$keyVaultName" ]; then + printProgress "Missing keyVaultName" + exit 1 +fi +if [ -z "$nameAmlWorkspace" ]; then + printProgress "Missing nameAmlWorkspace" + exit 1 +fi +runtimeName="myruntime" +${repoRoot}/bicep/scripts/export-deployment-variables.sh -k $keyVaultName -g $resourceGroupName -e $environmentType -w $nameAmlWorkspace -r $runtimeName if [ $networkIsolationBool = true ]; then - if [ -z "$nameAmlWorkspace" ]; then - printProgress "Missing AML workspace name" - exit 1 - fi printProgress "AML workspace name: ${nameAmlWorkspace}" printProgress "Provisionning AML managed VNET..." az ml workspace provision-network --name ${nameAmlWorkspace} -g ${resourceGroupName} diff --git a/infra/bicep/scripts/export-deployment-variables.sh b/infra/bicep/scripts/export-deployment-variables.sh index 1156d0c14..61fd87faa 100755 --- a/infra/bicep/scripts/export-deployment-variables.sh +++ b/infra/bicep/scripts/export-deployment-variables.sh @@ -13,11 +13,10 @@ while getopts "k:g:e:w:r:" opt; do w) workspaceName=$OPTARG ;; r) runtimeName=$OPTARG ;; :) - printError "Error: -${OPTARG} requires a value" + echo "Error: -${OPTARG} requires a value" exit 1 ;; *) - usage exit 1 ;; esac From 9d121c0e671d2cfc115eba7aef49f5967b9883e2 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 10 Jan 2024 13:30:12 +0000 Subject: [PATCH 04/17] adding dev container and securing private key --- .devcontainer/devcontainer.json | 50 +++++++++++++++++++++++++++++ .devcontainer/requirements.txt | 3 ++ infra/bicep/main.bicep | 1 + infra/bicep/scripts/deploy-infra.sh | 22 ++----------- 4 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/requirements.txt diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..da7361f28 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,50 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/python +{ + "name": "Python 3", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/python:0-3.9", + + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + "ghcr.io/devcontainers/features/azure-cli:1": { + "version": "latest" + }, + "ghcr.io/rchaganti/vsc-devcontainer-features/azurebicep:1": { + "version": "latest" + } + }, + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + "settings": {}, + "extensions": [ + "ms-python.python", + "ms-vscode.azure-account", + "prompt-flow.prompt-flow" + ] + } + }, + + + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [9000], + + // Use 'portsAttributes' to set default properties for specific forwarded ports. + // More info: https://containers.dev/implementors/json_reference/#port-attributes + "portsAttributes": { + "9000": { + "label": "Hello World", + "onAutoForward": "notify" + } + }, + + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "pip3 install -r \"./.devcontainer/requirements.txt\" && az extension add --name \"ml\"" + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} \ No newline at end of file diff --git a/.devcontainer/requirements.txt b/.devcontainer/requirements.txt new file mode 100644 index 000000000..87b18932a --- /dev/null +++ b/.devcontainer/requirements.txt @@ -0,0 +1,3 @@ +promptflow +promptflow-tools +promptflow-sdk[builtins] \ No newline at end of file diff --git a/infra/bicep/main.bicep b/infra/bicep/main.bicep index 0fdc5077a..fb492e759 100644 --- a/infra/bicep/main.bicep +++ b/infra/bicep/main.bicep @@ -11,6 +11,7 @@ param keyVaultSku string = 'premium' param jumpboxSshKey string @description('Associated private SSH key to connect to the Linux jumpbox') +@secure() param jumpboxSshPrivateKey string @description('Enable public access to ease dev tests?') diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index f7ce5ac31..532e79354 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -64,7 +64,7 @@ function usage() { echo "Example:" echo -e " bash ./deploy-infra.sh -e DEV -r DevRessourceGroup" echo -e " bash ./deploy-infra.sh -e QA -r QARessourceGroup -i false" - echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -true" + echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -i true" } @@ -111,22 +111,10 @@ else fi checkLoginAndSubscription -printProgress "Installing jq..." -if [ "${OSTYPE}" == "msys" ]; then - curl -s -L -o /usr/bin/jq.exe https://github.com/stedolan/jq/releases/latest/download/jq-win64.exe -else - sudo apt-get -y install jq -fi -printProgress "Adding ml extension if not installed..." -az extension add --name "ml" printProgress "Getting Resource Group Name..." -resourceGroupName=$(az group show -g "${RESOURCE_GROUP}" 2> /dev/null | jq '.name' | tr -d '"' ) || true -if [[ -z $resourceGroupName ]]; then - printError "Resource Group ${RESOURCE_GROUP} doesn't exist" - exit 1 -fi +resourceGroupName="${RESOURCE_GROUP}" printProgress "Resource Group Name: ${resourceGroupName}" # Deploy the infrastructure for DEV environment @@ -154,16 +142,10 @@ else privateSshKey="" fi -echo "networkIsolationBool=$networkIsolationBool" -echo "environmentType=$environmentType" -echo "resourceGroupName=$resourceGroupName" - #Deploy infrastructure using main.bicep file printProgress "Deploying resources in resource group ${resourceGroupName}..." az deployment group create --mode Incremental --resource-group $resourceGroupName --template-file $pathToBicep --parameters environmentType=$environmentType keyVaultSku='standard' jumpboxSshKey="$publicSshKey" jumpboxSshPrivateKey="$privateSshKey" enableNetworkIsolation=$networkIsolationBool -echo "repo root: $repoRoot" - #Getting Azure Key Vault and Azure ML workspace names from the deployment named "main" and "azuremlWorkspace" keyVaultName=$(az deployment group show --resource-group ${resourceGroupName} --name main --query properties.outputs.keyVaultName.value -o tsv) nameAmlWorkspace=$(az deployment group show --resource-group ${resourceGroupName} --name azuremlWorkspace --query properties.outputs.nameMachineLearning.value -o tsv) From b05dcd529e6135f2531c06b35d244d600183be26 Mon Sep 17 00:00:00 2001 From: Raouf Date: Thu, 11 Jan 2024 16:12:50 +0000 Subject: [PATCH 05/17] update scripts --- infra/bicep/scripts/deploy-infra.sh | 4 ++-- infra/bicep/scripts/export-deployment-variables.sh | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index 532e79354..433a1ece2 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -159,8 +159,8 @@ if [ -z "$nameAmlWorkspace" ]; then printProgress "Missing nameAmlWorkspace" exit 1 fi -runtimeName="myruntime" -${repoRoot}/bicep/scripts/export-deployment-variables.sh -k $keyVaultName -g $resourceGroupName -e $environmentType -w $nameAmlWorkspace -r $runtimeName +runtimeName="runtime1" +${repoRoot}/bicep/scripts/export-deployment-variables.sh -k "$keyVaultName" -g "$resourceGroupName" -e "$environmentType" -w "$nameAmlWorkspace" -r "$runtimeName" -i $networkIsolationBool if [ $networkIsolationBool = true ]; then printProgress "AML workspace name: ${nameAmlWorkspace}" diff --git a/infra/bicep/scripts/export-deployment-variables.sh b/infra/bicep/scripts/export-deployment-variables.sh index 61fd87faa..70b2facbb 100755 --- a/infra/bicep/scripts/export-deployment-variables.sh +++ b/infra/bicep/scripts/export-deployment-variables.sh @@ -5,13 +5,14 @@ repoRoot=$( ) # shellcheck disable=SC2034 -while getopts "k:g:e:w:r:" opt; do +while getopts "k:g:e:w:r:i:" opt; do case $opt in k) kvName=$OPTARG ;; g) rgName=$OPTARG ;; e) envName=$OPTARG ;; w) workspaceName=$OPTARG ;; r) runtimeName=$OPTARG ;; + i) networkIsolationBool=$OPTARG ;; :) echo "Error: -${OPTARG} requires a value" exit 1 @@ -23,7 +24,7 @@ while getopts "k:g:e:w:r:" opt; do done # The JSON file -FILE="${repoRoot}/llmops_config.json" +FILE="${repoRoot}/llmops_confdig.json" #If the llmops_config.json file does not exist, create it and add one block containing the environment variables if [[ ! -e $FILE ]]; then @@ -35,6 +36,7 @@ if [[ ! -e $FILE ]]; then \"KEYVAULT_NAME\": \"$kvName\", \"RESOURCE_GROUP_NAME\": \"$rgName\", \"WORKSPACE_NAME\": \"$workspaceName\", + \"NETWORK_ISOLATION\": $networkIsolationBool, \"STANDARD_FLOW_PATH\": \"flows/experiment\", \"EVALUATION_FLOW_PATH\": \"flows/evaluation, flows/evaluation_adv\" }" From b969ec888f72196d8992a770129055fc9d833d93 Mon Sep 17 00:00:00 2001 From: Raouf Date: Mon, 22 Jan 2024 15:00:48 +0000 Subject: [PATCH 06/17] disabling private access managed endpoint when in network isolation --- .gitignore | 1 + deployment_config.json | 43 ++++++++++ deployment_config.json.sample | 47 +++++++++++ infra/bicep/scripts/deploy-infra.sh | 7 +- .../scripts/export-deployment-variables.sh | 83 ++++++++++++++++--- .../common/deployment/provision_deployment.py | 2 + .../common/deployment/provision_endpoint.py | 2 + 7 files changed, 171 insertions(+), 14 deletions(-) create mode 100644 deployment_config.json create mode 100644 deployment_config.json.sample diff --git a/.gitignore b/.gitignore index 10056b54f..93897295b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ llmops_config.json +.ssh/ # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/deployment_config.json b/deployment_config.json new file mode 100644 index 000000000..981b7a739 --- /dev/null +++ b/deployment_config.json @@ -0,0 +1,43 @@ +{ + "azure_managed_endpoint": { + "ENV_NAME": "dev", + "TEST_FILE_PATH": "sample-request.json", + "PUBLIC_ACCESS": "", + "ENDPOINT_NAME": "", + "ENDPOINT_DESC": "An online endpoint serving a flow for [task]", + "DEPLOYMENT_DESC": "prompt flow deployment", + "PRIOR_DEPLOYMENT_NAME": "", + "PRIOR_DEPLOYMENT_TRAFFIC_ALLOCATION": "", + "CURRENT_DEPLOYMENT_NAME": "", + "CURRENT_DEPLOYMENT_TRAFFIC_ALLOCATION": "100", + "DEPLOYMENT_VM_SIZE": "Standard_F4s_v2", + "DEPLOYMENT_BASE_IMAGE_NAME": "mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest", + "DEPLOYMENT_CONDA_PATH": "environment/conda.yml", + "DEPLOYMENT_INSTANCE_COUNT": 1, + "ENVIRONMENT_VARIABLES": { + "example-name": "example-value" + } + }, + "kubernetes_endpoint": { + "ENV_NAME": "dev", + "TEST_FILE_PATH": "sample-request.json", + "PUBLIC_ACCESS": "", + "ENDPOINT_NAME": "", + "ENDPOINT_DESC": "An kubernetes endpoint serving a flow for [task]", + "DEPLOYMENT_DESC": "prompt flow deployment", + "PRIOR_DEPLOYMENT_NAME": "", + "PRIOR_DEPLOYMENT_TRAFFIC_ALLOCATION": "", + "CURRENT_DEPLOYMENT_NAME": "", + "CURRENT_DEPLOYMENT_TRAFFIC_ALLOCATION": 100, + "COMPUTE_NAME": "", + "DEPLOYMENT_VM_SIZE": "promptinstancetype", + "DEPLOYMENT_BASE_IMAGE_NAME": "mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest", + "DEPLOYMENT_CONDA_PATH": "environment/conda.yml", + "DEPLOYMENT_INSTANCE_COUNT": 1, + "CPU_ALLOCATION": "", + "MEMORY_ALLOCATION": "", + "ENVIRONMENT_VARIABLES": { + "example-name": "example-value" + } + } +} diff --git a/deployment_config.json.sample b/deployment_config.json.sample new file mode 100644 index 000000000..c0a0b2f60 --- /dev/null +++ b/deployment_config.json.sample @@ -0,0 +1,47 @@ +{ + "azure_managed_endpoint":[ + { + "ENV_NAME": "dev", + "TEST_FILE_PATH": "sample-request.json", + "PUBLIC_ACCESS": "true", + "ENDPOINT_NAME": "", + "ENDPOINT_DESC": "An online endpoint serving a flow for [task]", + "DEPLOYMENT_DESC": "prompt flow deployment", + "PRIOR_DEPLOYMENT_NAME": "", + "PRIOR_DEPLOYMENT_TRAFFIC_ALLOCATION": "", + "CURRENT_DEPLOYMENT_NAME": "", + "CURRENT_DEPLOYMENT_TRAFFIC_ALLOCATION": "100", + "DEPLOYMENT_VM_SIZE": "Standard_F4s_v2", + "DEPLOYMENT_BASE_IMAGE_NAME": "mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest", + "DEPLOYMENT_CONDA_PATH": "environment/conda.yml", + "DEPLOYMENT_INSTANCE_COUNT": 1, + "ENVIRONMENT_VARIABLES": { + "example-name": "example-value" + } + } + ], + "kubernetes_endpoint":[ + { + "ENV_NAME": "dev", + "TEST_FILE_PATH": "sample-request.json", + "PUBLIC_ACCESS": "true", + "ENDPOINT_NAME": "", + "ENDPOINT_DESC": "An kubernetes endpoint serving a flow for [task]", + "DEPLOYMENT_DESC": "prompt flow deployment", + "PRIOR_DEPLOYMENT_NAME": "", + "PRIOR_DEPLOYMENT_TRAFFIC_ALLOCATION": "", + "CURRENT_DEPLOYMENT_NAME": "", + "CURRENT_DEPLOYMENT_TRAFFIC_ALLOCATION": 100, + "COMPUTE_NAME": "", + "DEPLOYMENT_VM_SIZE": "promptinstancetype", + "DEPLOYMENT_BASE_IMAGE_NAME": "mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest", + "DEPLOYMENT_CONDA_PATH": "environment/conda.yml", + "DEPLOYMENT_INSTANCE_COUNT": 1, + "CPU_ALLOCATION": "", + "MEMORY_ALLOCATION": "", + "ENVIRONMENT_VARIABLES": { + "example-name": "example-value" + } + } + ] +} \ No newline at end of file diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index 433a1ece2..c205d3b2f 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -130,10 +130,9 @@ sshKeyName=$(az sshkey list -g "$resourceGroupName" --query "[?contains(name, 's if [ -z "$sshKeyName" ] || [ "$sshKeyName" == "" ]; then printProgress "Creating ssh keys in resource group ${resourceGroupName}..." - yes y | ssh-keygen -t rsa -N "" -f /tmp/deploy_id_rsa - privateSshKey=$(cat /tmp/deploy_id_rsa) - publicSshKey=$(cat /tmp/deploy_id_rsa.pub) - rm /tmp/deploy_id_rsa* + yes y | ssh-keygen -t rsa -N "" -f ${repoRoot}/.ssh/jumpbox_private_key + privateSshKey=$(cat ${repoRoot}/.ssh/jumpbox_private_key) + publicSshKey=$(cat ${repoRoot}/.ssh/jumpbox_private_key.pub) printProgress "publicSshKey=$publicSshKey" printProgress "privateSshKey=$privateSshKey" else diff --git a/infra/bicep/scripts/export-deployment-variables.sh b/infra/bicep/scripts/export-deployment-variables.sh index 70b2facbb..47cf5f782 100755 --- a/infra/bicep/scripts/export-deployment-variables.sh +++ b/infra/bicep/scripts/export-deployment-variables.sh @@ -23,25 +23,24 @@ while getopts "k:g:e:w:r:i:" opt; do esac done -# The JSON file -FILE="${repoRoot}/llmops_confdig.json" +# The LLMOPS configJSON file +FILE_LLMOPS="${repoRoot}/llmops_config.json" #If the llmops_config.json file does not exist, create it and add one block containing the environment variables -if [[ ! -e $FILE ]]; then - echo "File $FILE does not exist, creating it..." - touch $FILE +if [[ ! -e $FILE_LLMOPS ]]; then + echo "File $FILE_LLMOPS does not exist, creating it..." + touch $FILE_LLMOPS blockToAdd="{ \"ENV_NAME\": \"$envName\", \"RUNTIME_NAME\": \"$runtimeName\", \"KEYVAULT_NAME\": \"$kvName\", \"RESOURCE_GROUP_NAME\": \"$rgName\", \"WORKSPACE_NAME\": \"$workspaceName\", - \"NETWORK_ISOLATION\": $networkIsolationBool, \"STANDARD_FLOW_PATH\": \"flows/experiment\", \"EVALUATION_FLOW_PATH\": \"flows/evaluation, flows/evaluation_adv\" }" - echo "File $FILE created." - cat << EOF > $FILE + echo "File $FILE_LLMOPS created." + cat << EOF > $FILE_LLMOPS { "envs":[ $blockToAdd @@ -51,7 +50,7 @@ EOF else #If the the llmops_config.json exists, update it. #The update is done by adding a new block if the environment does not exist, or by updating the existing block if the environment already exists - echo "File $FILE already exists. Updating it configuration of environment $envName..." + echo "File $FILE_LLMOPS already exists. Updating configuration of environment $envName..." jq --arg envName "$envName" --arg runtimeName "$runtimeName" --arg kvName "$kvName" --arg rgName "$rgName" --arg workspaceName "$workspaceName" ' if any(.envs[]; .ENV_NAME == $envName) then .envs |= map( @@ -77,5 +76,69 @@ else "EVALUATION_FLOW_PATH": "flows/evaluation" } ] - end' $FILE > temp.json && mv temp.json $FILE + end' $FILE_LLMOPS > temp.json && mv temp.json $FILE_LLMOPS fi + +# Now set "PUBLIC_ACCESS" to true in deployment_config.json +FILE_DEPLOYMENT="${repoRoot}/deployment_config.json" + +#If the llmops_config.json file does not exist, create it and add one block containing the environment variables +if [[ ! -e $FILE_DEPLOYMENT ]]; then + echo "File $FILE_DEPLOYMENT does not exist, creating it..." + touch $FILE_DEPLOYMENT + blockToAddDeployment="{ + \"azure_managed_endpoint\":[ + { + \"ENV_NAME\": \"dev\", + \"TEST_FILE_PATH\": \"sample-request.json\", + \"PUBLIC_ACCESS\": \"$networkIsolationBool\", + \"ENDPOINT_NAME\": \"\", + \"ENDPOINT_DESC\": \"An online endpoint serving a flow for [task]\", + \"DEPLOYMENT_DESC\": \"prompt flow deployment\", + \"PRIOR_DEPLOYMENT_NAME\": \"\", + \"PRIOR_DEPLOYMENT_TRAFFIC_ALLOCATION\": \"\", + \"CURRENT_DEPLOYMENT_NAME\": \"\", + \"CURRENT_DEPLOYMENT_TRAFFIC_ALLOCATION\": \"100\", + \"DEPLOYMENT_VM_SIZE\": \"Standard_F4s_v2\", + \"DEPLOYMENT_BASE_IMAGE_NAME\": \"mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest\", + \"DEPLOYMENT_CONDA_PATH\": \"environment/conda.yml\", + \"DEPLOYMENT_INSTANCE_COUNT\": 1, + \"ENVIRONMENT_VARIABLES\": { + \"example-name\": \"example-value\" + } + } + ], + \"kubernetes_endpoint\":[ + { + \"ENV_NAME\": \"dev\", + \"TEST_FILE_PATH\": \"sample-request.json\", + \"PUBLIC_ACCESS\": \"$networkIsolationBool\", + \"ENDPOINT_NAME\": \"\", + \"ENDPOINT_DESC\": \"An kubernetes endpoint serving a flow for [task]\", + \"DEPLOYMENT_DESC\": \"prompt flow deployment\", + \"PRIOR_DEPLOYMENT_NAME\": \"\", + \"PRIOR_DEPLOYMENT_TRAFFIC_ALLOCATION\": \"\", + \"CURRENT_DEPLOYMENT_NAME\": \"\", + \"CURRENT_DEPLOYMENT_TRAFFIC_ALLOCATION\": 100, + \"COMPUTE_NAME\": \"\", + \"DEPLOYMENT_VM_SIZE\": \"promptinstancetype\", + \"DEPLOYMENT_BASE_IMAGE_NAME\": \"mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest\", + \"DEPLOYMENT_CONDA_PATH\": \"environment/conda.yml\", + \"DEPLOYMENT_INSTANCE_COUNT\": 1, + \"CPU_ALLOCATION\": \"\", + \"MEMORY_ALLOCATION\": \"\", + \"ENVIRONMENT_VARIABLES\": { + \"example-name\": \"example-value\" + } + } + ] +}" + echo "File $FILE_DEPLOYMENT created." + cat << EOF > $FILE_DEPLOYMENT + $blockToAddDeployment +EOF +else + #If the the deployment_config.json.json exists, update it to set value of "PUBLIC_ACCESS" to true + jq --arg networkIsolationBool "$networkIsolationBool" '.[] |= (.[] | .PUBLIC_ACCESS = $networkIsolationBool)' $FILE_DEPLOYMENT > tempd.json && mv tempd.json $FILE_DEPLOYMENT +fi + diff --git a/llmops/common/deployment/provision_deployment.py b/llmops/common/deployment/provision_deployment.py index 59ec04b21..3dd8e4c9f 100644 --- a/llmops/common/deployment/provision_deployment.py +++ b/llmops/common/deployment/provision_deployment.py @@ -101,6 +101,7 @@ if "ENDPOINT_NAME" in elem and "ENV_NAME" in elem: if stage == elem["ENV_NAME"]: endpoint_name = elem["ENDPOINT_NAME"] + public_access = elem["PUBLIC_ACCESS"] deployment_name = elem["CURRENT_DEPLOYMENT_NAME"] deployment_conda_path = elem["DEPLOYMENT_CONDA_PATH"] deployment_base_image = elem["DEPLOYMENT_BASE_IMAGE_NAME"] @@ -168,6 +169,7 @@ request_settings=OnlineRequestSettings( request_timeout_ms=90000 ), + public_access=public_access, ) ml_client.online_deployments.begin_create_or_update( diff --git a/llmops/common/deployment/provision_endpoint.py b/llmops/common/deployment/provision_endpoint.py index b2c04930e..4e0c93e6e 100644 --- a/llmops/common/deployment/provision_endpoint.py +++ b/llmops/common/deployment/provision_endpoint.py @@ -86,12 +86,14 @@ for elem in endpoint_config["azure_managed_endpoint"]: if "ENDPOINT_NAME" in elem and "ENV_NAME" in elem: if stage == elem["ENV_NAME"]: + public_access = elem["PUBLIC_ACCESS"] endpoint_name = elem["ENDPOINT_NAME"] endpoint_desc = elem["ENDPOINT_DESC"] endpoint = ManagedOnlineEndpoint( name=endpoint_name, description=endpoint_desc, auth_mode="key", + public_access=public_access, tags={"build_id": build_id}, ) From 0fe2c2d3dc5870e5008362835ff40e920157139d Mon Sep 17 00:00:00 2001 From: Raouf Date: Mon, 22 Jan 2024 15:40:14 +0000 Subject: [PATCH 07/17] fix typo in deployment script --- infra/bicep/scripts/deploy-infra.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index c205d3b2f..f6212dd54 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -130,9 +130,9 @@ sshKeyName=$(az sshkey list -g "$resourceGroupName" --query "[?contains(name, 's if [ -z "$sshKeyName" ] || [ "$sshKeyName" == "" ]; then printProgress "Creating ssh keys in resource group ${resourceGroupName}..." - yes y | ssh-keygen -t rsa -N "" -f ${repoRoot}/.ssh/jumpbox_private_key - privateSshKey=$(cat ${repoRoot}/.ssh/jumpbox_private_key) - publicSshKey=$(cat ${repoRoot}/.ssh/jumpbox_private_key.pub) + yes y | ssh-keygen -t rsa -N "" -f ${repoRoot}/../.ssh/jumpbox_private_key + privateSshKey=$(cat ${repoRoot}/../.ssh/jumpbox_private_key) + publicSshKey=$(cat ${repoRoot}/../.ssh/jumpbox_private_key.pub) printProgress "publicSshKey=$publicSshKey" printProgress "privateSshKey=$privateSshKey" else From 4d0c5b28d77b18600a988165fb7cb23c8a39127d Mon Sep 17 00:00:00 2001 From: Raouf Date: Mon, 22 Jan 2024 16:48:21 +0000 Subject: [PATCH 08/17] changing jq request to export PUBLIC ACCESS --- deployment_config.json | 4 +- .../scripts/export-deployment-variables.sh | 151 +++++++++--------- 2 files changed, 79 insertions(+), 76 deletions(-) diff --git a/deployment_config.json b/deployment_config.json index 981b7a739..de9439a27 100644 --- a/deployment_config.json +++ b/deployment_config.json @@ -2,7 +2,7 @@ "azure_managed_endpoint": { "ENV_NAME": "dev", "TEST_FILE_PATH": "sample-request.json", - "PUBLIC_ACCESS": "", + "PUBLIC_ACCESS": "true", "ENDPOINT_NAME": "", "ENDPOINT_DESC": "An online endpoint serving a flow for [task]", "DEPLOYMENT_DESC": "prompt flow deployment", @@ -21,7 +21,7 @@ "kubernetes_endpoint": { "ENV_NAME": "dev", "TEST_FILE_PATH": "sample-request.json", - "PUBLIC_ACCESS": "", + "PUBLIC_ACCESS": "true", "ENDPOINT_NAME": "", "ENDPOINT_DESC": "An kubernetes endpoint serving a flow for [task]", "DEPLOYMENT_DESC": "prompt flow deployment", diff --git a/infra/bicep/scripts/export-deployment-variables.sh b/infra/bicep/scripts/export-deployment-variables.sh index 47cf5f782..1e904aae8 100755 --- a/infra/bicep/scripts/export-deployment-variables.sh +++ b/infra/bicep/scripts/export-deployment-variables.sh @@ -4,81 +4,82 @@ repoRoot=$( pwd -P ) -# shellcheck disable=SC2034 -while getopts "k:g:e:w:r:i:" opt; do - case $opt in - k) kvName=$OPTARG ;; - g) rgName=$OPTARG ;; - e) envName=$OPTARG ;; - w) workspaceName=$OPTARG ;; - r) runtimeName=$OPTARG ;; - i) networkIsolationBool=$OPTARG ;; - :) - echo "Error: -${OPTARG} requires a value" - exit 1 - ;; - *) - exit 1 - ;; - esac -done +# # shellcheck disable=SC2034 +# while getopts "k:g:e:w:r:i:" opt; do +# case $opt in +# k) kvName=$OPTARG ;; +# g) rgName=$OPTARG ;; +# e) envName=$OPTARG ;; +# w) workspaceName=$OPTARG ;; +# r) runtimeName=$OPTARG ;; +# i) networkIsolationBool=$OPTARG ;; +# :) +# echo "Error: -${OPTARG} requires a value" +# exit 1 +# ;; +# *) +# exit 1 +# ;; +# esac +# done -# The LLMOPS configJSON file -FILE_LLMOPS="${repoRoot}/llmops_config.json" +# # The LLMOPS configJSON file +# FILE_LLMOPS="${repoRoot}/llmops_config.json" -#If the llmops_config.json file does not exist, create it and add one block containing the environment variables -if [[ ! -e $FILE_LLMOPS ]]; then - echo "File $FILE_LLMOPS does not exist, creating it..." - touch $FILE_LLMOPS - blockToAdd="{ - \"ENV_NAME\": \"$envName\", - \"RUNTIME_NAME\": \"$runtimeName\", - \"KEYVAULT_NAME\": \"$kvName\", - \"RESOURCE_GROUP_NAME\": \"$rgName\", - \"WORKSPACE_NAME\": \"$workspaceName\", - \"STANDARD_FLOW_PATH\": \"flows/experiment\", - \"EVALUATION_FLOW_PATH\": \"flows/evaluation, flows/evaluation_adv\" - }" - echo "File $FILE_LLMOPS created." - cat << EOF > $FILE_LLMOPS -{ - "envs":[ - $blockToAdd - ] -} -EOF -else - #If the the llmops_config.json exists, update it. - #The update is done by adding a new block if the environment does not exist, or by updating the existing block if the environment already exists - echo "File $FILE_LLMOPS already exists. Updating configuration of environment $envName..." - jq --arg envName "$envName" --arg runtimeName "$runtimeName" --arg kvName "$kvName" --arg rgName "$rgName" --arg workspaceName "$workspaceName" ' - if any(.envs[]; .ENV_NAME == $envName) then - .envs |= map( - if .ENV_NAME == $envName then - .ENV_NAME = $envName - | .RUNTIME_NAME = $runtimeName - | .KEYVAULT_NAME = $kvName - | .RESOURCE_GROUP_NAME = $rgName - | .WORKSPACE_NAME = $workspaceName - else - . - end - ) - else - .envs += [ - { - "ENV_NAME": $envName, - "RUNTIME_NAME": $runtimeName, - "KEYVAULT_NAME": $kvName, - "RESOURCE_GROUP_NAME": $rgName, - "WORKSPACE_NAME": $workspaceName, - "STANDARD_FLOW_PATH": "flows/experiment", - "EVALUATION_FLOW_PATH": "flows/evaluation" - } - ] - end' $FILE_LLMOPS > temp.json && mv temp.json $FILE_LLMOPS -fi +# #If the llmops_config.json file does not exist, create it and add one block containing the environment variables +# if [[ ! -e $FILE_LLMOPS ]]; then +# echo "File $FILE_LLMOPS does not exist, creating it..." +# touch $FILE_LLMOPS +# blockToAdd="{ +# \"ENV_NAME\": \"$envName\", +# \"RUNTIME_NAME\": \"$runtimeName\", +# \"KEYVAULT_NAME\": \"$kvName\", +# \"RESOURCE_GROUP_NAME\": \"$rgName\", +# \"WORKSPACE_NAME\": \"$workspaceName\", +# \"STANDARD_FLOW_PATH\": \"flows/experiment\", +# \"EVALUATION_FLOW_PATH\": \"flows/evaluation, flows/evaluation_adv\" +# }" +# echo "File $FILE_LLMOPS created." +# cat << EOF > $FILE_LLMOPS +# { +# "envs":[ +# $blockToAdd +# ] +# } +# EOF +# else +# #If the the llmops_config.json exists, update it. +# #The update is done by adding a new block if the environment does not exist, or by updating the existing block if the environment already exists +# echo "File $FILE_LLMOPS already exists. Updating configuration of environment $envName..." +# jq --arg envName "$envName" --arg runtimeName "$runtimeName" --arg kvName "$kvName" --arg rgName "$rgName" --arg workspaceName "$workspaceName" ' +# if any(.envs[]; .ENV_NAME == $envName) then +# .envs |= map( +# if .ENV_NAME == $envName then +# .ENV_NAME = $envName +# | .RUNTIME_NAME = $runtimeName +# | .KEYVAULT_NAME = $kvName +# | .RESOURCE_GROUP_NAME = $rgName +# | .WORKSPACE_NAME = $workspaceName +# else +# . +# end +# ) +# else +# .envs += [ +# { +# "ENV_NAME": $envName, +# "RUNTIME_NAME": $runtimeName, +# "KEYVAULT_NAME": $kvName, +# "RESOURCE_GROUP_NAME": $rgName, +# "WORKSPACE_NAME": $workspaceName, +# "STANDARD_FLOW_PATH": "flows/experiment", +# "EVALUATION_FLOW_PATH": "flows/evaluation" +# } +# ] +# end' $FILE_LLMOPS > temp.json && mv temp.json $FILE_LLMOPS +# fi +networkIsolationBool=true # Now set "PUBLIC_ACCESS" to true in deployment_config.json FILE_DEPLOYMENT="${repoRoot}/deployment_config.json" @@ -138,7 +139,9 @@ if [[ ! -e $FILE_DEPLOYMENT ]]; then $blockToAddDeployment EOF else - #If the the deployment_config.json.json exists, update it to set value of "PUBLIC_ACCESS" to true - jq --arg networkIsolationBool "$networkIsolationBool" '.[] |= (.[] | .PUBLIC_ACCESS = $networkIsolationBool)' $FILE_DEPLOYMENT > tempd.json && mv tempd.json $FILE_DEPLOYMENT + #If the the deployment_config.json.json exists, update it to set value of "PUBLIC_ACCESS" to true or false + echo "File $FILE_DEPLOYMENT already exists. Updating it to set value of PUBLIC_ACCESS" + # jq --arg networkIsolationBool "$networkIsolationBool" '.[] |= (.[] | .PUBLIC_ACCESS = "$networkIsolationBool")' $FILE_DEPLOYMENT > tempd.json && mv tempd.json $FILE_DEPLOYMENT + jq --arg networkIsolationBool "$networkIsolationBool" ' .[].PUBLIC_ACCESS |= $networkIsolationBool ' $FILE_DEPLOYMENT > tempd.json && mv tempd.json $FILE_DEPLOYMENT fi From 51970bb8bc189c88706766a3356213f3b607c12b Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 24 Jan 2024 12:55:28 +0000 Subject: [PATCH 09/17] changing ssh folder name and removing unused file --- .gitignore | 2 +- infra/bicep/modules/linux-machine.bicep | 2 +- .../modules/machinelearningnetworking.bicep | 108 ------------------ infra/bicep/scripts/deploy-infra.sh | 15 ++- 4 files changed, 11 insertions(+), 116 deletions(-) delete mode 100644 infra/bicep/modules/machinelearningnetworking.bicep diff --git a/.gitignore b/.gitignore index 93897295b..0934a7dd0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ llmops_config.json -.ssh/ +ssh/ # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/infra/bicep/modules/linux-machine.bicep b/infra/bicep/modules/linux-machine.bicep index 292634afa..074e88342 100644 --- a/infra/bicep/modules/linux-machine.bicep +++ b/infra/bicep/modules/linux-machine.bicep @@ -69,7 +69,7 @@ var linuxConfigurationWithSSH = { ssh: { publicKeys: [ { - path: '/home/${adminUsername}/.ssh/authorized_keys' + path: '/home/${adminUsername}/ssh/authorized_keys' keyData: publicSshKey.properties.publicKey } ] diff --git a/infra/bicep/modules/machinelearningnetworking.bicep b/infra/bicep/modules/machinelearningnetworking.bicep deleted file mode 100644 index 0d0e56245..000000000 --- a/infra/bicep/modules/machinelearningnetworking.bicep +++ /dev/null @@ -1,108 +0,0 @@ -// Creates private endpoints and DNS zones for the azure machine learning workspace -@description('Azure region of the deployment') -param location string - -@description('Machine learning workspace private link endpoint name') -param nameMachineLearningPle string - -@description('Resource ID of the virtual network resource') -param virtualNetworkId string - -@description('Resource ID of the subnet resource') -param subnetId string - -@description('Resource ID of the machine learning workspace') -param workspaceArmId string - -@description('Tags to add to the resources') -param tags object - -var privateDnsZoneName = { - azureusgovernment: 'privatelink.api.ml.azure.us' - azurechinacloud: 'privatelink.api.ml.azure.cn' - azurecloud: 'privatelink.api.azureml.ms' -} - -var privateAznbDnsZoneName = { - azureusgovernment: 'privatelink.notebooks.usgovcloudapi.net' - azurechinacloud: 'privatelink.notebooks.chinacloudapi.cn' - azurecloud: 'privatelink.notebooks.azure.net' -} - -resource machineLearningPrivateEndpoint 'Microsoft.Network/privateEndpoints@2022-01-01' = { - name: nameMachineLearningPle - location: location - tags: tags - properties: { - privateLinkServiceConnections: [ - { - name: nameMachineLearningPle - properties: { - groupIds: [ - 'amlworkspace' - ] - privateLinkServiceId: workspaceArmId - } - } - ] - subnet: { - id: subnetId - } - } -} - -resource amlPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = { - name: privateDnsZoneName[toLower(environment().name)] - location: 'global' -} - -resource amlPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = { - name: uniqueString(workspaceArmId) - parent: amlPrivateDnsZone - location: 'global' - properties: { - registrationEnabled: false - virtualNetwork: { - id: virtualNetworkId - } - } -} - -// Notebook -resource notebookPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = { - name: privateAznbDnsZoneName[toLower(environment().name)] - location: 'global' -} - -resource notebookPrivateDnsZoneVnetLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = { - name: uniqueString(workspaceArmId) - parent: notebookPrivateDnsZone - location: 'global' - properties: { - registrationEnabled: false - virtualNetwork: { - id: virtualNetworkId - } - } -} - -resource privateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = { - name: 'amlworkspace-PrivateDnsZoneGroup' - parent: machineLearningPrivateEndpoint - properties:{ - privateDnsZoneConfigs: [ - { - name: privateDnsZoneName[environment().name] - properties:{ - privateDnsZoneId: amlPrivateDnsZone.id - } - } - { - name: privateAznbDnsZoneName[environment().name] - properties:{ - privateDnsZoneId: notebookPrivateDnsZone.id - } - } - ] - } -} diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index f6212dd54..25adc257b 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -1,8 +1,11 @@ #!/bin/bash repoRoot=$( - cd "$(dirname "${BASH_SOURCE[0]}")/../../" + cd "$(dirname "${BASH_SOURCE[0]}")/../../../" pwd -P ) + +echo "repoRoot=$repoRoot" + ############################################################################## # colors for formatting the output ############################################################################## @@ -119,7 +122,7 @@ printProgress "Resource Group Name: ${resourceGroupName}" # Deploy the infrastructure for DEV environment -pathToBicep="${repoRoot}/bicep/main.bicep" +pathToBicep="${repoRoot}/infra/bicep/main.bicep" environmentType="${TYPE_ENVIRONMENT}" networkIsolationBool=${NETWORK_ISOLATION} @@ -130,9 +133,9 @@ sshKeyName=$(az sshkey list -g "$resourceGroupName" --query "[?contains(name, 's if [ -z "$sshKeyName" ] || [ "$sshKeyName" == "" ]; then printProgress "Creating ssh keys in resource group ${resourceGroupName}..." - yes y | ssh-keygen -t rsa -N "" -f ${repoRoot}/../.ssh/jumpbox_private_key - privateSshKey=$(cat ${repoRoot}/../.ssh/jumpbox_private_key) - publicSshKey=$(cat ${repoRoot}/../.ssh/jumpbox_private_key.pub) + yes y | ssh-keygen -t rsa -N "" -f ${repoRoot}/ssh/jumpbox_private_key + privateSshKey=$(cat ${repoRoot}/ssh/jumpbox_private_key) + publicSshKey=$(cat ${repoRoot}/ssh/jumpbox_private_key.pub) printProgress "publicSshKey=$publicSshKey" printProgress "privateSshKey=$privateSshKey" else @@ -159,7 +162,7 @@ if [ -z "$nameAmlWorkspace" ]; then exit 1 fi runtimeName="runtime1" -${repoRoot}/bicep/scripts/export-deployment-variables.sh -k "$keyVaultName" -g "$resourceGroupName" -e "$environmentType" -w "$nameAmlWorkspace" -r "$runtimeName" -i $networkIsolationBool +${repoRoot}/infra/bicep/scripts/export-deployment-variables.sh -k "$keyVaultName" -g "$resourceGroupName" -e "$environmentType" -w "$nameAmlWorkspace" -r "$runtimeName" -i $networkIsolationBool if [ $networkIsolationBool = true ]; then printProgress "AML workspace name: ${nameAmlWorkspace}" From 2f45b889aae1764079fb3606590ae6ff2ad236bc Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 24 Jan 2024 14:39:00 +0000 Subject: [PATCH 10/17] changing infra deployment to exit if login fails --- infra/bicep/scripts/deploy-infra.sh | 44 ++++++++++++++++++----------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index 25adc257b..8fb6a87eb 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -4,8 +4,6 @@ repoRoot=$( pwd -P ) -echo "repoRoot=$repoRoot" - ############################################################################## # colors for formatting the output ############################################################################## @@ -62,22 +60,31 @@ function usage() { echo -e " -e [ENV] set environment where ENV=DEV, QA, PREPROD or PROD" echo -e " -r [RESOURCE_GROUP] set resource group" echo -e " -i [NETWORK_ISOLATION] trigger on/off network isolation for AML workspace and its dependant resources. Set to false by default" + echo -e " -i [APP_ID] set the APP_ID when you want to use a service principal to login to Azure" + echo -e " -i [PASSWORD] set the PASSWORD when you want to use a service principal to login to Azure" + echo -e " -i [TENANT_ID] set TENANT_ID" + echo -e " -i [SUBSCRIPTION_ID] set SUBSCRIPTION_ID" echo echo "Example:" echo -e " bash ./deploy-infra.sh -e DEV -r DevRessourceGroup" echo -e " bash ./deploy-infra.sh -e QA -r QARessourceGroup -i false" echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -i true" + echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -i true -a 1234abcd-123a-1234-abcd-123456abcdef -p password -t 1234abcd-123a-1234-abcd-123456abcdef -s 1234abcd-123a-1234-abcd-123456abcdef" } NETWORK_ISOLATION=false # shellcheck disable=SC2034 -while getopts "e:r:i:" opt; do +while getopts "e:r:i:a:p:t:s:" opt; do case $opt in e) TYPE_ENVIRONMENT=$OPTARG ;; r) RESOURCE_GROUP=$OPTARG ;; i) NETWORK_ISOLATION=$OPTARG ;; + a) APP_ID=$OPTARG ;; + p) PASSWORD=$OPTARG ;; + t) TENANT_ID=$OPTARG ;; + s) SUBSCRIPTION_ID=$OPTARG ;; :) printError "Error: -${OPTARG} requires a value" exit 1 @@ -96,25 +103,25 @@ if [[ -z "${TYPE_ENVIRONMENT}" || -z "${RESOURCE_GROUP}" ]]; then exit 1 fi -if [[ -z "$appId" || -z $password || -z $tenantId || -z $subId ]]; then - printWarning "Variables \$appId \$password \$tenantId \$subId not set" +if [[ -z "$APP_ID" || -z $PASSWORD || -z $TENANT_ID || -z $SUBSCRIPTION_ID ]]; then + printWarning "Variables \$APP_ID \$PASSWORD \$TENANT_ID \$SUBSCRIPTION_ID not set" printProgress "Interactive Azure login..." - if [[ -z $tenantId ]]; then - az login + if [[ -z $TENANT_ID ]]; then + az login || exit 1 else - az login -t $tenantId + az login -t $TENANT_ID || exit 1 fi - if [[ ! -z $subId ]]; then - az account set -s $subId + if [[ ! -z $SUBSCRIPTION_ID ]]; then + az account set -s $SUBSCRIPTION_ID fi else printProgress "Service Principal Azure login..." - az login --service-principal -u $appId -p $password -t $tenantId - az account set -s $subId + az login --service-principal -u $APP_ID -p $PASSWORD -t $TENANT_ID || exit 1 + az account set -s $SUBSCRIPTION_ID fi checkLoginAndSubscription - +az account show printProgress "Getting Resource Group Name..." resourceGroupName="${RESOURCE_GROUP}" @@ -127,15 +134,18 @@ environmentType="${TYPE_ENVIRONMENT}" networkIsolationBool=${NETWORK_ISOLATION} printProgress "generate keys for the jumpbox..." - printProgress "Check if ssh keys already created in resource group ${resourceGroupName}..." + sshKeyName=$(az sshkey list -g "$resourceGroupName" --query "[?contains(name, 'sshkey-linuxmachine')].name" -o tsv) if [ -z "$sshKeyName" ] || [ "$sshKeyName" == "" ]; then printProgress "Creating ssh keys in resource group ${resourceGroupName}..." - yes y | ssh-keygen -t rsa -N "" -f ${repoRoot}/ssh/jumpbox_private_key - privateSshKey=$(cat ${repoRoot}/ssh/jumpbox_private_key) - publicSshKey=$(cat ${repoRoot}/ssh/jumpbox_private_key.pub) + + folder_ssh="${repoRoot}/ssh" + if [ ! -d "${folder_ssh}" ]; then mkdir "${folder_ssh}"; fi + yes y | ssh-keygen -t rsa -N "" -f ${folder_ssh}/jumpbox_private_key + privateSshKey=$(cat ${folder_ssh}/jumpbox_private_key) + publicSshKey=$(cat ${folder_ssh}/jumpbox_private_key.pub) printProgress "publicSshKey=$publicSshKey" printProgress "privateSshKey=$privateSshKey" else From 939eb3f360f88ee95871c2b106148d35fee050d4 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 24 Jan 2024 14:44:12 +0000 Subject: [PATCH 11/17] fix typo --- infra/bicep/modules/storage.bicep | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/bicep/modules/storage.bicep b/infra/bicep/modules/storage.bicep index 572962e46..25cde932e 100644 --- a/infra/bicep/modules/storage.bicep +++ b/infra/bicep/modules/storage.bicep @@ -186,7 +186,7 @@ resource filePrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = if } resource filePrivateEndpointDns 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = if (enableNetworkIsolation) { - name: 'flie-PrivateDnsZoneGroup' + name: 'file-PrivateDnsZoneGroup' parent: storagePrivateEndpointFile properties:{ privateDnsZoneConfigs: [ From 478cee5ddff1c7b117310b4ec5cb8f536a45db32 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 24 Jan 2024 15:10:38 +0000 Subject: [PATCH 12/17] fix typo in deploy-infra script --- infra/bicep/scripts/deploy-infra.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/bicep/scripts/deploy-infra.sh b/infra/bicep/scripts/deploy-infra.sh index 8fb6a87eb..354ff0d01 100755 --- a/infra/bicep/scripts/deploy-infra.sh +++ b/infra/bicep/scripts/deploy-infra.sh @@ -67,10 +67,10 @@ function usage() { echo echo "Example:" - echo -e " bash ./deploy-infra.sh -e DEV -r DevRessourceGroup" - echo -e " bash ./deploy-infra.sh -e QA -r QARessourceGroup -i false" - echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -i true" - echo -e " bash ./deploy-infra.sh -e PROD -r PRODRessourceGroup -i true -a 1234abcd-123a-1234-abcd-123456abcdef -p password -t 1234abcd-123a-1234-abcd-123456abcdef -s 1234abcd-123a-1234-abcd-123456abcdef" + echo -e " bash ./deploy-infra.sh -e DEV -r DevResourceGroup" + echo -e " bash ./deploy-infra.sh -e QA -r QAResourceGroup -i false" + echo -e " bash ./deploy-infra.sh -e PROD -r PRODResourceGroup -i true" + echo -e " bash ./deploy-infra.sh -e PROD -r PRODResourceGroup -i true -a 1234abcd-123a-1234-abcd-123456abcdef -p password -t 1234abcd-123a-1234-abcd-123456abcdef -s 1234abcd-123a-1234-abcd-123456abcdef" } From de836a1247de1dd8532d740de4795e93c99c7ad2 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 24 Jan 2024 15:20:30 +0000 Subject: [PATCH 13/17] changing deployment name --- infra/bicep/main.bicep | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/bicep/main.bicep b/infra/bicep/main.bicep index fb492e759..2fa42f444 100644 --- a/infra/bicep/main.bicep +++ b/infra/bicep/main.bicep @@ -155,7 +155,7 @@ module azureOpenAI 'modules/azure-openai.bicep' = { //Azure OpenAI resource nameAOAI: 'aoai-eastus-${environmentType}-${uniqueString(resourceGroup().id)}' location: location - nameDeploymentAOAI: 'deployment-${environmentType}-gpt35-0301' + nameDeploymentAOAI: 'gpt-35-turbo' nameDeployedModel: 'gpt-35-turbo' versionDeployedModel: '0301' skuAOAI: { From de9ebd89f3f79a03aa22332dbc97542faaa31ae4 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 31 Jan 2024 10:09:21 +0100 Subject: [PATCH 14/17] correct public network access property in endpoint and deployment --- llmops/common/deployment/provision_deployment.py | 1 - llmops/common/deployment/provision_endpoint.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/llmops/common/deployment/provision_deployment.py b/llmops/common/deployment/provision_deployment.py index 3dd8e4c9f..aa3eabfb2 100644 --- a/llmops/common/deployment/provision_deployment.py +++ b/llmops/common/deployment/provision_deployment.py @@ -169,7 +169,6 @@ request_settings=OnlineRequestSettings( request_timeout_ms=90000 ), - public_access=public_access, ) ml_client.online_deployments.begin_create_or_update( diff --git a/llmops/common/deployment/provision_endpoint.py b/llmops/common/deployment/provision_endpoint.py index 4e0c93e6e..24dc4c4d8 100644 --- a/llmops/common/deployment/provision_endpoint.py +++ b/llmops/common/deployment/provision_endpoint.py @@ -93,7 +93,7 @@ name=endpoint_name, description=endpoint_desc, auth_mode="key", - public_access=public_access, + public_network_access=public_access, tags={"build_id": build_id}, ) From 1153d086c08e57d1269d746f88dbfcf6a74166c4 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 7 Feb 2024 11:43:13 +0100 Subject: [PATCH 15/17] adding documentation to use infra as code --- .devcontainer/requirements.txt | 6 +- README.md | 13 +- docs/images/firefox-proxy.png | Bin 0 -> 226651 bytes docs/images/inbound-rule.png | Bin 0 -> 65655 bytes docs/images/managet-vnet-aml.svg | 1409 +++++++++++++++++ docs/ssh_tunelling_access_workspace_vnet.md | 51 + docs/tutorial/02-Infra deployment.md | 76 + .../{02-Development.md => 03-Development.md} | 0 ...nalization.md => 04-Operationalization.md} | 0 .../{04-Patterns.md => 05-Patterns.md} | 0 10 files changed, 1550 insertions(+), 5 deletions(-) create mode 100644 docs/images/firefox-proxy.png create mode 100644 docs/images/inbound-rule.png create mode 100644 docs/images/managet-vnet-aml.svg create mode 100644 docs/ssh_tunelling_access_workspace_vnet.md create mode 100644 docs/tutorial/02-Infra deployment.md rename docs/tutorial/{02-Development.md => 03-Development.md} (100%) rename docs/tutorial/{03-Operationalization.md => 04-Operationalization.md} (100%) rename docs/tutorial/{04-Patterns.md => 05-Patterns.md} (100%) diff --git a/.devcontainer/requirements.txt b/.devcontainer/requirements.txt index 87b18932a..bc30dc5a7 100644 --- a/.devcontainer/requirements.txt +++ b/.devcontainer/requirements.txt @@ -1,3 +1,7 @@ promptflow promptflow-tools -promptflow-sdk[builtins] \ No newline at end of file +promptflow-sdk[builtins] +jinja2 +promptflow[azure] +openai +python-dotenv \ No newline at end of file diff --git a/README.md b/README.md index 20a3311b9..0e0326225 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,9 @@ To harness the capabilities of the **local execution**, follow these installatio git clone https://github.com/microsoft/llmops-promptflow-template.git ``` -2. **setup env file**: create .env file at top folder level and provide information for items mentioned. Add as many connection names as needed. All the flow examples in this repo uses AzureOpenAI connection named `aoai`. Add a line `aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}` with updated values for api_key and api_base. If additional connections with different names are used in your flows, they should be added accordingly. Currently, flow with AzureOpenAI as provider as supported. +1. **Optional: Use the dev container:** The code includes a dev container configuration file that can be used to create a development container with all the dependencies installed. This is the recommended way to run the code. If you are using VS Code, you can open the folder in a container by clicking on the "Reopen in Container" button in the bottom right corner of the window. The required packages and PromptFlow VS Code extension will be installed automatically when the container is created. If you are using another IDE, you can use the dev container configuration file to create a [development container](https://code.visualstudio.com/docs/devcontainers/containers). This requires [Docker Desktop ](https://www.docker.com/products/docker-desktop/) to be installed on your machine. + +1. **setup env file**: create .env file at top folder level and provide information for items mentioned. Add as many connection names as needed. All the flow examples in this repo uses AzureOpenAI connection named `aoai`. Add a line `aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}` with updated values for api_key and api_base. If additional connections with different names are used in your flows, they should be added accordingly. Currently, flow with AzureOpenAI as provider as supported. ```bash @@ -118,17 +120,20 @@ experiment_name= connection_name_1={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} connection_name_2={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} ``` -3. Prepare the local conda or virtual environment to install the dependencies. +1. Prepare the local conda or virtual environment to install the dependencies. +If you decide to not use the dev container, you can create a virtual environment or conda environment and install the dependencies using the following command: ```bash python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv ``` -4. Bring or write your flows into the template based on documentation [here](./docs/how_to_onboard_new_flows.md). +1. Bring or write your flows into the template based on documentation [here](./docs/how_to_onboard_new_flows.md). + +1. Write python scripts similar to the provided examples in local_execution folder. -5. Write python scripts similar to the provided examples in local_execution folder. +1. ## Contributing diff --git a/docs/images/firefox-proxy.png b/docs/images/firefox-proxy.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c61f62029ca9005e6ff319c08a28d1630e3be9 GIT binary patch literal 226651 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

&K$b2VbyR^dnNS1Ae+CecQ~ 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ÜL_k)R_uB;Zmm&%Q=(otGcNQ+-=4V6}S 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 VJP3V$`V{!5D6e|I;GXI8{{s|#i_`!B literal 0 HcmV?d00001 diff --git a/docs/images/inbound-rule.png b/docs/images/inbound-rule.png new file mode 100644 index 0000000000000000000000000000000000000000..1352a90807df74d6e09f3e4f5fc7640582a566e9 GIT binary patch literal 65655 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 literal 0 HcmV?d00001 diff --git a/docs/images/managet-vnet-aml.svg b/docs/images/managet-vnet-aml.svg new file mode 100644 index 000000000..94dbf34ae --- /dev/null +++ b/docs/images/managet-vnet-aml.svg @@ -0,0 +1,1409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + On + - + premises network + + + + + + + + + + + + + Your Azure VNet + + Express Route + VPN connection + Bastion with jump box VM + + + + + + + + + + + + + + + + + + + Machine + Learning + Workspace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Workspace default resources + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compute + instance + + + + + + Compute + cluster + + + + + + Serverless + + + + + + Serverless + S + park + + + + + + Managed + online + endpoint + + + + + + + + + + + + Azure Machine Learning + managed VNet + + + + + + + + + + + + Your + business + storage + + + + + + + + + + + + + Your + Azure + OpenAI + + You can configure private + endpoint outbound rules to + your private resources. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Free access to machine + learning artifacts on the + Internet. + + + + + + + + + + + + + + + + + + (*) Private endpoints are provisionedif the public network access flag ofthe destination resource is disabled. + (*) + (*) + (*) + (*) + + + + diff --git a/docs/ssh_tunelling_access_workspace_vnet.md b/docs/ssh_tunelling_access_workspace_vnet.md new file mode 100644 index 000000000..19ee0ae9f --- /dev/null +++ b/docs/ssh_tunelling_access_workspace_vnet.md @@ -0,0 +1,51 @@ +# Access the MLOps dev environment behind a VNET using SSH tunneling + +If you deploy the MLOps dev environment with ```enableNetworkIsolation=true```, you can not access the resources behind the VNET. + +Hence, we use SSH tunneling. +You have access to a virtual machine that will serve as a jumpbox. Here are the step to proceed: + +1. Get the private key to access the jumpbox via ssh generated during deployment from the Keyvault + +1. Navigate to the `~/.ssh` directory, and paste your clipboard into a new file: + +```bash +/> vi jumpbox +# Paste the content, save and close +/> chmod 600 jumpbox # to have proper permissions on the file +``` + +1. Open SSH port for your IP onto the jumpbox. + 1. [Find what your IP is](https://www.whatsmyip.org/), + 1. Navigate to the jumpbox in the portal`, + 1. Click on `Networking` on the left, + 1. Add an `inbound port rule` + + ![Add inbound rule](./images/inbound-rule.png) + + Replace `source ip` with your IP and set a unique priority (lower than 65000) + +1. Get the public IP of the jumpbox (from the Azure Portal). + +1. Create a ssh tunel from your machine by running the command: + +```bash +/> ssh -D 127.0.0.1:8090 -i ~/.ssh/jumpbox azureuser@vmsshlinux-agvhcsfgnjgjw.eastus.cloudapp.azure.com +# use -i to use the key copied previously +# azureuser is the default user name of the VM +``` + +The commands above opens a SSH connection to the jumpbox, exposing a local endpoint on port 8090. + +You can navigate to the Azure resources by following the procedure hereafter: + +1. Use Firefox to proxy HTTP requests through the SSH tunnel. In order not to change all the settings of your host network, the easiest way is to use [Firefox browser](https://www.mozilla.org/en-US/). It allows proxying directly, without impacting the whole machine. + + 1. Install & start Firefox + 1. Open settings + 1. Scroll to the bottom, and open the Network settings + 1. Provide a Proxy, Port etc ... (see print screen below) + + ![Firefox proxy settings](./images/firefox-proxy.png) + + 1. You can now access resources on the portal from Firefox diff --git a/docs/tutorial/02-Infra deployment.md b/docs/tutorial/02-Infra deployment.md new file mode 100644 index 000000000..9eac7898f --- /dev/null +++ b/docs/tutorial/02-Infra deployment.md @@ -0,0 +1,76 @@ +# Tutorial 02: Infra deployment with Bicep + +## Introduction + +This tutorial will help you create the following baseline infrastructure for the application using Bicep. You can make the choice whether you want to enable network isolation. The network isolation is done through a custom VNET and a [managed VNET for the Azure Machine Learning Workspace.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-managed-network?view=azureml-api-2&tabs=azure-cli). + +## Architecture + +### Base components + +The following components are always deployed: + +- Azure Machine Learning Workspace +- Azure OpenAI service +- Azure Application Insights +- Azure Key Vault +- Azure Storage Account +- Azure Container Registry + +When network isolation is enabled, the following components are also deployed: + +- Azure Virtual Network and required subnets +- Linux Virtual Machine to resort to SSH tunnelling to acces the Azure Machine Learning Workspace +- Azure Machine Learning Managed + +### Network isolation + +When you deploy the architecture with the bicep code with `enableNetworkIsolation=true`, the resources are deployed in a custom VNET and the Azure ML workspace uses a [managed VNET](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-managed-network?view=azureml-api-2&tabs=azure-cli): + +![Architecture](../images/managet-vnet-aml.svg) + + +## Infra deployment script + +### Deployment process + +First make sure to create a resource group in which you'll deploy the infrastructure. The deployment is done through the [deploy-infra.sh script](../../infra/bicep/scripts/deploy-infra.sh). The script takes the following parameters: + +- **ENV**: the environment where the resources are deployed (DEV, QA, PREPROD, PROD). ***Required*** +- **RESOURCE_GROUP**: the resource group where the resources are deployed. ***Required*** +- **NETWORK_ISOLATION**: trigger on/off network isolation for AML workspace and its dependant resources. ***Set to false by default*** + +If you want to further specify TENANT_ID and SUBSCRIPTION_ID to login to Azure or use a service principal, you can set following parameters: + +- **APP_ID**: the APP_ID when you want to use a service principal to login to Azure +- **PASSWORD**: the PASSWORD when you want to use a service principal to login to Azure +- **TENANT_ID**: the TENANT_ID +- **SUBSCRIPTION_ID**: the SUBSCRIPTION_ID + +The script does the following: +1. Login to Azure +1. Deploys the infrastructure using the [main.bicep file](../../infra/bicep/main.bicep) via the Azure CLI. +1. Exports the required outputs of the deployment (using the [export-deployment-variables.sh script](../../))to the deployment_config.json and llmops_config.json configuration files that you can use when deploying your flows. +1. Note that as opposed to custom VNET deployment, the bicep code **configures** the managed VNET for the Azure ML workspace, but **does not provision** it. Hence the scripts triggers the provisioning operation using the `az ml workspace provision-network` command. This operation can take up to 40 minutes. + +Once the script finishes, you can use the deployment_config.json and llmops_config.json configuration files to deploy your flows, following the dedicated tutorials. + +### Examples + +**Example 1: Deploy the infrastructure in a resource group named `DevResourceGroup` for a `DEV` environment without network isolation. Azure Login relies on the identity of the person launching the script.** + +```bash +bash ./deploy-infra.sh -e DEV -r DevResourceGroup" +``` + +**Example 2: Deploy the infrastructure in a resource group named `ProdResourceGroup` for a `PROD` with network isolation enabled. Azure Login relies on the identity of the person launching the script.** + +```bash +bash ./deploy-infra.sh -e PROD -r ProdResourceGroup -i true" +``` + +**Example 3: Deploy the infrastructure in a resource group named `ProdResourceGroup` for a `PROD` with network isolation enabled. Azure login relies on a service principal.** + +```bash +bash ./deploy-infra.sh -e PROD -r PRODResourceGroup -i true -a 1234abcd-123a-1234-abcd-123456abcdef -p password -t 1234abcd-123a-1234-abcd-123456abcdef -s 1234abcd-123a-1234-abcd-123456abcdef" +``` diff --git a/docs/tutorial/02-Development.md b/docs/tutorial/03-Development.md similarity index 100% rename from docs/tutorial/02-Development.md rename to docs/tutorial/03-Development.md diff --git a/docs/tutorial/03-Operationalization.md b/docs/tutorial/04-Operationalization.md similarity index 100% rename from docs/tutorial/03-Operationalization.md rename to docs/tutorial/04-Operationalization.md diff --git a/docs/tutorial/04-Patterns.md b/docs/tutorial/05-Patterns.md similarity index 100% rename from docs/tutorial/04-Patterns.md rename to docs/tutorial/05-Patterns.md From 641a74cfaa497aa7032275c46a2ebcd7def74761 Mon Sep 17 00:00:00 2001 From: Raouf Date: Wed, 7 Feb 2024 12:47:58 +0100 Subject: [PATCH 16/17] updating documentation infra --- README.md | 8 +++++--- docs/Azure_devops_how_to_setup.md | 6 ++++++ docs/github_workflows_how_to_setup.md | 6 ++++++ docs/images/architecture.png | Bin 0 -> 292752 bytes docs/tutorial/02-Infra deployment.md | 2 ++ 5 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 docs/images/architecture.png diff --git a/README.md b/README.md index 0e0326225..53f36d88b 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Additionally, there is a llmops_config.json file that refers to important infras # Documentation +- Full documentation on deploying an base architecture with/without network isolation can be found [here](./docs/tutorial/02-Infra%20deployment.md) - Full documentation on using this repo using Azure DevOps can be found [here](./docs/Azure_devops_how_to_setup.md) - Full documentation on using this repo using Github Workflows can be found [here](./docs/github_workflows_how_to_setup.md) - Documentation about adding a new flow is available [here](./docs/how_to_onboard_new_flows.md) @@ -83,9 +84,12 @@ The repo helps in deploying to **Kubernetes, Kubernetes ARC and AzureML Managed ![Deployment](./docs/images/endpoints.png) - ![A/B Deployments](./docs/images/abdeployments.png) +You will also find infrastructure as code to deploy the deploy resources with the choice to enable network isolation: + +![Architecture](./docs/images/architecture.png) + # Pipeline The pipeline execution consists of multiple stages and jobs in each stage: @@ -133,8 +137,6 @@ python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptfl 1. Write python scripts similar to the provided examples in local_execution folder. -1. - ## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a diff --git a/docs/Azure_devops_how_to_setup.md b/docs/Azure_devops_how_to_setup.md index 1279f6fa8..d410b4999 100644 --- a/docs/Azure_devops_how_to_setup.md +++ b/docs/Azure_devops_how_to_setup.md @@ -197,6 +197,8 @@ curl --request POST \ }" ``` +**Note:** If you have provisioned a managed VNET for your Azure ML workspace, this operation will not work for now. You need to use a serverless runtime for now. + 15. Get runtime creation status using REST API. Execute this step multiple times unless either you get output that shows createdOn with a valid date and time value or failure. In case of failure, troubleshoot the issue before moving forward. ```bash @@ -330,6 +332,8 @@ Update configuration so that we can create a pull request for any one of the exa ### Update llmops_config.json +**Note:** If you decide to use [the infrastructure deployed with the deployment script of this code base](../docs/tutorial/02-Infra%20deployment.md), this file is created and populated automatically. + Modify the configuration values in `llmops_config.json` file available for each example based on description. Update the `KEYVAULT_NAME`, `RESOURCE_GROUP_NAME` and Azure Machine Learning `WORKSPACE_NAME`. - `ENV_NAME`: This represents the environment type. (The template supports *pr* and *dev* environments.) @@ -344,6 +348,8 @@ The template uses 'pr' and 'dev' to refer to environment types. The template can ### Update config/deployment_config.json +**Note:** If you decide to use [the infrastructure deployed with the deployment script of this code base](../docs/tutorial/02-Infra%20deployment.md), this file is created and populated automatically. You can modify some of the default values if required. + Modify the configuration values in `deployment_config.json` file for each environment. These are required for deploying Prompt flows in Azure ML. Ensure the values for `ENDPOINT_NAME` and `CURRENT_DEPLOYMENT_NAME` are changed before pushing the changes to remote repository. - `ENV_NAME`: This indicates the environment name, referring to the "development" or "production" or any other environment where the prompt will be deployed and used in real-world scenarios. diff --git a/docs/github_workflows_how_to_setup.md b/docs/github_workflows_how_to_setup.md index 97aa7094b..b5cf2d465 100644 --- a/docs/github_workflows_how_to_setup.md +++ b/docs/github_workflows_how_to_setup.md @@ -181,6 +181,8 @@ curl --request POST \ }" ``` +**Note:** If you have provisioned a managed VNET for your Azure ML workspace, this operation will not work for now. You need to use a serverless runtime for now. + 15. Get runtime creation status using REST API. Execute this step multiple times unless either you get output that shows createdOn with a valid date and time value or failure. In case of failure, troubleshoot the issue before moving forward. ```bash @@ -278,6 +280,8 @@ Update code so that we can create a pull request. Update the `llmops_config.json ### Update llmops_config.json +**Note:** If you decide to use [the infrastructure deployed with the deployment script of this code base](../docs/tutorial/02-Infra%20deployment.md), this file is created and populated automatically. + Modify the configuration values in the `llmops_config.json` file available for each example based on description. - `ENV_NAME`: This represents the environment type. (The template supports *pr* and *dev* environments.) @@ -292,6 +296,8 @@ For the optional post production evaluation workflow, the above configuration wi ### Update deployment_config.json in config folder +**Note:** If you decide to use [the infrastructure deployed with the deployment script of this code base](../docs/tutorial/02-Infra%20deployment.md), this file is created and populated automatically. You can modify some of the default values if required. + Modify the configuration values in the `deployment_config.json` file for each environment. These are required for deploying Prompt flows in Azure ML. Ensure the values for `ENDPOINT_NAME` and `CURRENT_DEPLOYMENT_NAME` are changed before pushing the changes to remote repository. - `ENV_NAME`: This indicates the environment name, referring to the "development" or "production" or any other environment where the prompt will be deployed and used in real-world scenarios. diff --git a/docs/images/architecture.png b/docs/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0df2da1ede2acd149dcb6fc88e4f3d81264597 GIT binary patch literal 292752 zcmeFac~p~E*EUXTD}7opTD39;6=y|6M34}$je-<$0z{b=l_3Hmb3%yLN{}fyAtDfw zNkE9qV~Ca^f-*2t=Te|G(G6^~7?6dc^uRYyd zJ95ZE`FpkR6%-VdEf4HFrl7DCp`h^nvF{cGuUud4Xbk-CtAJw`zbF*8X^a5>_{QUB z>z@@Aim*ROPJIjf`#%>BoD5J<*sd-A@2k)(vtR`US(fF#pKU{3#s{9}uNS7$Q8ON@ z>Wlrd4XNMh#)b?%h}#>xd~L&y=&;?z^>}}IN#VkVNbp}@Yinp<^q1G3+*JVt^XETC%VD5DzoMYvaeDZx zzr6PPpc3>iFDay4`?9$YGI{r#crt{DTHaXq@$X{6D%lX-NhZ6k`F!CrYG0oo z9(=AV>&uskF|zd^KfKOTtsN~rEW<4bb+yOv&kNtybZ+5RHmM>K=9kGVQeC*#Un9Zu zZ>;k=zn~YFZlo)IvevzYW$vH(vdkBuebKc42koY__OO|R(rUDh zsbnUEZMtVW#I?6m3oYc_qz^cvxn1gwemal{Yc13}nhj+}CL2RrVrNJ)4n0lce7u%4 zo|45Vqlb;PUcp1yhGw!s8$6+WiikstCNLv<8Og*D0A6PHEVz@s&FxoaWg5-6JVBg( zPCP);%&U8!bw}CM^MIaj!c5ZxQO$Tt8bf&3S>GEQcO5fc83w0W1rf6Rf6o#>&K8A) zRiBGJdxjJ{n#8uavCfP98KA2kXq1)7RL(yGzn;_quOk=EJXi%9C5xGC(?i&ooJK-x zgkuN9k8n5beQ zkL={Fmg8pUgpO2~L%K3Xt?z?BFO;pdhiYimt57+{b%10Ku)}U?(rx(SczOi#Jp0)% zu@)84;=;o$dT6jD`TA8e z=_He<#!Y+M4pVYENC}q>)Bv*XeLryE#=3#XPki!v7--g2474$Rem9;z5k{AFQ*b8X zTA)W395WK`ENjw7A$=y?1}RP<+vuew3~+~2D`*GFC-c;d9u}6JJ2O~7obpD*g=u5J z@=L-=oc(YSBBq%$7et(S*DQ9XtqNetkCb5ksw?m+@MqxBw9&9o z2zUd|OalzM=|LhqY-N*7V4$1{zP)az7)&f17iFE!TwT-c7a^_ZiA2^OBzw(iomdS- z)X}TsqN9!c5{fed53J(w*{j&HShZNOI_LB^Ya#e8;HC8UOQl?wV86BUB{D!XD>jlh zf-yTpZg!YX^&nYvJ^RH##osghsazpDCqDm`ks82PX2|c7Og(1u1`N7J9@Dgp!p!sq z$V4^Rm+pP1l~$X&hbK;X#9;W$Q-aFipn|EfHgf7JN*WQr$^6^mv9pbE(pW9G``*Z< zy|pAEolxWb>OO(uKO;!0bg4ZTd+{KCrErrexl@c4s*_&O;ZE9x{Char4k#;$!Oy06 z#R#vb-drhMQ)6Ds9v3|{&Y9+Vju`sL9rQ@B$A1%mk>K0V7tk(9L%U7z%qB>%ORVA< zmL{SdN<;2WIkM9IdoI`gyETx)oV3faUOU!6h+9k#laqc4p5!?6@)f3|Cmp!mpm@Vu- zCo|9x0Bu~RjXQR^71`Fx#``xxBJ!q{8{pgH0&SVgX1R=S$Y)55?_thrv|vZb3J}GE zbzTP<2b`VOt2n?+mlkM$&+WK08ic$@%n7q%s=*!9kPqX@Qpphxr01fU#gebLDH|Mg zUtwhjTgI;CpF>D&`RY;h=1$~v%N>_P_*v5Rd0`7|p)WLBEkNeC2H$cSWh|ij<(e!ixU9HWW)8J3~sV5v5R(eZ6CNmrT6Pz*tz< zjHH!}P6C_R%?PrAr9;hk-#Y#GmnDsOM`N&#xHB6&kR;*(Tq%`VP3p+wLQ<`ePV=~FvX5ecxmJ7Ut(1n zJe<^wqw>U$vqD?P4IT*U%FeRn-=4=tsUf21hXlf-f_v(FcuOf*c0tZ~H71%{{Es%d z8JU3G0+A*aQ=*F9S$2RTfF9%b1Y1*sGDgy6FrB!s8{B>gZhO_aci-;p1Wm)0i@wsE zY)>oUsoAiJNMSBFaj}Yd{MXwCh~p^hMvvCEYvg;HX87reRw6g6C`Q1=Y9LP7u>Atl z8(ZR2?V-bU=Z4orGnwfUz{?fG%?Y3md+l!t?%#E}{T!@S z%zOXj>cHM7~(6c=BcuVobv#%Rwp;PoZkCRrcSd~*O zUwzIBmt7t`HC>JmA9-sBD)690AtJ$vi@!&-VG~X5k>`UC1`d~{3DYsda$i7+HuJ;A z9mS6KxRVTu#V0h?t%dmMC3hy-d)O0z#{e*f`B~TjWS!O$Z$LW z?zIuY;VUS4b@f?dWE&FVH|8fN`bT$jgB8#926E_W<}Op*_XS@(2K+ zv^3QYM?4cZTquX34oHnbS^ILe5rK z#2)Czh%204DqUxQ9zgHg{14X?6XZ6k!<-8^3aXY3vCOtj$h4+11&2h?zMj~Srgsaj>EbEJJpRm6$ufkUJ-SAMXf`yJ<3B~CIsg{5z$X=2(T zpBWv%!{mO}SC3$cVk1-%atrt&xvlS5@XT<#=*ci}dcF&qzm{;$mVg`Y8EzNjTH4|e zY>t>svnG=#VZly;!vtScrL5om8!KX;io?T5gF0COK8KQ@XG%#ISMtOy4%I|fU4@M! z`UgPtd7o3gnmq7uymVAo#%P9dsbO}Ur4fQ1p@8=VzwpBXR=*29er0kNgM#u0uU4+2 zatJU`7b}!iVEB^RmnT$Tv=q1q{|=W(@PjO|D*cooM9#B#4t8BE<3KGYyM&vUILR)l ztmx>b{|5Nj(a#xO;c3q`$ooj|)*hJ2H>S#KOF{Mauy3tEkL*EQ3zF%u3v{omGSn7S zXHTj?$sAn|ld($%=-!p9TiROVV+6Z+M+R<+X3i4tiMZp&R(80tc2sO0@@`om8rMjO zE0_KRENuHZ!XfD59ziIr44)pv;*1R=7t_$fNgLRbiTZa|_+^wdEp^uM`lU8qS0*_L zXmb5wkxe8kq~@KQ{4{d<2_bCLp~k5 zdeUByY&YTeC}%W4vl`pcDI6&O_f4&ISMExB(%p+0G@E`+;8o^^&V*J<+Mm?h3hs*~ zgVU8RN=HiB+Kaztq|2tthFYSEL-mL^X6@xk54<9@UKCw(0U!lhHw zZo=;3%U8!M(~6fxpWnCIr3C70tykLa65u^C(_FahiW;@Z(E)*{ayn>{U<47ko--^h z0Ga^xArPms#Et}vPNTTlMf>^RV=>Ki<{fF|;UB$uienWfrQj=zsbSQpCwj2&0fXnf z;`hp_{mX!oVr~YoAZGE3;(!MPW#~TYSh-Hz>1}qXLg28QTp%?~wQ~y=gwbbNSkvcp zA$XO{UY3ukMMeiO)u?3|X^QlmY)nfDW*~prWtH=uSg0-e8Egfp#e-GRxO!i(^p)Nf zH7KapgS8*2fta-jO4=$R1R^}r#d6S3TBSvNw z`#C$1u{(K6KQ`$3pJy+6$9XL33}UX~nn?upW|~@{KPpJIvdIB;O3EqW*jXzUExl?TgEC1`_B`cDWD z98`ho!KlOteGcIq>tG|CFEL+ICNOOXx#R3H<{1gt$tU*t!v|iRSsr=>3Vs*A=295P zgZp!2Ss6t#d`0+^)&nfXfs61j7)Ozo*7sugeGExuo1~fmTjj&K+Y8_CZ&vQ2A3f%~ z$IP^^n-a&3Csa7bP}0<LY5~~~Q;y#0layGus()}}tHTy_x$g);1|mAg+R>~O}?vJqIxpC98sm2VG@+SG?>$AJ3jfP(khhYUn6A#End`?X^${{uCKCIGT0G1<_f- zj?jf3x)Inr2c6;<3nW>|4QPd#me=1qxpZAL$4s{C{n8mRUh0ELSvOKT2bqGq3&5@N z1b|sS(74mt9l?|8;!MtiQQQf()68hb;g`(rz-YKRS~x&N=N+Z^#wfn;qf9@Y!DW*Q zM?B1`YNrJQY-p7sS5cZ{Dyz~pnX0jg*bS`#w$;f6oC6?)Pc8b=SHK&`(7?6&6liKh zUA{bCX^_fDc13d44GZ_^My@XoDF4Y_i8{8=(RFK^nDN~85WdQ`|GA3dv%=g}a$)nr z=Y-emvEVG+6o5Bg0j=Mbj>w~t;9hu}Si-7H0NM+(fZ7r6Ed?i$j^2);bixZp`a+0z zTwHaJM}o^&$+kDn=!dWM+BfGNP@lAjFP6)G29Q;085F4Zn~9sxB51t~V=6zVJ3P@9 z#T&V~EPC9S!{Xd!AZ+COkI`OE4;Mp5#)cc4+w04F#Xrdk&yXyS`TgUUuL>Go1Lpb4 z_CWl6CW73ZPD#mx*$ta&hDEKxXc1)3c`3O@6{vyD?jX5?EPq>PsRmT^{$8*X`!x|F z>f!Bvl7JP9{zI)IG){5H8sSYyoa`jqBkV1sOr5nKZlT7|Kj*%T!=iE!QvDN;b%fTP z!~dX6UT~JmS))b+=2N!Hp(Gi#2+y6Uq1X5mW5{G2DnzWhZR3f9c?B9GYRFSGxXL(dV9KX1%5dt&1IvDzH}QT z*oQbh{Bk2DhCU(*cr+E)Xpk+`VzsjSwyweth{A3B4+ZO3djI3@8yEF(6(2GO$K_VR zOy(R3k%T!Rr7X@RG!kgpdo7X}zpNjg;Dbfm|C_jxAh;d@Bs+gu)1DC&hW}iuLyk| z9wC*ikr{wE78AoydOLp43%wK(G4K#^q)rXtX|X9WdN4*%eG*=%YRx{oPusO-CXKa7 z3FE+3_afdK2{K0;PK+I7=V~gQ^fq16@iG~H*bd)OCo_nX#98+Ki#4H!*LZ8~a1|pa zU;@Bq-{Pd(3k_s7S#XbxF9~v?e)XUybcf}?g*j2;p1AJpD?l3=o!x@SQ0H=ue)&6D= z1mdJTsb+IL)V3c#?r`JPx!Hk`zX7NiOfw7gt1dK?*0-l{4_X1b7&L@l1xg~5p|3it zI5ZZT$UE7K8Ou;XKZ_qYhMX8Bl(I84e~7}c`-Cf5XEMIFf~}k=vdU24xG<+PB6ZD) z!D1*5KAf%t33(n;@;0cKyo}$E5kXtYdjj!&PccTOknIr}oIMY;`eh?=0jE!#o~{X_ z2CdsX+X(S@c3F-|$2>$WtqVDFA9bk~g`cQrTj8>xyIbP>9Ab~Wz&jJ}0NTdPW`K2| zO0s;cDQeWTX%U}V$y4H4llV_~NNz@wM(+oO|6pLC}NIT6dQm&0C@lG4UWarfy0Q;;Ydob}nV>N}(^} z?|EZgxibfjCH@n(7HEQoQAd!u0Z#g0Ntz6$wCjb;)Z0S6H$rgpxjG3w(duUsbWnU@ zrqjakvF+V<3hVy6@YFnQCN0$<8;x>{#No(_O z9Ul~_98b~;@Km^ux(}@xO2&x#+%3#vX|yY&({AmSUb2~(v9qN8B%0yBKv)?l{)2AcjoT?1o^hoaZCI?( z>z*Ak)6DkM5YM`XilH@9LC+?LFMI+j8tS84Vj+Tbks!d9MVd*~S|yWQ5t~_KH3x<% zlQS<)!Xva<)4t|Qpth{Sss5AjHbdTOufTs4L8u!-s=)8Xl$8KdI1gZgqQYs(8ptHz z{6mkhF<(AIdd+<9sknwd`e#d@7##d-4J z74(5*WciTc#X|Ow1`MRPYp2=vrelmA8bdTSl~e2YZ$__}%>o_Kg`OV(jQ*rDv=oH1 z2mM}gWhqtfsJLA$SC+V9W_hDnzFTOH;+fJ$dIh~c3UC}^D89;rBr)%y;jRkd<$AG!Gzb7UIs1wMMHGH{dW?}wtl}o;eUMD6r5?!mi0o^RQeof`} zvv_Am$f0F&W&0qAvc{xe`p3xV$sZ1xFaP z>e7uWd|F|WqmW%oK|~M0*%s;(ePiv;%#fJwrC;Xyxv4wAL*gE@}{dkU*|@s_q?;~0Z75jS|pscCMWAYBN< zWuZhU)1CeYxo~s2*m#x0Js3tGGVleAKT-AoMjv?CT^kHpQaq%OpNi8E4>SmA0a8FV z5ox3SG^TmrIO=95P;v+2nNHJB3eSsF5DA%5fco`1nCyU}FHN^6{Ct>IIh0;>$@`I; z)B~!mG*Lf}F||^%c!6c_VI7&MpXtDxO`#Cy0|BdX4WD{$*k&e}!7+sGj%+wq!~Dc_ zIN(O{PPM^INkBNTI&S98`zC)*O>?|@N70`(cD(0`BB*ft_U*nB#jC=}ff}jfk}!#g zb5m?EP!9>2bRx_M`s}e_Xtn9rA7Ufvi}`qkad~74t$XoD@)I?ZbWWW|Pv$MyDJ*X&D7MGm`Yc|V70*sCQdPy6;#PU^?D(@IABMb>0&O#DoNttL0@Q-Ad&zE!s9k1!eUuq+Vu zjn#HtzwN?9jXfXdhfC)}o(YW%rJTxh(G+>wzl7P4IloF;Wc>7u$^ z5myleHrX?oFfMu44#SB;bZgKY_WBPpUpPbo;Qtz6BEV+I?J)6^=~~+0Re>4-x4zKK zOgCDQi=>6{NOPNKhWdmspaeciH>R z8V7`*BhX4)BM(KO!y|a_kwk4)#SU^-aJwLJSraT`a!WCCAo{B^zv|`0l zCiyU`H4Rf+f~n6*1n1!>raT&C$Kze!EWPrzf2v4{EBEX9e)Jid4f7it0;ru-R?N*| zxHQ47NhD+(=XXJ6s1|pu?OyyfvI=hfWDxRTEjHNX)JQTRb+oKR@2Zi9)bSc}CB0sf zBnV23(4Gi+DK$3_H#{mf1{!%QABD=`ZLKs{@t$4=n_+qghaO1-rZ>`v=KaDcc!RJs z_{=Yz6ASFyL~)W%L^I7Anxhq`sW~dsQEWpo4T*gB`YFH57wEWEg7W4E+@Gk;M_E6C z&UnZM>f}cz`?rQB5TF~jBEN%zx0B;ry|obRu+^w7;7&iSLv#nFy=U;(yG-9`ff_2@ zzrjQ!SFp`$B5tKF#~IY+Jk;EgG&(~|Y$=3{mQiRqMy74|WYkW-%o*R)58Zen%ggY~ zh3f(0Jku&nso|+2>h7hX@x4O3pkdm9V+)ac+MQjt;o4OJ%15j2qP~V@sWq#hJ{7h zp$8%+jDF!KpxNSK)gPmfNvV!2DH1v3!=H0eK;4`b=tkSJl-qu-3Mvxq1kxQ{>IRP%6W`;WLS)#-EQ(VG{QV>+LcI8ncVQD2Ed+l|F+A^#S1FFG1t4!Vw?BKDf0jZA2iWW}fG3$h$T z7dii%JiK1nLB3J$a2;{w8L*?jjZwKC|Iz@S)SkNEfIGdrKo7(O=n#P zea|)W`7HTxggiz`D*|93N0x5goeBvlB%cN`#4mu63XZt4wl;j{i=~Y+4Rm5EeE1YF zPx1i_9-aD-VHznfJ@@*Qi^*ytzkd_hjVukf;qYNK1njn4Vyc6?%1zdwQ7XkxK}~9T;w;+n#xgM#R&REk8TUf7?LWHcnTWMj5AC#&i;|r1dUe| zu!M%uW--JVame?2Z`$jIY{Mh314Cj6V#!ka(SAxLg{sgTNIYG6CQcxZL(nO`^kZ9H zHr8P(=`UGP=n96uX}IX!^rnT&bN`qgOqQn~J1@>N=|RJ5uf%(2 zBx?j^jj(rjfq9UG&`?u|-^k^uago<|_p4n>*G_EjHBy-I9FgH_(>EiDb&A|^^(z$t){Z%iah5iSeHX`FZ z)uvQ{DX!u6c33T0)K9H~0`2A{+y}6DRo4^x5kKOHYFBrBEJE!CQn9mX&l|hW0wT$L zyWlPLk3siJfjb-1E-VC_geHKO^PjbiO@wJ89v15BmIS>ywFNva8!sUj;>!m*LyWbi zRMsO?J-vocdBvW##x#L}xd2%C66hnx)$oe9$UMDeaqp;h**1U(=( zKHeMbw4(l7j0V>Y$xny~J|Fn(VLB$wK`(6?Oqp5)Xysv=W2|}uG>!}~*0|70v%>4n z5C=8ao-N4KhlqkKq=DZ^z>65MLv#GB=#7JiGkhBSK0K1-(v04R#O7zz)fSZM>f+*} z#qrSFm!OH9wJC4C70W=4_KgO`aEq>leZYPW)Vc)IIu~)NoRj`>Ua!`gfA7$>>1Ts; z%Y+4L5ToGOQ(pT9R}@pO<&lec_o9d~Nc~kZrvdt=2;%K=(QtweF>92bu_*$=L1K|V z)~~R_d3cYMeGpM4;UnZ*+7P90gom3n0rpXd@tnc>fnEHEjjhu5^F(o00RzBRvzO2+%MzWVJ*oWCt|DWMpCDD@YC z@zLGDBv1ZuJIh5aDvI;_LAkgA1Co!D*(zt-(q*5yJ%D|DQj0Ju0mk*boz_JDP|VB- zRYB#Co|<~7X_fRGkiIIE*Dk(~;#YH67+|hgEy`$J&AGtwpsiH+erh|+V9P~TTk4p$ zx0UuX|A7x{cXpomwU*t|*>mN;_2#cDKY#w5_mm^z{u--rh6S7ovn|d-Lv8P~wrfjN z_wXK{Td}4P=d7)6>}kgWYuC60<_%sNFMBY~C9yX{1kxEX#bO%(P%elFKDF3A1J*4~ zjGuDqI?#|?r~BbPT;zevY@+tBYmcULNmwmcEl%m^DPYLD_E!V9c72WOsjD=1UK}2j zBeR7@VyYJZ;iQey+4HxZb*lqdZTw~KXYnh~!a!92qwJZ&I_4(8i?>P_{TD)0#uKpb~mZ zTa5hh?OfB1)G1Q=5Z{r?&pxyUu#Fj|E^$1 z5uOr2T8F{LuA^gmD`6g` z7Y>Arm`77On&SV#V#5r^T9l`x=k$|w3zL+zR4sPCeQ-qJv$RNX{85x5AXsc6R&672 z9s-86WbN-|lxM(E7C0ZbQrq{fUUKnJd+-`AgcmT@*=V46SdCTb@Id1SW03-V_CNb%lgj6l)R;w%OP&(6LZV|P$ zBLuqMZ`V_`&H}@|a%}{ZGL3xpzv&>L5A%gLecpu)oTX^N6VXG)&oeCqq_8vKwB%I5 zxN%21W(Zf2jxnI9jBuEw5%JyVHBoZcSxm-huHx6_c)vKqQ>d4t>;GVp#d?1vK(~P# z7cmL)kZHu=LFhA6E)YfWM4P0(^5yC=AUyV&9UE$DzaC;LpIjwO4*z`BfT8cf-W<(| z%j$?f7;Dk6`sWS6q;CzTix8cj0Pae%VQXHS(|xya{~z^{MIj5^<*sFlt^toobGu9ai!71pe)%U7{eIXhx{ zs8NjM4R`QW(Ld1xluncich~50iMTtOHG%lky!+Fw4Pjk=;a*3WPQKS6$KKe>N%Vv5y1!jx)x0XG;V}r!+9NU@(p@8U6Pxn zI0Ve4pU-q_1|m{`AOM+^CPEBQZz6`UX>rWHqn8R8#$85#bQg$wS&&0o0<7PN;@I9)Vff#&`UlBb?ZS zK>##V&VJs#!p*a`)qkUv%N^7ljm%>gouR}s(s>tJ(lL*B?e6#q^cLd*JOd$K(=G}l zJv<0l;XU*3vKjrA<{KcU#(^MgmHkWMz?cRxt2tS0GE-B^pCFKsZDr zAP>{TxsB}g<{-r4pBPC-f_At1BH?49i#6M0EF@r*-r1i{iT)Wog=&qoGnYV=K3Jpl zZ$z%d7!-zHkn~*s?VyPSOi45Q2JOpP9d2S`78Dj%B|6C@6owIBdT8j-+{LsU1{wDj z8b@iP^>qt_#-XuXcc*le8OIqb@jW!-nEc!YKH@;4!9F0XK<@hFW%<7#>xZ`$=F6Uc z@sA(hU#N=zSt~!jzfgn)zTgu^^YQ(KTK%8#_T&2s^NB;?`#;gc`G?=l*U*9Q&#aqg z*B|p@3JZ-2z!xk)+(){sFyEK(MF4;HtsigTiw1nG{Qs{o0U3#g!!+CVgwzq0f^Xb? zVO{G6X?}BPXTVL!-6~?0zM=5$8}E9@o#*uQ%Pq&(1&=3%GK$=vEOtMxUi6>u^j80L z8FAC$ht-!A;EHQXdB+Isg2eXidw;0ekzdZnAI>-adHBE<%K_(s99KLm%&h!XP+P7| zoG2rA`r+d_twhF|3H|ENB|%*Xqy^wUrRs?BJq->wUB z=r)7z$^V!B`t5RE^rJjZem7@k$4<@VCyId@MeMuCd;d4r0`|<_hreEn{pxR4{OCO| z*|-f~j`;kp{x^OGqjaJs*k_ztvQf76ga2~_p5uC7-u1U-?omfKY){OpZ{~R*_E|I^ z*YD-1{O|wR8P1iN6rl6qbC3;NJYVKg*aSRr>HopcTw*jc6vcah*yXcUrZk__RcO5V z_qKug^mFciYaajOkM&ds!E2|6?oGLVYoxCBh)FoY(LoN1a)CHcoG%Ir5=X zhl<^R<7qM+|5od^&*zV^V3s?2F<|2~>W_vx&l)MtDaIHxf*nZq#KY ze;dacQEkPTgF7QN;~lm)-8N`o{R(FmMV3wJpTm6K_CH?6>lLx(>6n(hc+t(fIve%g zzaz)xdqxMec|b z2EU^i`1#B~=Bgi-SLf24E$1S^JKZLF%Zfb6X%hSgyt|aX%K?x}DF3afPZ91O9_AjK zx*MQz1nZQJA8qV|8|oG*a_v>Af3qu9w~v`Lg=i0;p8p6X%`(b=u%RijJ1c&7%0Z?_ zX%oFIH{RX_rGvhGU0!rvIs34{b(UMU0jL55dAs#_317|UA?}BoKX0$Mfs#oc9%YR^ zH=IU2>n#lkd!)6z+@2!w)mah$sx43B{u@HaCZ=Pka0iCIzGCQb`Xjxz)bh2v+2KXP z?<2vHTY<$FYtQcBZy{d(1>gGIW0sWkDh3ayKiFJn``*^1M%-u=+TLD&0T64a+lQ|E z@8=RUw_25;XMp(OgK#&cb?oFFA-=sTx;dh}$e6do*W59jaM7+-)M+)9A3K`||BQeC z6j5$Af&@9#GVxW>=%Zd0S6YH`?}eS#56{Qow)w^Z9c1^2Ezjh=p`WqQXTUXn*vOM3 zNu`fBZ)o$3FIr#qYA|wno={_X%c%QFcl&X(3#-vr{|7g7DgDSmnVzZr@#XGTqn#x6 z?+Z6HwR*<*wK^@=t&@05$Nx_6KXIE1uv2V^AE^ubs^RzO>|313Sn}T53Q+x*EE$aeZk|=#Je`jnK>1iSfdr~cLTbcg0L(GzoM8g1^v6Xiaa*fo$4=* zO-?#O1-n~~*^o5iho#9X_T5XDdxSJ%!MWEob&1Jlj=}OA&F2j1$$SZT$E_tACMwR3 zAq`gp^4)(qiHc37sk!I8jn@bn#;;qo{9H(5gIAaT^Umy^sf)YmEcqnGKi}37lamrR z^qM7Lqoula)f>TuuIlKMMLU}kUo~po-ra=O@rg3qlFQyYB}4c3Ro>_oN&81nPzmc@ z&|7QRQ}WXB)ejk-zf;RMD5VT44JCFTo4mthKw6kqAtpb1(93q1hLCTfQlV#0NhZi! znB{l5?m{>*3MCe@uq_+@Rj!v9suM8KH3GX%{pQBQ@mujzmQMby2Aq1h-{{zTnyV{h zq&f)-KR!;c(3K63%fanmb_#}pma*%^zWpX)7o7t5cK&=jduf2Ziz>xBc}2;&)@UF% zKctoF{CV)lD1F|Wrl(_?Z*C-Y*}H1mI|p^0vfjzt!2lq0m&!ljE-=uNj`Jc{gEcS)WS`)Q|m~{vYk@>54GW%)FkjESYZ7yq-^A z2KUCrG;S>y*f|Ts>Fl6V_ODR$8=0pU;QNC$t8i%4kkv!wrdsIG5O;~d;0I<%p|i=j z*wD;bLnfHs$QUnf@eV_XBPS%v7{CvY-KbYd+d>u8b3UpcQ->(DXmY<4kaelnOne(o*RnN=8BLyAg zJepA7EJ$@so{rSI!HFt`Tiy703qYvz5lGEzD}1Dfk7X|@!k&%E0)_M#-ZHLJROy*J?i;f-^PHsYp?i$HP zt6%9wrf*VB6phSi9tEy%G~m{{5!*Qj{E7FD1#%;s06PM@$mTt?@$DOzF)bv+Cd!7c zoOs<88712bu8mniGIGN#MgtNvZ{`+-Ic{^HuEd&9e+o$R#D)=M;-2?{hb=zQeCL{D z*rS34mZ17Lc%rwb#N)8^<1a4B0J=(|fycgodI^WJ2aVpnleQ5aZJ10Ncqw#xISF8r zSL5hprI-_08R+6J>3URcL=3l1v3FSMIyytg+uD+Z;PX-F(9$(vR5hg90cQ=x6yF5g z@QrnHLb%{;o_Kl;Up~E)=Qf-^PlPg;7nJ#UIE5p}meqe>U*<>eU(ppr&Y{Ju(<~?- zYSr`chf93U28H`N*d0uwtyq38xT#XLK(FvY6&p>mFK=vU={716j=2^*iW>vxVtc3K za#=RJKRNb14N;j;f*v^-2?l!B43tgdHs zbokG{-mO%hw^#4a#&#^d)w#IJZ^s&+1E(@~RXu=-FW8D3QyXi8Yb$vRsQPf@7Mc7{Csu`R*yUeR%v{10QL869#t{Rn0R9jp56+N zBHyBrP(O^?;IppJwQqk;M_PdJ>+r2~3~U|>HS;ZB8rxugEN*X(h3+z7N69VJ_2#bP zvGM+u6movtwGv~1dK`M_6uZ?g7H{9Z&t^bBm-6zNynA=ffEVbO{7MuW&kheRoi|yF zu{1?W){=E+a;+xM$D~aTU{`%e1zKFIsYL~(kzg; zSYX2LJ}{21A%C3stmofcP-V4SOYeL_mmGyn9$&C=a_yxW(h>wo%SZ5dzbN(RH4M(i zihUO1!dDdg&Ubk^NPCmw2U|DvR~R=XcIAK!Q#^r%ZTH(a@sIeJ+`MQV_W}?i0MbA@ z_LI=v96;_PKwTZE<$tgRo;0zb7tC^Yxo3R({_?T@=ia9;?hgS(eE?OkUKv|m6HFpJ zuV%iWrjBGNZ?v)8zQJ}^lWd#ovH_jGWBB~*a|7r9eVboJ1GIh3yc?!D1`TlirCmX} z8Q&UDDVZLquZfS>)bn!LzTw45b@!YujXk{=j=eqY1}=>GPl@7%;q*5+ z47k@3VB>QSH~DjvF{|Ag_0k#6A7g$N8X*y<+;%U}a<@o>!`bgnvyO0W6=bMRWin$+<1>sP_a08MY;+M zq@IReQ|Nd^%QbaiDGS=8iiYNFKWAS?x{MOP$EqOacXtDT7t*(e2HEjHdR{OV7AGg| z_Ct*dVV&*WF9}=0Cp%P^PvWDC&MJ@8D{pkL+}@T#)37J!TM@F&fza^tf{)%Drd5A| z_eYE_sgbJ=gi^`wP5{H*I#KXQNV(nWFD@SH33=@%y`JOy5Cay}3VxN~G3reHmq@lw z6}~gF4k_v9HC3Yb2Wa#dKF;{@>OAMWWjiHmdZqWZa)eoO=TDjwHOGj$HzEt2W`;!E z_Xc`(#X6|U!F^kEW5|i!O)2ZG|H;bt>M4`bF{!$BD^`*HV)dV^pFZz3aLP}l<=Ua) zahtMFIOM^6{q(XbQe`w9vqxE-QF0rI{-sk_l&WB`pWc@F_bo5r#2C_Fm?4Jewd_~( z#cjmu?Loi0trJY#yZ3-M=)t%F>0>;yf*;e;@1LG5Xl(*#uBA|`w)%!w?ruu~B8i;0 z(kYgP+-#ce7&IAfJ-#3Q&-euF9Ox#A>r2D3p`9wYJkL?FqXstoCE7XVS?onh7X7Y(;ZzH0c-L1e@G?f6WEo7}96ZPIG)s`jNQ&kT zuJ>%UK->BQdk6*<kUq+2 z|80#l13cknAvBx6zC2+WDF?P^3MH ztTi=tc2H+-Nj~g5o?g1W$$nSk`jY$y857i3W1es31}Ejok9qbiX9)FYhtoZ{B^*PL zL4&9`G6QSUFUR!Y2E%j58w*#twrPcpMk0pO^H8Yp>`Wk^A)vu~Q5$Y|lX8H3S>%3e zKwlzPI_f1JV2%GDm`5V#-M=ha5bHICiu+0w% zq)W@lfN$QV5ee@0p@Qk5_W@-yZ0fm@5x#V_Y8a3jAm6cTOfIx8Ld&F*j#@e)Eq z*ma?q+1jSg#{&9`F#0)$jaRX+NL=08TV{yY^FcyJ#hF*Dea^TU30l?F!lf1CkRp&*RcCLUl}%C7f9AAJLh{FHl$*^NK+wgShFgRuyDlaOFd4V zf&b8}E>0El4hbieO4q-&a_1xmbqx64Uq3c)?elRLPy|_FQxpkSqxi(*+w!h)-YS#8 zVM!f7;dJw(Zx7rPM=o0o1K$6!`9h<_$v(V%+bU+uy-rt5=8fv4BONQ~=t|SzS|cNO zAmo|LvUd*qbe6VhH+>uF$Z~aFbsOtvlK%9{+5B>n(07i0d<-W2x4gd=ctDbr_FjyUMT}qHiU1ds4V-xHuch1Uz~S+&4+1 zB%5pvJw#o|%gsl2vsa|YYi}>vQ|EAUIkROH3weLRcfa)`hnh0KrKcXR2pC>dgcs7l zxf9XkTis27P4Xz(n^lpU{Gwxq3>ymXxV8e<_mQ<`cJ$rBw`9ftpoFOl-M<}(sFnka zzy^nO0Ad`{ZDF~Ve_dZl*IiTgdNL0;AXLk;_dxwyaw;tmi-dXX0^+^^YvdmX{xoNmtw zx&J2Hdp5(3f+nXcUuQSHf-BoLzuw==U$5-UuL=UPKorSKvSVT0XbX%lovt1$jA>Ej z9>d!Fd+_SD2_x6PXnfnFYyM|Rsvp%ar)D>)=8DPt1eGN~(g`ING-{Wna;U}q{v_~* zT~ zD6Fl30;W~PcJiWZDt!}1H_hJ&1d!6Gu@rCDs_gCZNY2H+vz;eR#{grFu^&2-{+oTT zczHw_`f8&#s02WOYG$knP$kKxG>xYD6ot@VV@=jYK5vJuRYfMbQdZ)&PoN4~)L**h zWY!g7nkrwXJMqqk?MCx*=jpq-M;6E|pyB@BqUkmr>!Q%c?pLg^(k)ta6?wQaI&~=f z%(l~jeVuq5KDHUVW!oHX3zc_eI**-6t~nDhTDDHvIuiV$vGBin{N>YX(dn2hARRlU z9{?0`q&?c8+dlrmCxaf1(ln65C9Th3r;U`M>!zE)-VmnEdINcEIX!m!mDnL(*DoGV zZf@+=>El}901Z9@|jV5jhO25c6Poqqizm+{>G?J>Na=PEia8OT1tfE>ezhPBxW#(d&+N3YzF7bAyH`E#d5Z2gOR zg^vb--Re6q9~I|?RtE&sLVniRqK@jkM~bf28hws=4Y_8&aqqb&Dx&998(;Rs^?RD z;|Su&;5TdZGysn$7EEAor`}`Kp4r3AIc9guON;)>mAAmAT_ta9?Us>ek z{`HlUJ1<;teA_Fh9n&eD-rlqh!(aWovo;#W??`Y4Rdp(W>|Fj;E?5I3mi%kuVl{+(0_({7*lf81Cm;rR6 zatU;uoMynQcQ;n8B;f7#16q-EOA9IL9d~*(Pzy!#u6?4$^qPY8K?mI)PYYVDkJ3+w z_WrVSvA_6HTAhDXDVIPzvtzKPVs}o&#LRkk<(t_-O>%^dASB#?Ti>gw^NU(LF}2De z;CWk;v?ubnH1V70$yWgf)FevKhw}W~U#m)U*^FH(TH~($wWd;1Y(K{We6F-<&&sZ% zVx(1vIrv8m2wGdg00Czhr)%X`8?s2?CzA zzft##$w!B~I|WUZ`FE|HiZI!{!8ri_A}@TCpw6*29n)|b2yugiiK1WjTgPrSYwLl9 zxl6*%2JL#(mtt1EW5H2xRb6kye&72_@AA{Ugmet%j&D2=_a26t7Dz8+q|C#C!-E7q z)^r`qgi09#G6@U|n_kA{tM?w{2MCu@0CN^sqmGkL;Vs_Rc7nHhz0>F22e9(p3@(ZE?6;@mM%Q zY&lX{i5SH-@P+8j=b+&p((8>~hJyC8&20t4DCMmVovw5_nr0gji-&%10`h`$)z!=n zo1NfyggytUmyz2hNOyaEv0Wciu5;i!$9HBwelSYaZVT7~1F>~fy$+af1UObiX9lR* zznKG&sVu*JYbT7amWT5NNlqP_a*qHY#GPps%PT;->u=#|^$#uGflbugaU?CkiS-)V zKK7m{?{R!{9Ro#1EVI+p&v-DMQW-p`>OZlZ*x84nz0_?CdX8Sd!HlEM**ihsH&*?Y zGYL`TTC5^nULB%ia5hDD-rR0iq3-!{`R^y20|?FAWcpH; z%khAQ)lZKE0Vxik-jItuyj3;#fH|nM?dGl{z%hMRn`_mD+ifq@orqn(wIa)fx$oDs z!@X=Pwf=vyDsAVT?=Q4HN@QY9Y|9(>yzN54zC{XGhP+A7MjqG==u)p;E9Y(nwaoO4YHmpbaZWj5NhT;;9D1+u6*nT$LA!57;<4F452^U+pF;ONHA~^rx_0Lt1$ztY<^}cGG0y~0oQI3 z4)u~B>Y}xCzcB%F+!lHdp=?<*URhv^#Eq@TFt;$PiuAqD|1A3mA^`UPph0|*p{&%8dHZIy^m#!I-_SG%Y73utA2-RO z&E?xz%@1s*@7R$l=@sWjMjdyJ@KVn?il%dqnW$zo*`WXpI9;$UtMvbQU`<>!>Z##B z@@2)QALnL1vvszgAeboa?Pn#_81(HDU2lv@zOQHXS*85Ajc(hOw`A^L zz7u&40iX|*Oq*AQq@}>xTnpNZ*^UrL{|)}v3uRAG86`||f{ZS8Y;OVugRIi#y#+9h z*|7${BO7jyEg6t2$rXE=%l{A^D)z9^-{}!FN1{ZvXxF{Cxna(FFL~D8fL(C;EL||s zG{K}G&jjj-Jq2Ou?xtk)`x&}-itekZAAWNBUy1>KtKD&VeZf85%zh!tE)sMRjU~J& zgUVI@-4osmLx71buUCul+Bzd269W9!|J-1QG+`CgVxkORgA^g%dynzomzMunhgBYS z(}UJf=3RWqXP6OKxlp5JcdnmQA**iO!kb zgVG3VitK0JmIdP_-5y&iFTAo>lWF1}f7u#TPG|MXKak zD1J4r@*ahm%x~h(GFb3YlnN^Ld)O{DYP$L_+tg;=i!?R2-+X*NouBH;(2)pbw{R!AW4-+_)^UM@CArBVcD(?dDQp2ojp|5PDVdYa7 zmw{r@>g}ndoXTZj3-7O3qUEo+&6D~y&P8>cC zW#Wx*;vW*8>kG>m(JG7vwZU(<`Fqs=`m50Nvk5lCZK=*yrY5zVFpQj>(oFaZ46ek?2s#yXE+?q6tVN0l=>7Y&)^*eK_ zSulT1mMc-}bAq*Zs#>62WpC#b1I*1Gd3J?Dki$U&hUk98F8@sq{XVqr%T{y&3=bUZ zYQl&F;jF*+KG$=o1RZxB;8s3IU`8@Sh!J5DH=v+Uk$SuoJ>&xP&cJ|>DxPm2xONq~ z2TXEF%Ve09c1wDaQ(HZVG(N1YKS3_-+z=(D+?jC9qfTk|u_?>Yzb`9bs&*JTmG3<3 z?LqeCZ=ygqWE@3O)Xfv0w>P+LELmSx;6$+Pc#f79N=~;pm6gU6h8Fe1i+}icnvy(w zApD`<(~PyAARb=)!2na?+f`46z;P(hV@^TSFK#%)jgZL&UcinLMyh6lRyXcoZ{n;3 zkTMT0djj^VdFg~jhptj^(4Gi%yPcho%pfsJ{$tUd-$75jS|=ZHWHvAT60t*fQB2Gs zdd?o-^%t?=?_UHrKD3A~sOugZcD6rfJbCC>jFl}ac~2gB%b*>Wqap9F=lQL(Z4od3igtk9sdHFQ|iKAMM_eDc$Qm_}_kvVqJ2dOF3M zc8l`7&YMy~W2=;(MiKXJ!H!?>o}rbpximqmsH^l!Fma&#=N+;6jtR>)5{TsF6M*LR zT(EvdC9vV7k+nM=cW~1iW@!Vj)Oj}BZ+^yi-gJ{>L5mz2d^$quJk!IJwa%bcWcZsrS`MBt!v-Ssq#Bt zs+T-0v)$7NffDoSVKbRTQ&bxnbGH5n6&hO07L_RK)hV62OOhijtxH9kgtMmjM+oFB z4!EqQF z**KUdGOi~=3n~a0f$loy%=xvdw&mc~H%^-CQ8AJ$ndrD75Z=AapNH;z6H!!{jUU(y z--`keT4F%{^R`(B`LNCo_iz;21_dHEVQ}oc1x9K&?)Dcj`uA()q^A1+CiX{xUogMf zLG#iDv&3_~@<0zTz3@?*Dg16`{HZPT$+O4MXKx|`g?IXeKUWP%CPAtOv!zi{yng99 z(Da2RLhI)=gmN>LVJhIKqljn4q??$9Ujoesewlo3(9)oCxE@d&^ag zaUzMN63kp0Qs*?_QLiujOL3DQ$yi@-XXCmwbm+UMysNX|3H@CBfjq5I_5Q6eos$It zr&CfTUHNKJ&(EGMpqMFTQ@$9HKn`gd!^x|s<#QU)5WVR*R@Qy^G|A@1fH!xD+(b>U zAI59s%-<%Otv9E~>DD>D&W+HwD9%(Wc=0an=PyV#S$pBmlPShmWB05OV5FA0eN_wu z(6dWrPizJ^Z;;&j3gr;EWidHS!TM2`F73|2HjTd>pG5oa-&y#S;4{s{1csyaGn%h$~dLg-HSK4hzCU1fidl{9{*HC=NTdUao>^JL-!JeaDa0XbPrHt?)Ss0 z7do}`V|_SnM_iX4Cc&oa)VyF~7C9v>JJImZm(T4Z3$BFY&7Gv0yj#+e#@5~f@au#X zV=LI=^wtgPW}60GVEUL_Ak|#;{IGZbyPZUyek&AQrMxM!g+R zSIa1vh+Gl!Mp{l9PL*`iq8drs`HIw(P=y>Cby<{W4@$PhHL*#^_hZ z?&ipIV-h3W)weEdRl2rAJNVHqKY3*xTJV-#(MK+&c{aT|Qr5vaTs>Ouske+V};B?tH)U0MHINgJ7sPsfMY{ zS**fJN*eYi1*k~`zOT(6X-^RyL3kF-8dL})NWJK7ZN3|?x6F);M;_MR-{DN|>}@?i z4N?fpZz`&az_d)JD4b0)x`LI|wN93{cs?jCw`$sug&XL7G(v&V^TBWDfUpaEb^nVSlhcvew z1R`lZuY?`D%NF}@X6Qf2S}>7)m8_Z*HIZY${#CqgN$VR^_pw?6JDjxn?)nSkLm{2m z0H?bonUf=NH}}(82X02_D007Fx-orbJ?f#Ij}oDJ zXyD{VGy8j*H_TXJ>UU|RL4iEx9AI+y&p?k}2^x7=UOLC%?M|-Q28{@A{CoKjRmV<6 zk`~t6JU%+|x{~`akhfRJ&l+(o@x|c_cT6^gLvel{xY#FXew__EWgmb=CR7O?husG% ze$nrGME&8;C*{5GlxUDwWX!r1=M=`loKa-o)ony!&wM-arpGwwb>0M2^{xHB`4P$J zrDRsf{fV0ryZS7M6=kFAP8H7OaQoC98=TVhq_uY{OM1hxlfu`=z|J;B>UwdFVDf^p zWQ`vV;sz(Nq&LR^ZI#bolr%~U`ek7S4O*s2{Se$u%>@k*ydl%aB5qe-SzKqDSWJZS zC*crr)|;+-IXCQ!`+0Olf4xjY8NTY(FywnzN?fel3g6qYNKKsobQws)`l;4$#(33A zmNGh-Nv4?}RrB}S_IGl_fT3G5bE_PxVZ~Hksh2j+fp z=Ql1Xul805H&Lw%+>fjrx(jXJfdMn4VW;s8+`E$e%tzQ#9gyi5Lw#|*Vq2N5QmvV~ zcjtCY<{tENi)+lOn_dk#Y#*y@d}821K>m&F9%IR)jok}W-@QVoxM7!F+NPB|g9^<2 zIa8;jBeEjw9%tgLC(EwS{ZAMt%cn|k&3^faJG8%v%R859_k!RquABPuJ2HBjNz$;@ z*>}4?d0A4kYB8{9eAHx=&@B)CS2>3&(%d<9c=HPWnto zhibVLgU07t;mj>-VlsYNDt{tyk9d@ZCH1U*;uDWv{c23&8#aP5mzJlZpkb6J>sh81vRpZI8+$Xni7SR5$9BI z4y`Z3vS`_iuHhUdsgjOGad77bcE}DCrJ>U)qNx9DT>@T)AGGO9p{dfcQM~8#=+Hhr zud`4o)UDsVGJg371br~zruKs8-gS~IJ5aM027J%FH!vp64r-EmM-g~TZ>kMT*t}#+99}Gn_#OghDm4yBD$#jak6$1zz3@~py`@c zxQ}p=%wMPoJ?6+hgRp5qV;0q%`oG;u*)Z`+DIi-#oGW^Bwv-*~ z{)LDs5Sc{_@#&5hm)V#mL~^wT5CMW=YA?KK)_mWP^L%Y{rRHsj^`#{rx1jyYmZD$$ zAkr|=&QXD{e#}J4CoKu5p+JU`ta7!BzC&_!nRbk#&C|%Q++$>Et59NiTIP|e811?D z)5R&sShDQm_yw!TC1Es}NYufOV9H)yI%n14u3sp5_pWiah7fxZhbfu7rTc1Z6cF?Hs=gyi)Sh31dF+esFm^RyfpA1K@ zQXSAS1B=t{n*?f^%p}||$4u6=7rL>&ixS$~Ta;&(Bp{#mz{7yw>dAUFj}L;NT@h3u z`T$o)xklJN&h&DbEL&eO1l{5phZ0RS;%+(Om1zZKbXQO9Si?2g8q4EX`e17)ewsv` zeH66eais??P!!UsIVzlI-IT%XpEjr}k#v~z6U8N49cC9xtsc^^rJoP{Wi_gVLAHx6 zT3BhijlKIK^qy`5Kd$nDcz#5?@JW47ZRp7r-9mf&ukwI z*k!Pw5x)+|DUA&q)|Xq#ts%FF8nAWXbfTnR4MMyY0>qBEFpvpatu#w>(LdQ7kdbb_ z?GCoY@g{@ie0Zhj+-5Bu2*Lg^EwoD0mzRD8Bu_8%JLtWo@x$9D-hzr_IaF!q7PvVj zE5idT8c!*Yw`q-EebCrSS2D7TjYv>xK5WJw?eLoD`SeOCs4h|m@DN^(OB1(XXI`XJ zMR4aY9MaT`vTiq3|Gs|iDk&En=3C}o||H4Hx|sepLVi#3U;vP-?e*uZCTX84tY9Rew>@SVanN= zX){rXAd*_?+Mow_KcGO=8~S7e|Ez>JOPS-zuzimug;553rIX|Li-dmow`-?RD?<1k8Tbig?^2!fx*rHyppJ`j6P^^K5We!CLsIq(AfsDszOwb%UB!7c0+fk9b=puy%E?ew)7(il=s#Bs2Sy z>pC&QXQiWEcrrzJEvz;yBRK3@?XYpS%i1`7k2EPuR4CS_OSTzwd zv?$ocE~k@pGxiDoy)W;<=0$IZDtgs*sz0pY0lJx z&}O*?ai*>;cPxolwB1;8uL;O@I}YaozoWL(93NH4&lI_R>jdh66aMbzb_4S0 zM+TNHy5Ho@1a6DX^Ve%g7WjzRQmbHX2oA8XaDJVV)DXA2n3hSLT3J-J5cv$O4#%-u z@AFM??Xey6o2)v$6If3}1DrT>Ay_hcyOY5I-kpfi?=WN0F@HsIkD4gS`&4gE4to1Q z@OBVq+VQHk=0V>U>w-WX(yogy0FT(t=&ev!YWA*6j?E1#ycCs%zlS-aMzaF9OZ+*R z90Ofg9$`EE_r>hRZTBy`vY+P(s*m55I)7xVDWB;65>L~IcD#T&h`wf`H0u_@OzKl) zo-0N>26^GdCtm%S0z}Yse+?#9ryv5OnnNxGeinbvV((GV46wg!_bMz83KEY`+jYRu z2@0l3qEl#Uq~X0TIyn4F3Ew+ZJ|B}=Qr>{1rmorhfg21}3SlGN@VCDTF|RRO4SG{T zhsB5(9qDg#*ouqRIA9&a@(Jl!-D@^Fo0o5r_vI=)yR$IL=@XK_nCh(c&$JQ$)>0Rp? zdZLOsAkc8_4P_;zJKf&W*?77@>x@-5K0HUsHQXW&Q3_|IQqcFbX%DJaiFE_z3=+lt z7&>m#UoE_+l1M9qf`r3%th?Y;7B7ZClCCU5mMvGt7N_;uR8u?7g|Hy}SS$*k^_=wTtLC7w$uqG=n4Q+c{N4RL)*nD?= zoutx}sL68h!OG9PZ%E&B$Uns~1{At;`;=CFXgtBI8D*E@p~#AZEXw74N?l83VvW?( z4B2<0X?i$s5#i(kONxOr1`&fm(1ix9wClMos7H!lDwMM-<(8sDV_;0{fPGqAdf|ID z$G&+J@v9r}hm}jIIhn;M-VO0kS8Iq8XdCPD+AG+ioT<|kg~*s~KY>?{Hn1as4fe}A zD1AuFM3y})8yqxVbg)*`Rb4J2ST4p3CjJ&_xZpcz3E)Mh z*y=TDGM|B~@}m}oKFt_)C$L2{!I`7pOxcN3HM-!AO-a)UetRgYF!bJEie4>aiZe}l z+BL|9>yGM7IY&@dva!b}Zm*uKHk!rt-G?{%#0K8vIw7C_uvvn@SP*THYh&zAK6CBL z^bqOwlQ6&l=1eJp5%S$iux;}=RV~PiL@do~E71QdQ>FK@Tc>pzIytuy#gn3x>?Tlr zZS!ZiQq-T%!vv?oai{ctsk11dmxdl)QFSCN)SRmUj2SfERru>eymRQFF)_^l+&YyI zkAHl(WVExpviiB!F;wu**xZ3G-P_T;!1SRrM6dl&dXrTfVJqi>n0^g%hP@2^(cW1M z^U+K{7-3M<;mP*XbomomBUn~>CY_2=TdBQrWzxJ#e6p*f673QEe2$R75tM~$T)fO1Y|uRkUL`Z=B@QJT&mZ+*HWr!{;f5*pg}%>!x1P;s#o&@#IIf; z(XngO@}?2-#}{3RT= z3sqg1>KxT-f8*La5^jh+i>aOYdLj(bxgrY57R$XRE6S3|dz$J5a!Az+_u6}v&A8PB zi%ts`T_>{W`cEq8?h|zrYP0X9gnV|TZEeM^UV0tGa;fSL#6;zt-N&jMc^Z|U5TMuI5}ku7yA5w@wB&ji>VID=%0X>z%)N4`GV zJMF@^51%8{`rJ*;OWbo+-3m%1qXh679-mj(6otO0tN3o+iQeAmdy?ND5AX4V-sD3T z!6E4#$(RCv-lCwOy_;q_J9|R$j4b&P!No3c4o03iQB>hfCrss9o+hL8xo7SONR5ct z7twYsb^d$>o)vm^ATdIzD}j?C^@R5F_i;1sHQ*x1OZ zSMef5(I2dh4QCM((2{kxqRx7atp~vvj>t8^uTP!p?6;%@kr3JH#_jh0cp@TFMI?@h z@DUImQ_J}*(pN#pXS@)Uw0fRl!`K3z2ze4==C>e93}MZx4po=$pe6S+64kLhkY?%b z&d)C;f%hz%Xx=NNZ*Vx89@4FA(O@0o}%iMui7jJ*ps7>P}qR2IOTuvyw z>K!yWzuTm#sh>ScmzRt}Z^!gM@VUov0Kcz#6J+ANK5UA+uxiwN?NjXPxsEbno}O^% zIG39>#ft0)lg*Y8I~WOe&CW(*9y~L$O-2b;$-)R<-r;thHT%9Uf0PtDbiNdM;}CR% z13_QSqyq8EQBrCk9x-C3ds)*H@KKd~r|IBD87^jTwzJz&hsmlPq$xI4E|0L%;>Bg* z3dSh%YgZDzh0=YRXA6i1l4vsd&qIZKL7(2Qt6K-Ce9+A;t`v(&&^p1%5=iAFgD|L& zd^|)d=0ZpVog(U=o>K7r4`?`*gKO@UcIJP`{34kUfrX-NxHTu26q@Y3DJLsmg zYs=w-y;mo7>y|F9Ne-}}?pqhVn)jUyA6oUK<{>S^wt+sy61COAQiAvLq1r?DH=+mL zQbVyXo|>LcHZ8pB!I0K9I*m$xcy>^?>%nrB8N%PhcG9pG2hx*V)-Dd&e)P|{>m6+c zr(l)pg;z8Ibw$AxhCW;%E5A8j@Y|?O@z99q(Z)nyp5pBXQT=S+U8-UAjol-pxS{i4 z)LEDsSQcr5S;zTh?yR8xWrm*%r&_dGnQm54E$#HE`ryjVzg5-f7CwEqd~3v)#kW&F zl+|Yd$7crj)Yu>#GcP_385Tjoi^M>zkr(t$A0(|8|MuOI?f%DiA`c)cN{{4DDFmbi z41Y$!%WqZl*1gDc+f(0-{(;ene1j68e+phH@)A!xe@=`$QJj?ji2Di}6HMOdxbmH& zJIdm17_yjLd%39-*JLkw254sE9o$hVBu#eW|&QHM+ihHhYV_-ZD0#uY7A3qI6kYse>TUzT-o$ z!!rc+)0vhnmbqQtHDBde>rxjZFmk%NCs0>ppMVN7L@5}p6m->g(reG<8TXdD)x>i^ zASc_U2d&OUP0j406lEk~KfOq|s8FD5si|!)qjMtKZoK0R! zwLIy%ut9Go<`!Z3);#NZ#2CG%VyNDxr%ZYEpW&|XQWxxm)A^;t(TICgR%&nmGQ*H` z**^$Cnlisd8T=?pd(O?z$21Vv^)OzqN*^=P)MOt5cOvG+S%1&L3lvQ2!-u|9XizDoCL|DE zJ#w3ZSQDw73UEzF*dUa06Mu-%98Hfe!dTFhlNKJ!Xj}l|K>&<$rGSP772an5v&DHO9X@=c_uRY zU1c!xaFLtTsb?eUBIP}?L!uXAgw`_yb4f%3@$qz4NPKbSw%C$93gp_9DNBaktRi(K z1#vqC{z1O?_zdgAcq_CWd$A;382t4gPNzM>ye9#?(wqOd`RIcxFR%@|_#or2WW>4Y zoK=el?d`h16qe$C-A0Rc4u|UFh?Km4QhJu9L;yZ8Q1%azmYUJtyoQt0ojW@Qwv_B!o%v8I?Q5oM3*UwQ`5#L1sudQL||fI~@!54|MT zjp9ILG&7ri?QJDCN1!<2PE`T^fxij8guqFGhztpq!cITRNnP<@ZHmYCSNJ+rE;bu* zNBcQcNKTupF_^2W@Woel5-spG^B&X88q8`%-TT5BMF#B)PvY~mAOUGNgaGzmWbAJI?^v%iQe4_7}F&(Pp*qJ)&1gMjr8wKtAb`M7O?aTvhF7=^z)|kTN zK?B`72eX#&gzR=?g-s>NO97-4X7elqsE&=^aKx@_>|>c-!a0i~iy0h?*;kxyVzrCR znJ#KfXRXW6sqydU!;k$S7df*AU(E+Nl2>iY^o;_nT>?eTvC8YWgkW73cwrR=tV&az zx{Nqx1H2;tnLJ;1-wqtxN#sWe{OzTGXp~{4@AOcdy2Dqb0H@<_ia(A0Em8K572~?l z0kd-kw9?QBnkjxJ3)wVlA}IN+y!^qhmOXuc9v2o?&7BgaD4fp{P9(n*!FnzC%s zzUS?0BqNFTHyf}Q-srdy@|o*We5rV%9orDoa@bnf+%cwk50-^jY!NN40W1s+pv4*y z-n$oAu=gSB#|K4)J+EppAMlosuoerevP^8- zOG@3MilvGC`k#+lM1>`s6*mH;SIodw`%%4Q8^8s(A-0Gb*U-Hcl+k^=O<{Ute8YVB zAR@i?{2i>`C!h3dMMK%vQg)QAftN$z!fX+Nrl^bsnk#b83^!D(t4@>@hxEKWMLk)H z?`$N+u}p(zzi?%;v{q;^^VpQ-B)al_psyp2dE_4_A!gza<9;3_l9@m3l5=r5D7XoR z{(n`FQ#M2`DA|?ifU8MC>heykZ)EkNHV6Z1HbjK3 z%4HE{Nr9Eh&sTsNiK>BvJE*t3wB&+|_{93=7mVzZ%CA?u^DOA`5qG0Q{Y@heZp~{~ zOG4H7jIc^QTrH+8&K~$-+j{_GkKB5MsR3+z{^uwoSwv9{pR&!a8$h6aoXBU5*;xDi zJ3UFqm*WqeKI#yuj=Np+$V#E{tPFm7n}4%Pb}U^YB3RkOUTbH55Gx2Pk@?0OKBq#G z_~dI_A9qfX<3U!Rac| zJlz^K_?625|MhKH1#AGC2D2Opbq!-+Vpv(KkkcEiaHM?UYfYbsQwwibPfR#C?wNa{ z#xFQ>I7{v#lUi1X-`dnV%+4&wtITCjBT=ZRpVSo@xrQj(e#HQi5H zid>IcK`(__gC0Rj8m?WZAU%GSWTa#pY-t|AvSuyc$F7Hwvu#e3u+p9hMXH%h3t>r| zGiq+9j2wDCWLiSyY8`5CpaP z(C!rr@`wg(k{USA83DQ^-E}VgI6U2{$qgRz+*g@FB*)1+#^0~})+)%GilryUj?KGV z{^io2W33^zEErs6_WNwAi|{AUBS>9gWez^@xBol@^s@tQ57Yyzdc!eXe{uvdm;qAu zoO%j6ZR3{<-MSiYkZN`C>NQZ=;&)$l@BM0rnOMgoADxGv9?Hzr;Au=`X%g5EC8;wO zqEor~dB*_byccO``1U_`fmv=KLyL|y943p=Pe86~)kR}<)+r3ge(}kI{7pe+6(-+t zF;H}(E>y^fijVD#I`^O;V1 z1@Pxc?ku?d`C!GI^?8jQ9PAH2{Q;q;IbR+hg6U|tnRgKyL=RWi7IWYwyR|^Li{EBJ zX*!-0hB7=UWmUEaCrc0h2yACm&WVVMBtxyFe7iS9h76^& z`J}eXIb5Kooc|HWRad&K|89KbmzSY7n~I4iLXn;I-&2gn*VFzkPUcxmxfH?`3Co$Rvh7u(<4cQyQ(Sq@h8nv4ZRzKbpZ(8ceB_nB^^ zy8+cNICWRtrf-Lyb(FiCESQP653(Kj1&lvn;e_4$>QpG{>Qa0){doRt&~%$qlrTwf zIyXP);E2e$U8@TH_CL75tjb9k!s-i6m8z}INts0&e)Fj*<5y3(AZVQ?h!SDLDsqPm z`rbY8+6jvtSeL*aL#vNKOIO(`EPw45s1wYO&6b^C@y|+?*k!kN_!uck&DzMJD>elG z{3Ge|$NA#n04CIer+Qy3m{09Gwz|Z1(tdjIXyWENFwINuC?asDC!aKL!A%d{8h2wV zeQAB1;%XuG9}o4rXOYn?YYtNf4U*=@eB6q2W@3DxY)JKT1=8kg}g!Y)#s)7WW)$a!i-P~T= zEb4N58Y&)_2V3P%1@9TLH@0NHs(l(OIPH&=LJLyRT{w^DXr<@Ry6-#p43v<^J{(WK zBc2*pHYpj(LfR{3)xJv(Rh^^aZGNE?Y8g*Z!uO>|S+(r+y*3`Q{-j5L4%bP1;c#Tx zcxy*=$c@Q`2&FKmvV}43;<+epLjq^Cp!v}LPc87+sfhtOucYb7d6jHuR&MjcXFrM? zGd)GGn9q}`6c(^p=bC;I0A`h#Iue|)N0mu2}Z01n{X zCaEo=BkoQ{F$mO}d6)VJ#YI(WOJA@7k=ev~0k|pk{A7RR^9+ z=9x`JoI!-kd78F#5pUn|^@ZZqJY6!)6`u$jDeJpcxQG9?uGTymPRx`J)+|_HVq5 zDjkm&ydC+H)!eBt-*WrLpDy=Ut1e~=0Ro5=&7zIG*n!G3{P-}w9GKuE;n zA30#3EwU7d?1uX-G&;vY2356o_QRSC6wNjZ*u4tQow40Wx61JIB@NgW?GblwF>`*+ zl!VX`Ql^t3M!cvU;e4We{`S|XRG-n=!^GL~=_;J`|eh)uZ$LHj$LSxN^x82>k z3l6*FeAj>yM1f0xWL{rpjrarSqr(SZcH-Fh%NGwClv0EA})Kw)yLHy*vT>z zI}ktFvdu9fENip!e+6 z{PC~{itARl%^2xsZl3l&#zNSCWFpcJQs-k5~^A{MLPjtx{00vSUPjDOGkoe;~2?%W9ci2`z1 zz0C_i0+IU;sBjvJQu>}0^xpyK9BdazmAiJh6UuzdLiav7e_3Wfvn4Ak-D>J|OS;rw zQ?$Mf=FW;sYg}DKFJ8NIr%Ey@dp7pZPTpp!OoSO+GeADrrmc}SWka_FkB&Avzm`<8 zP;`==1nk~Wo+OY|dA!(bJ>PQg?xjDSXuZNv7{1q|5dL}1Ffw(NgX#8E1dEnROyR9z z#~9)<;y{)U;ztEw7O~CeX8X_H9@`_qm$uHM;G1D>YV`|gU(inE=wEyObBVYxR7EK_ zEM&P=pZ5k59FV>&@Obd>wzy?mAQta+(hqxGbq1R!9Aw}a{uY43HQW7Pa+HlZpnhbv zdKb_*jBZ6#)ic!~^9%87J*uu{1uN9TodOxvEzH(m^?K~uy$b43%)-4!Z)-nCkgn6A zGU2D-IB$#-8yb20TDkd6ihc5nkAI3qpxwVD6g`&3J zSq`QJ?52n$p}=0N)L7ER!B&b{UAD(#A155xO(c>l6un^&4sBJWh7@zD3|)H9Q*0zq zK2$2iU5d}UcXYcSL0d}`!7sDBAe?(YPqTP?+;Shx$4??6z@#m&EV=GePLV@}TfyHo znM6d>n(bv=2HK@u1~h*JO^tAP@DcYGz#UrZ)zLMnH|E#BHZ?H$tL#We9S1 z5G2416OUp(Z2yMHV8oGliU0g~Qy#FlJ+dfaOTMKSB0 zCQ(AOFikDr?}^Ujlx{{6F3tDKaLSHq`%_!kD*XW*p{%lGRS>D`q0L>$Te11%bJb>8 zGr}>+HJV1(TKZu61!Vaxx59u;xr`4_=2zZBCZo{`;o}1(JB+S%#y}NS&Vrcn!gjTX zC{)=s!T@hUi}3cm`10=CA2*QlWF&PIVo`5H3YnSWQ9nE>D9HGXQMIP@J`5LBMhA1Q zCPhH9%4w9rogkox5mo~s=)j`Nso)Vg=h}v#(T;na6^>+Af?}M;AVn62K3y&q0lT|a zTBB`$FRlJys2fI}wcy3AXW5a48$X;BA9)mw-N&XlG=8jmlvaj&BnV!fg3>m=O^I}} zPpaM4XAEhT(ViMgQv-6VywOhOtHUWZ?dtH96<1vcte@$VOuu>gaT_HuhLBlcK0&hW z$g(H=NVg1kPGs_ZsSrzu2!d!3`k!Vrdd2{9p4PETz zq$wTqLh4Iv*HhI+d*wWE`ZPc75}clZi69k16?!`hcY?vsULFX&za~6|w5i}Z5mPz7 zRQ&P&uaNm3dSW=^Ma@Bjgr;mr=e@CR$v|Fq!zQK3>?ZX()WE{UwK?FeHyrLh>;Y>i>76T|$6l%!&NIfe_@A zfSc0D>a2`zGyZn*XdZMcdysA=O#QxfouGl&A)Lv<52vVAV{pfFvoz;4zWLN*+<4!b z$&e}OFhtepdJzLJrbQXT^jhQZYZ^#w&G4Ha41(v-a{xGoVA(~Dk5DpGJSDs5QSeYL zH^oeevdVPNab5~ox8C!+KY+yTQE33`QXuNaOwmp@8?nr(l|55M;8Rc;eGLt;WpYm1 z4REm_A0i&mKk%|s4)QdrbKy3YhY@xVh(B8#tzX^-psP}FwpR6-;+<=WvT)T4aRyXv zGcS9s3U~6&C(91J{p2&<(q#^!p7lB1W+qqfF}h}IHwn$WDulfwg)x0e0o$m8AK_g2 z&9G){M$p(m6a2d4OZGy@eeZnJ<@c<4I9Gtl zVVFd-G1dy~=1JvnrHihjKOSlEVRqB2IM_7|mBIT{{Q6DT)f?-$ z9U0c_)kjO_qUC$d9h$d>1`u|A70(OtyE>nPEIgv*)<{zW-#Yx@nJw6AU0rXD3)_8> zL0a8m*)Oo{v6^EL4lmBXk^140+NLHLib%e~8d#6lvjsd`idmMv2hmspC8lf*8F!+X z5Np*YJ9fsB1mQBITU)2WiQG|_xz~=}7n*&Vf@%glJNz)Nt1dGpCA4k1mZP#~?L&R( zVh#VE{^TQNxsR!{w4gYp@)xLdj+?&okqdgh$fQiUgky^{6am?^*&wMDng6JOey;r* zS3S5=?}SiXxpo1;gbe!Y)w#CMxizCjv?-3#E2jP(+8+z=^x3OmA1krSpHc8UqTquB z{;(Q|{X!Ga9``A&`G%BT1>GIbwb#^$d-I~W_h&+*wneJo!&}ZCpuWE3o<-lpM`(VT z%)Hy&XXU^EuJG?ifKphqx^f$w#Zo!AD8p}5J_XsncsexV%Zi|QkSWIa&HOUTJ?xON2nWh5S zf8*wh=Gmpb$>@f#t=v?l)%o|-(693i>#c8n0vVDs__=Xt~^onBxod#NmM$zbPy zU5V+MX6?i`&&`?*%Z9|{)?)OcrgEXZ2Z*Wiq8|1wwhoHzC$R^ff3n1;bu;>8N=AKX z_<hmE{Q8|GsgQCO~mAovs3d#76tFLC3E#{;cL*~@V%Dn=Gnf% z<$BUSoCc<5h|>6b&H@VGM_2NFP(A&6$bV%fh+tjYEGTI&p_QAu1%*D zM4+MwzPaSCF~=q*cl=LNATS^o-oL{?04Hb8jhlsT^EhsD1Jny&?{vvM8`>r=n> z!zqtd__?c%NrD2cZn`OFmb?aW-Ff+o$1$QPL0Hb7%PgV4SO-nBc3^I=z*!_zNRE^g zzvY^f(V_;5G}WouBkWNDg|SM;|KGos@5NUj@Qf8$Sblzl)~xI~Wl01RuOV2Q270~7 z@LP=Xo%cQP8m<{@?1oUNQi!7V+qYKQZSggTvb}tMpFH}jjO96m4Sn^0?OSu`UZ7>!xJRtyIle2 zJCA*f(8QYcb79_q#i8`S7su~FsBF4VrPw17`+_Fu37RrxyfVfomsTi?hlf-PFZbi% zv=S%Tm#74DXuH_Y;bS4?0(kf4(#uChZk-{bLGu5P-?-%%M065e?0m)z6Y5gsK*h6X z;}mix9-Mz*v+%kRer4MxlYI^qD#5F?Ox8_Ipy9hC@$fwRZuh>h(1*!Q%(vrzLcTt| zA}+T8j5GQWbQ$+Npfm4{HA>TnG{7FS6D98$)JzXHF|=T_ZWO0G~0up77%-3pkQLU4)41&W}P9dBcCiv3XvvL2xf-rHZ)a zTuWUjM>b4Za)xUFkVB?Q3FTE(DBrfNN=rPrXhGdT68I$s4@IYbpO^tp zsUq0TgO?$f^aFMdzxwg5knjCrCvPKg6dhCnnB5a(%0O@Q!8DCT1B7tw2Kn=6DUowSeu-m0p(?rp1TF5M}Z4C<0koAKhm8 zA%{jUscOR}+FTQnRb$Qxb3&zn;vKTnUw)Z!e32NVCZ+$P#4;mtI+!v1q%x$2dB0Yt9E0;J?@B zAJ=I7aG+(zf0sD8w@c7{$&QtZ)O$o;Ky2@#HEFkuadrz~mWx08OuxDG+NngJR^=>M zmW42^${?U^Fs^N`wB)iGCu$V0r~Fj#BKQPo3I2~OJvscg1R}O=(uFN$i5vpO>6`X! z90PONtc%2pv2#xk~;v5m0}!^u|Jin6aMg))|m-DDlICkBJD55_(iV|_l; zIVb9TzvuTo&!5lh`TSA5UQKh~*ZRJ$>wVuJc5G7}lv)}9`3`>ntCf_~%p4e0vSD=5 zP8MPEONvB7*;}!S3R4ZBm0n6M_>p=V! zoPOeyIPC)xZ>IF`T=}HmKUa=Kk>D6yr!mR^m5D?{ss@>UleTzw^MdZ1i)yC>nXXis z?%mINIFR%4Nv5s|wmnuyyX(5E`~tJ?=Lt4M34#4Y(J}IP&b>Z_?J3?|_{Ua9b>qZ! zZ#!>|uJZM1v77JD^(K!hHQztQ?OKs2Z|FO5WnvGTXqi9nVK&-ReFOLvctqoV^?Xd{ z|JTb<{!HFOqm!&}GGVv28i)HAiIh-Gz291KfZ-_PMNdooV0(?s35A6u9tDt5lGmKK z2XW#?FngDMw=|2(aQ$+H(U$k_(IRB<` z^u|5S>_~czu7g*C`*6HZ-T*s!x4 zj&^v7DYFRMc!Ly_6gj>oy}&4iEx)ZuE?*yOGLaWfF1f&!%fPI#(JrCWAk_$NILpD$ zb=dRDRVI;ChO4xv#_?C+SKtXr_vaO$`~Eh=KNjHVPFh`e9t$oV%V%Bc0UrvOsuGqV zCP`BJTB900I0*bl-ZtOd$8sywBv@qN#bX7pDGr^h0xOPnBFQiEt;_jYJLhgH7Spx+ z{tH=GtMfg1;Z`o>bHBo{r2hV$sp0Gy&FmMAgjip_p;%UY9D4Wa_L6^=m61 z-*#?LR&vy~*ShCJ#Ej`;!wJGwCo`qj48RU+=4rbV@IcQPNmecw=4b`l| zk=QKUJp$I|v$uMUk;Xq6p2g5=r z<77m&V42(3!!@v0NKT9Hg#Ejj>oy1x4qMLZGFNJ!+sQ0826D+hnSozUQH$oN$SAhl z`G2x?Q|Hmqhg52>!C0Bv-l!s#JsHn~@TAcMpVbeVWrMx#xA%UOgGMD#-o%f!B3E;~ zrZN{eJXgO0$}G+|dBH$(JDc3Sz?#b7_}#zWAt`c7T)9^slsng<-h)Nurk3F*WGZa# zhTvVdk3vm_&HD9mY|jB%=Y=((OAebd8tu9yQa z2%a(@`XN3cR;HhiV8hQU{dM;Ao6Go`6U#gJK7W}l92Mc4jLt{mEW-su3b;Iq#Lf`6 z$kmsD*SSqA?_F~3ZMr%=q_a(ZzQBPfnmSJ%S>+@Lau z@IHfO1-xWTY{~V$vKB6P8#~^duudF2w_L1CGW}VnX#i|`&8w%*6e*6WSgz=q@MsNmjI{jn4j8aC#6Aoh$z`ygb zOl^eV=5D{!?{1|ec`SEarVcPa;lH8BzuPLBAAbT2;rdmEgjQ^a37JnM+xP@`MMdT{ zKFCPl)Gr$gMMVj<3jyGmHor_W2J3{+l;2N!M6umIy%YZaTGAhXUwtMOmJlKGzWYqF zaW^zvDC8v|!?#*3o3$fPZdKMibb_+&Wg^z*kCurvM=5O*gT{0X6dp2PJQ`tLvl(fk zbPD5@Cq{jJZLbRJ;P*7MP)eY-&ktK}8i83`h-*m*d8>4f^5CJhJn0HYCT`DL&AEMr z|JS-soz-c4A8iuZs#w&|YsAS&3r;}^nPc> zcaIlU28m^R-fSuND3I^1kotLH!T5qKa5ZBzv9;WKbvamguX+q=JOK*?%KQqH)re7f)2K||34;r*InlCjVS>sgb{W^0^OoUhM6-hCk%jJ!hD|v;QM2vT9CXMOMrWNyHz*3#iMCca}-ov5_e`efkx<4g5 zI=0cT4171>b8?FYW2pN3l>4t3sdrDYPBq(&m7!W*KH*^VsLy=TT@5+4V#+EMQf#0k z?|-Ek_QH~h?)yd4ppfaZ>}|=y+{qB;G=!lTGKDd!f38%5 z=q&PClIYByM>4mCag!BvjbG2O{MOBMByIi_vkZ&udVA4n7{IvJK@#D4_S9iNcMN<7NgnHDbC$`yQI~Tvw4#N>W~yPz=4l}B%splNfP1Iq}kSD zsafiy*-}Nyxcu6N^m?21Cm9adfJ^e2%WRrVomYQ)Ab*nw1bkRj>c0oD&jYG+4VD+( zKHq1B7GgOT$7m2GY(KS+!uQ+aGrPCV5ipEbu-BT&=RYEZaL7v_zY$xrQP1s?dm_A4 z()RAo8ns!)6Fq3t0i#ce4JN_KN|dA_4;Rsbb#IvRN8tfi%v{&;tSR(3V%%taA)c`l zK7?LJjm0y*FCX4BzI>;8qt?4{d_|eDxZ0MtbPLZe&<2K!h!>u~AX3XRaqUK*vP(Et z*VQgA$tOA~Q*Z|rCcHp6T!KzPs8h0fjHqooF)oyNuHRZZ#LB&Ljw*(+TIPg+ze2qG z{XMQVc^A(;2e)}k`LW4%ZB}Grhbc+<-fj5_E#59kKKkLE9{uSucjuy^OakNA{zRDV zFTTG8{txTAa#dzyfZ_66BxXaOYA-{oU_tnw#C=1S_7N~2Bgvy4F_MkE=RQqmW`9`~$Kx38T@i>a1%=XK z;Zsc5VEV!LOdnIUea?k1mkIeSJ0>S=mI@;tpNtj`nIjL-z;Bl2u$okT%|o#nvtODj zxDczK6RMsn7;V1Tz~ON>DZi&RoE4Wn>`BK!Q^F9Cq*ab zhgreDz0BHEdzR8q96}N#&vd|=yI`Y=*_S91@5e>=XMi`eZ=hQY-~+n-bFs4EFPlln zK6*ck_2;b`P#60&QV{B)(4oL_Rnuh0JXH4qA>xMz1W|C*+gckEa_*|KM}(X-upJ$$ zV38pj=rq)bv;ryah(~>Cht+2fli~t?8eH7;vrBr8lE0Jebvcdx2XD$K9yHnRt$>Eu zZgsljA9*UlpXcR&z?lphG}E^$2fx*~exHeto1+(6LdTL8!e+rRK7?!>nLgl3RmZxmO3d`rZ9LflYbmfsp z*@@K6rn&W`Xkgb6FvM28x~J~quqo0(izt6sRBX5Qfx6^}jk`MycCS149FZFn;hiX8 zIPRQ!jdy7TNI-q4rsn`2a$sdMolTUyh-9^YskDj94OOt27$O*(oGN_Z6ZQAKZ|Qqm zr_T3wijp`xjc!5KH8wzT!3pr(y#4zjBYH4Mg(~apLdi3^>##DYwn+cFGan)|-7`CE zTyhqC9j-0LGYD54mtchXK&SfB$H`e_e4X4})-0tuOmtb!fMPUG9)2S;;2=yc*OX{g z-n*wnM1SO$wc=tEjPDi6Rs)H>Od!I=rS%tLbtIWXC9dN8~L5H=dT z#nS}PbFJgchmN=_*G%91r!pw`)SNfJoA`8OK5wt6Z2hx~9Ig#LFx#;*hraViM2cE? z`9E#Q&=C4dnZ>tCyrtdM#|;!t`@kEy?)M}3sTS85cO$W29b?XE!C$-RtI?ui=dNpMz7YjeX-PQ-Q>f8r2 z6)%PqS%b(S8%h-WsB#9K-;$eblqdG^8~}O|fzfSy%@?TievN?~he#@(#yQh(#qM@O zp|H60JkAFa99M&m&xPpsGv@0W8_n=KB)L5^%MLJvnM^_);sDveD!tNiIw(J!QCNl| z>p1!NHTlpmE7GcH;CdrtQ5lNKP0Qf`T#w&gX;p zW)0v#ZkK+Z<_VP&oYb*ogjMxpYS~xRam?KL4BqJde7ryyo;!=$x6x8M}25l!^I~dytj?IStkJ_`J-JHtN~ld6$aP{ zpUqs*w>Q}zn8=J6RF7=1N5scrU*qw0F|uI&{w^<(#DIZ}kXAioJ^R^K?~RO!Fk7Hw zCtm18Xw*X`Qz7n&8W(~`nm>K|BS!T(l$?A7NwSknPSXp&c+4+5J}r;Du^ z!qeU=K9l1bc!s&)qt=qA#&uc$6e|VYSd5cDe*|+$oHH3;HRsOK zQziwoS-3gs183j#EF-;r!dj7b;nV}8Ke>|%k1r=REbUxyTb@*u$TnJ@IWeq zgkkILOzg|2%DCqC&4k{Tvm8Y3@#8CE9d_1%wh)RmKyx?_owqhIIYsoQvd6j)Ew2>Ou}5(sid>R5+I6DG6;~XW zI~KS5j4vWs5^w&r+ezUTNe*c|`w;1s1I$P-M?a@<^+F5*8(pcTw~lG|K*|K75?k6p$gnDwr-=!aFIG~YamH*musV)(lf4J zhQ!@w(&uoA-@~Bm-EU-SpOnAez4?l5yvnN|1NF%OVNwDXGG*QpU_k#*N?yCO6*|&H zzQuTYX)sBopLp&YuHbp3!a7c2?A$D~AbIr@48^Tduo(pPB~C3UuK(*??_`BvOV36L z)7sjBHQu<;^@**dnGLxP{`~@0Xa4A{*4W&fIQa{J0e3&X`~&hU6&n*hdt}xtXQE71 zG_sinr8pR-Ky3}L%z*T=*T3LgazEOS2s(F#kDC;@iEL=QITi5c7bgmf zyRFQ46LwC}-7$TO@#bkLEGsGTqtn zhUDX&U{_3XC|MuQ4NKyOVqdKp%PE+6Yqj1e#O1D)AQdLJs%xzDtV6`KTXo<{jYw?7 zQ}o=CapYmq?Ohe$-}=%AhF915>h}t*k0k`T^`<>t?jcf^CTx^*T@?yx@iKyzZ)SUc!nPc$Z(K12g5`;4B z8Hll|S#3fRUYWoD*CwY~a=nF9f$&$!LgqUhZus$oSxLb{MuTsXFgQiO?8FR$zyc6c z3FVjI40|-2iIo?9%`)fWTg^`f@P5_&BcL|J4jl2k)T)L;w8dQNO)?`_kkl2lJLm4V zQToZN#-%x;2bu45n~R5;C67V+)hWx%C9IEQl>P~^?pqjA=W7_ph1G9ASbmxSPd?rE z>?r_3rU{ab#oKoQWLB0`uX>c$B8XH<$Teyynz~{4@uYt1W5l>bYyArbuF;v1w-Gu5 zS3aKnYcNrpT0C)&<1)T(Uq*0pa{#Wz+zsfDl(ApKwE5x$Y>lU<1uK$hg)t6J7+)FB zeVxz$fFpIimcvE69|N21xrGWMC@w27b9bX9Iz5&KddF`q7xm*Bp_#Z=CWd{@(9*&Z zR!WsmA~pf1m%P_Hgd8{1>n{^-lw^12FZ1#DNN)n)E^m>GBuijW6Y3bdtdsOG5QP$v zVn?JDq>m&LFVgQ)a!-Ufm1h+a;&I&es9nUUWF?crOj-5+3@;JQ4F^7-yo9FqRLZFR^TL~<10md zL^EzNUh!7tW-LrRD&4b!OW09hKa!18T`VtUhyfqNpT8^-F}Y&adCMQxGJENe!1zBF zXJ*naiyt?pYZVrI7z**HSd`BQu%1{fwo88g#3W8@^yE|Rc!{HknAF^$vmf>Z<=6@i zPsbZH`oZ@$oV`>sF(*oQ?ytxSjM}g_&zh$64!C7GF<5(*qy{a#t`kWhZ_c_QEl&77 zroP;1P5ll3Ug6X(+fJ4Lx)8My^t9i(%RB0sUow}+V;}kT@dD>r1LEhJ;OxSnUmU&U zpmzlZomQk~UnrFct1 z^mDq9unwz+9zxN@v~PgO_R8>CiwTmyntkxTgH>iob@fn@b$V|HF^|iGh3^ZE2Zr^F`moZ^B@2=xF-}cb3DQCa**!wZh#~?n+_97vPfPE&Y~n5hD}%3`qq~NCm_Pd7q3<-XszX%0L%>*3 zH38Of;eOFWgT;nmAYJb?gaibJ?`5_J&LN5Fr&L%#wo9qG6|J&5U&T=k-zvNxqx%ms zqI>$S^P+(+JDrSh4^o&m&3qn2|G{}hC%V2S*#5fUT45dCrK-9)>c?2;Zzi>RzW^8p zy?t*Mbh{3_N%XLLGZK2L;jBpSPi7U6vY#(XPvJC~I1qV2R(guK=9#;XmnV_rIQK}c zi^Apv*#+Q!T+`9xPzRou+vU!0f%aZhkzX2cuPEsm47vO<0kIHzd0{v<>Hr;k5Z7wV z>Eul;Vzen)NjQ0JEHbT{CD3}q{LMxsD(U${R*BD(tdXq7H9sj372UinAN}oxC@*b z{BrRu26-*p!&77NNwDINy7_6^{o__|S@0-&Jg|S~t<~b;9^^J**3#%aYl%6z=*t)X zSfMGR)oUFj({UCU@dA@KkHWHZ;piDHMW^;3W>$Y2EdTf&PeZ;n*H$VnZd*>;Epkv? zLqg>H057e8MkcH$u3G?gQ7C9Sy!JyK?=W(lZzeZLY#5k4i7gU*N^i@q@ZS8_Ul=}I zx5E2;8*P*2$Pi^Y5jfInFqhsPi2h3(kv~Q%93v8~n5*03VY3dPadQoE}= zTkA~-=(}tC!%ruF90vZgoe}5X%;j%*?|Kl_A@KzU^!1dFQ==!fZ;47Xe|3>jb*9T~ zh@u-?8wl2VJ`nk%*U(Vl=#jhf|59+1^D7M<&K(-1qjrS~7YQX(X4I|%%g2*c(q(F0 z!7=Baev$f9%&6azbB2K#)4y3coo}w+zy8Fjr;O_-75>8d|H0gT)&(8ir*751ngcWn z%|CN#0C%k8{i`+ojfV2ic11^bY2`cK`MyeKIyb)nc>byM55_G;Q-szY!_Em$2Q7VPe*Hc6 z`Yr&J(pvK;wYidZc6O0z{1SLU*!*KiB@YCb*~IA2&0%ZZy|A?&lY#IPPFg$eJx z8P!hIL(Wh|2QG$77_7d5!Pz8TPLuhKosnV4iTp;yk%eD2ZCj{Za9w|;4x;)62x?BxtaisT!kCOh7qRsZDvJCX0ZFijzx z-EI(RqnuRmlKDe1uM}{Hr9NbPUOqR;Edqtq%mx~q3zQj|2p-X+aB0_Jm&N>(P5k~d z56%HJhJM%;%4jF#QMvfg*8`EJ0bYbJ+Gm1F4q;#g!0^UHf%*I(()s zW!0Nr zAaB(((!w+2-QzJ@Jo+J??QzzI!3W4MmsnQ{-oKVfxJh{KCHSoN zS;FyV;Qe%cBXVv$Oka6essCI9@)K>!D$BcjR^q@uK0eMGoG5o87hHWJ546nX^-M!gqIKG-}HiIzH}i2QK*jFM58fRrM8hU5)bEzUG?WP-7@xN zK3SLRwzjtK=d@_rhF|jY^LwJ!IXMv^9N`wuTq!^mDbvF9eooVr{7Gu-YRL)Z0aS+$-*QZ;?G9_DzWNZ6SDeD$<@eQtP|o zeN{|{KL5_<(P|X6tz(n*=Xqcr781!+~{1}!zG`9cV`LbELTZ_IOr~d$Qj59c!5yU${nl~qOw$& z3q8|#UlW4RVGhps?fF`q3?j}N8Hg--!+!U;2N(6uoTzA`A3#n?qrios28j!1NqaHG zj!M^ZeT?0d6o{k6n$+EQbdij*@-s?G8%Q%kp6EuylY;dsh&^?qQ`DQwR0?-|mbD4^ zR}l7imrF(TPK97`L=1ANv`mWa?t!%9s`J58dLIVF_SN0i7It|4EAy3_ zZEtGcH4pnuc2b%2?#AMkmiY%C?Y7{+?J~0c*3|QFx7dEV^;=Uxm+FV{0~Y>zvi;Ogtg-Gyd~~F z6he@57oc7^dg15p84{vF_BAShrJSz!v3~Taq+NGqN1oOB^A6AX^g0`Y<2^r+M^>YD zch1+=)<)-tsvBAlF`#NU);O9^Y_PKjRicgWF-j~A7GCdbzgEKd=>&X_b2ny<@9M1y zWsU^=0Be3*H@kBi*e$0Vp@U`YV-II|;u|%Ya4gE~ak1OJ%^T+@YA9!>M7>PMN~CEGoo&DEBoK{YRQp zff(&|X$-f}IkcWDLtMXv2{nOpsVWSi8V0eG>>YvXR}tZzxRuUC#l9qQZ94(W@7pGt~?KY&sR^@j#<0GgRR+ zwEax1QKxVu?~PN7gZH`wIrPx=<*haE*Q*vT?yg9VnghlV6KH%rGx!A*tf8S1d8(}a zmcOv$${k`(^M@(X-keZ3?$Z}jU_8pQjcDYC#eb_ZO9|yBcN`5jRhIf~k@RZB_mEvvC2P-ZR zT3sob%f#h&*JUDcjgkZ6hFHm@Bp-O$~wRwU{j$cR3QWWjA0 z_W_*mjUul*#0#~U1>5Y%HH6-({?m!;2mAt=n`C(UoC5eI`bjHLfA-R zq<;A>mDhg9uiPtg=BL`)(()afq2sud03(-)BZzV2Qw8|R45Y?$AlE*PZGS%|53tKs zcz@v&4?)lO8Lt)sGdmH1M8_=H)K>rR2kZHM5|?>y=?99hJP3bQm%X#`b)FTX=%l^| z*coY=Wn|LNzgh0rwK=@{!@0skLQAIWSwoo>vjM{LXy^z9*RVMstiDeu3=K`&KU6Rw z1JLp_1Z!3v@bFkIWaH4Wzq;-z+Ir)Omv$>tUf?2ysaQBGR1L$CARiBtWH8#qtdyObDC4F*8emmnm@01 zL%{t6u-1}06z}g5_FZapgJAL3gVJ|nuqm>s2Wbd*hlK|e88zmG)}%efKJai&;{kBE z;(WmJtt!>UNYE^4xK7Y;MCKxelq8e9PsM4PvY)uTX>ld*1}?fhvo>G`bGNs7lFju0W&2w99u1t;v^9?|*1MP9f033C<*{kCj)HEZG(81HJ^W}@siQV^rh z{J&-{b#q|Y*w70dVF z!tlC~<6ScSy|V>4oPXS;IRc+x+g3caj-Juu2C^vu31l;`6NYE@p8y{Q(fkGNaap2C z#)?e(1h}QvavXmAR{o~fd30_jt^xw?gzy={;RW#bILa|R<$cL;xf>C{N8CY z&&8L+F-?d(nNr~9oES}EyC}YwxSMVasX_04AbG5T@43~fcRU!@REzuF4_X#C zB~jR%y1#kEO`#mfjO8nq-^{$Mj#S<;m$g=rshps>U3y@buIYw$clqy4udFbAR<&Cn zB{!l0X3^w5uE_H*p_kL9EGJ2x{eLrUfZbEIRZGz;5Sl0)DyTOJzbFV8F#oHgp7k#P zWU+=L0v@S0S3aYFB26tbts3hp1ZuLQ<$A*!=6EfiLbW9(s5h2l06O?L)9sO$#N@`t zoF6&4WO^#vgniy_||AY==-Sx z5x}K6u<4X9l8V>Maccy~ZY|XVQ|v!apaM1hg4RQOyb$3-pWtbY5{oad0^5fI^@N}i z!HrxNW5F|Bn?tL>xtDKq+HVKC51n4RrK<}zz7@wTvG1@yPQY?An3!Q2ugYvLsKWXb zihv8=0HFBt^h5#q=@s`>JZ)PYU%uQSx$B4H(44X_5i^DEa(@OKaTGzcCnr>Qa|O(e z8Ygwv{fZ*0YBAvDf$Dbon;CK~85QOJ8EnD&DDR%S%pOIw%g9YBf|uCy-HztV17Me( zL-2$bNgo(2Ds@F=l-N8Uhq6e$HmAkbj}2olx!;t+qv1Z%io0kWSA7A>rn^vmYZQ`E zx19aF-Ns3M2>G3IunX3NFt+6-0_B;*fnlmN8`(PGF~NKzUU+3COsURKZnHnqPwZ4Qst z-R)iw0%Fn~SW$wr?yN*khNj`zZ_`uFJEEy~`VU%ue?25LpE<+|&x; zYs^^)r_2mtP(doA0f6*f*b92cZ_}*y)U^AF(xhk_plf?%dIYs;#l=>?4@Ex+fV>QU zm5tdfkON*4Z8uer^8l5>mm%y(k(I(&pJGDGbV5YV75=H|?>RNQwVf1ay-vCUL?XW= zMk%z+SBR3y)4yyu9y`8FFxq9joN}*mB%_jh1A(|zmz58%^Uo3NPNL&TYOP$Ka+-(W<%`O)sSGHxV-^L^T0VfD zf#AN{nZa-QR+8?OqseP)x2grVx?t#lYY=jV+4x83TcE=D!_xov{ihRHAtNj&WMA;? zv?YL%*|i^MsqqeYS(4;c0`WIiMct7*FgDf zfj!{eQ$}cT2NCC00mZc>V8th>3kWMn_g`7a8-g5RoS_;lyI0%1O2&`h$#)6^k^i)e zej<-Q5Z!EeF?N#yyKO^3ZSKi_=_SQ1*|&zftfZd#2Y|_5$f_`)bV1w~?9g1IK$8tM zx10({yEXb@e&hm5KhefK|@?~;v%-34i2gKTiKQDOrgN7Ue z2V8^=A-mdaEo|ErFpm~BTVAtU1$y+d1GhQ8OsR~geDVV;vMV5Jne`O370$x6%U#!s zD?kq($eNeQr9Wo@+Mm$iCN294sujsKT^UzLdf*PV=FaM6Z$l(TrxD6oJV8r+@Z^%~ zcvlv*9g%m0(J9jGU-7K9n3`gfQ;*V?@-w)ovIK6!#`8hoL>kVqK;p^g;w=`b- z5KzC*+{gHg4?qlo!aKO5mLyUe?_)OLa2s+D%IF|=|B9X5te2o?R{$RE@kO-L8$bWx z0Pn|~dmL}@XxP`<1_07NrpSs=1l$W{lL-O{T?}G|Rx2#gcbyZY}GXBt-^TGJNC7`p0fSu1`^_OVGbnjdUje6vbaDk^+nWl+W+ zA7}C$YDmaw`MrJD$tSwwBgZW3Ef(Gx$g6bHlb;e^b?0~rm1$Y;`M{eGEd|7IcgYh! zep4TBvaWLsMS6=`XFJ;S4j6lcE!6=X2b_eK+aB-C+pKEggmSHW5|02lqs{Dz+^BHf z?MW;nLsT6#eEy3@SQ8HSJHWU66ZixZ0ekoh_cV?oo@S5<`n&w*I^Pc?qF^8}1OWAY zO;uijQ+!jLcb1VD(Um%uAZJmxL1=hMo_%RjtAw!}fabX@jC9Rh^4wLc@Spl}KZa|+ zv5RfIE}VUReMas*lF?z){D^&`ZzVA7I9hHG8VbEM;6-k3h`oHOzs>Iz))ar2IsbrC zXPaNd)GwY2;d*lgez<~#4m%KlXMljQ-kbYZT5Vp*jXkG=D$MF-Ydw7UaJV}^z~G T+zLLM)e6XG+Z*d)=pZd1ya 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

vBLoOb+Pk4}OI)qItA!PM~q zRJsfcqO)^l{$|cRfG%*wTxulD2hlratimQrKtjNL7;CWrXY5JCWNzC+ zfkrIY@2!hYV_tyGi&l~Am595eiMGR=XSufP9`t#~il4pwBg7Q3oQ%fSeFo3wQ4$^! zz}_KNzSVuYoHraN@N?@baP%j=EoC=7k!kx$r#2ysX+0?5R|9TCoksjfzz~>Ho=6QB_yGe1A3k=68-h&#Ak;kL$P2psy~eUcvf9hxh-@OD~gwCD3mW9xby z_V54H-qmOuqU4NLA2ay{Wg2a~gTkd(rqE8um6b#Ow8T~!NSXMX=DVD;G$%P%-aQlc zP@O8S3gpx0K3%KjXKr^s3Jn`vp#31PC z)kjj{S6l2VZdf=3_u9|&AKhe??5WwkkhL!vv1L7-xl_A}XHy=o$9i-+rk02um091L zHt&qR9AcSL`6Y!+IZ!qKvIA-%@kw`{`oy8+@%76QQxANK7h{ka`!T{?d6K0w=(q$1 zBrgnlrna8@#{I@f>cj}ICa>>z8Ou*MA36{%1vwG|(;yX=um}L#PS94{UcTLx z^^E!Iv?82umklQUAVx1fIqzd)j~ct^tKB!={*e2RZ7Sv!mcY|rb&&x|y^{}x<87I_ zMytR1ljM^duw{t<%dE+Tt88Qz!n!{d(1L@ zH{KDnji9)$1#xoy%9QgvrxTj#>dVGTk$S9B|CReh$Pwc@-q#Uq5YGl~VSvT`nz}NA zH||MoRxVJZ*m^KNkuKs|Bm@WF6H$}= za6w8!q3eW4`qHe@dM`COZ*IOeK`KFt%Eu+btBFa0zH!LZRN_Ae=fn}>@CgvlK@m43 z@w_gH=WPO(ws^39Qsf-J8`^`>$RAV>U5u^2Ii=A)dm8f*CK0a zS%OjJ{7IlS!18qdPt`&hSg#s`W-QUJ5GLL@J|b@MzRVlfMG6d#7E$Iz`X_&RO7d5K z`yt5&4x%?f$)AQ+nOW8z0YdM%A9wS|H3Je?2yrryCJ~3JLr|_V*di zwLAfUQfvZOrnG^IAnOsX7jCh2NsvqW0htJK-uf{gdBZo%;b@pS0856z@mI%+tK^PuUM^_$Nw`px<+foVs7X0ZwAII#95Z z4Sg*c{?I-jN#*8Ii=_;dPaG&?EENY9rEQtyl3bR2wJ%IaAymAFv1l=ZJv4kRe9JP zDjOhtdGJ-#vS1pY{{R|zJ0rt>`qHI?Z9jQ>tzt6EJ*L5hf(4 z!yPeF;aNrZ$DNRjeaY&4DXqE8)}@wSVIllMcrp>n%xFE`<7+RwzYww-UZa8IonL;m zU2k-u5)4}@`I(KAB6VwCpJd6KsM7q!OMiQL^N)+M88Fhu<5%xGgi||11+ltd02yqT zGBnH$pkH#mF?-}1p2pm0IwLk#k1)X8dwuq4JbEe}qhQT+I4FTPPXq`VqvB3apNI(S zh{&rU&6}wQwAk(wTI}Nd%`zvbAHGYpXJdkh6!P)CCo{n8h7cGf!aR znb6=aQ**hB(X!=-8jXSpfMN&6kg;k90$N0 zct|}0A9$5|^Xe6_F9W5X;Aeaq0REZIbj+j+She)OHgP)-Mk^q^v^&l?;^q>57?74? zzSfBxYYYofb>xOdG`hM-xQJ^l$(@aoNnoR``e?z_gQI;%1In=d2O)1@$nMt;F}hc&6fQV z8T4%J>BRQd&)2S2x2u#7vfPnitz#gXCV5rKqyt@M^J3?LC`i{JScCvBaKu>|F(#aN z&mfpl(|;&(Ke#W<`D1&W#bFQtV$8-iiTr)GR~u_8w-YO{-PWy=D-3vs>>^N{qG)uGa0t>sCAH|3Cj zpRn~HZvq2UDRpwd<;JxqC)1z_{kD>uh%aKH>w< z2^P-c;MNT)m7CIHa9w!`&dra(9AP?&T7XWKj0Mk_FXDIh3DTmE0;BD1>3oCjb*j@q z7{41fSxQjUNbXrld)En?FFMlCyhy6#0hIYt4q%rj0d_eUz&xj>E*klL1%F&YU&Tsi zts2@ujPrP=#mjG6Ms|OrBN_z`X58!%&@4H)2P{(}6J{jZ&Zl*`-)=ijMF1U57Fe5@;n+2&m{pUYE8yPAq2iN@o zme)hhvq7W)NORFM1NOnf-dm_`KqMnKb4N6OXHr6N!t>P3ux7pu~&Js@!7KvRcPESs5HDNGVtHO`wrbYu_dm&Th{>CHN~ zUfdrp*xIX7MUu4!O?TcPZMCZ`Hb%YC<9(nw{pkOXk@k<(0V6Fz0~cN1a%#YFeP@NR zVFKKL+`%rgxC(@so=61QTTcS+9r7K1>C|QP;gk59s$^+qeIC$X-CJZ7>3~-a}bw+&kV*Ja4XT+|NK>tz)!)1CMd6 z%f{NnnokOB3jnTM?5!cwl?XE9y#LcGdXtKkpTa7#> zwhDJCap^DC$(e8zUlb;qD4FgiUxnOFc++oC;u_>|xA&0&XW9atrGHSt=%7~qT1zex z>{>N#w|4svRqh5VP);W%P-q3r@^_#hoNMj2d!Xk%#N@-aALs8cgt0dv-KGYZj)){XOJ7Gi|IM2&49$bU7Yo- zvfg;@*zX$dVed+KHid;*3aFnIA`ILZ*;%ZkkKqO3*}m1#0ow9e3}%S`zJ7VE5?K671ctd}ur)p0 zaF$k31Bml{)p945?LQA-iqAbu(hC?_9z8w1Ziqci1XqgtB=}Fq%{|0vq*CGlmOHG82LP z>|U)|Q$P>-8ko&7k_s~SGLSM_dV^(+2mBnEG^%{{@?Q8;k^%_csJ+H}^j0rGLjlR4 zdBcPDP3(C=7BU=MLwskCv>d+}W3$|i_tS}_k5sGprc|Az1TW{LJT}!2z{G0|0pTO9 ze50~v*D&DD9^``KGnJd-)9TlrZkJooQA#=t-uo7Pfq`7#{JPO}j{L#)Hn2IqN4z+e z+-_f>j$8Ay8x@4J-h-wb+`~Xq4hTg8*OPx)Y&G>>q9RaRQ?US1B{F^ch6pVvi)Hm* zQ|xW!+@)2?)2FWZu!Z;i9_}^^SUe&;pSUK9^bWfnselyO(K6-f@!u*zCfM^p?WC(t zHD(*)vlb}H#G&91Plj%y3FHh&0QtX#{z=l`f?0k!SxVO1Ww#ShU^f;_V4)sw6R@*< z=7K;`qBykicCRV)sb5z?hL#Y2fIaAy-1hv^)p@b8bD7Vz<|;HJ7Vb^iu&ka~->k3J z77L#woJ7OsQ9N;%ZLRkuuK&lTZu!i(-Q~^>*JoYAnu9=RD<=YJ(>!SZ`0$=fw&urR~m1kq3{(tc*eNJ zD`4x6Nc@G2ae6DLsg2e2*bQ2gUz`w|C26iFDk3g5`;At9<6Kg83ji0Gp~2MG7}TrZ zWF_QKaczLg0cJQs%*YNL{HYYIEYxFiZB@%H3~2)4*#H9B=!z6H)nj(5JvlxDXyX+F z-_l>t-V&TS=QCQbQq~x7Eq!26u)yQ~{lSilJ`?QtuO|H4m*Zfl#gQ$C_t%V#Kv2Z^ zi%d3I*?XEOGfvGb$qlr)<#i7u}G_TyNFJ}v@ypW^ zo<;~31b2P9z!cO4cHZtKSH0t4<7@W*9n)L9?;niaU+Z~j0TT_>hkQTNTaMC0$jD5* z@&NR++BtSoQP<2?S`sm7Z?79p*J*p?=xZDpn|`EHCVOcjf}AlzI{6nZ2{AMNXxdDj zds*CPm#)rYLR%cRRcFpbV0u8pyWuMJxt?+D36Za;HFh_w$5~l3z5o7hWauQajcg>3 znd-~v(g!G{5YkV9_r783e)UZKKbxJUUDG2iQb3~f6EjeUTkN*zqP$BIlYH`hA?+Vx zkjOf;1zfg8ur|__-0+ffBW};5Idg!=YqVJ_QJj2x%wn4w&+$*y}H0wvSs*_`R(=a+Nf7~J7l3OzApHs?1t3H zB~M1Ss~a$8ssZO)R}$2hvGuJ(%%;|ywN1$HGuj__PZu$#8o_ro|l{@w=eJg!(JzV0@CS~3nT4-Hbc#5J`Mm~ z#R^ix7?A&CgZ9{S(~z(b+Y8?Vc8CukD-O&^gDUaVUPS57i1(>04L@SE^7v#clLmjB z+N2{!B-~YVu7Qj4By$*EPwX!2>>nmPWdeg9kQnp|xE{l(!om7Lb0BV2lY}n}=rd{k zPe^YQ0@b>{1jJ@^sz(q25%zHo{DQP0{os@vFMkQ-GrO<0UjcJP!ELX!#J>#W7yi2% zUx^pHG)VVD)MDx^o#88x>cY_^AWu>npJiNs(kVROUq*EqS+9RgBQ(UJa*~A`25K@B zWzG-dcV<1@(W@W)Df`DrwOl@K0L7McZ|p%<(mkXe2y6Yf}mZ2E+Vt*}YR#`ejD zo*1eLw@#l3UK%#R0Ih2cj~}zLn4<1WpnP<9fQQ!=z++TEvTm|t`fD3nJgFer2?1?I z=8FNyB5ZcbLVupBbP*%b+e->Y%3*ZezOhWNso?c)I2MYZw^o9+WKU67&T?7)$jm@4 zCq*Vu?V$y0ljq-&v&FmoV7ys-dKxQsv20?cweTuf)q#Bb_aD1JK5pC9UfL=?I zXUUDXUn7SzQ!9;+IaPu6pM$(c>*{UVzt(xf+#vQ0R_sbWvx{&DRsW)n6`ZlprWa$u zK)fmqozu5)Lq-YZ{1?=_VVGH zALG&amaHd6NmjpjY7?^=Sq6xuT0^PNaPF{j<$i-TY_<>TOiOEP6~HcoIm!*7Lf5of7BxNmGa@qVkU3?jYthwCrY(=nzIb!)Md z@)<&f;KP1UqiC=9-T`ZGPs_8In48Sg)-`Hz`n|Rx;6FM0Ah9mLqazx!vEg9#pVqp% zAR|cD5S1%L{H*ZV#`Jjs;QsCsxwvXtVAePw7U%C!YLBj=tDm4$;DI&uPOq#~v~epDT_#$2@Hdu*ALeoQfNMYFOto2rp}t_qTJkHAM*$b}i$ z^518F;+wjbcV=Tv!MMz=t7Ak{zjEXthbIX+nKI|x%UmynEgp#j6h%1a4xMHKF#!%c z;k=Yxq03#72uqjyQZS(L2Ff#=L00)g!ld?1-u=tfI^0(;1#El;77WJ=tuhxzo*rN` zYmaKt@y{fwA+y^k*DK83A#$i`CI^f8O8r_OagvY*$>>U#HIH?V4(qR`2r^&O!MZl&ywiWQS@sEVC-^yB*z(fx879`9h@0QKm5%8} zF3XdfZ<@FBu6I(gG-D<8@D*4ak16ccS`(F<@mAN-Sy@KD@X>0~^ZFIy87-~7KDB!_ zS3lrYDg6~+_OyC>vKC~+PNYg)U!+%tGAyvpLL6%nlnJVE*AkbmeS(pFI#%dE1<1{3 zN@h1!f85KCk9X5LB3wZ+v6L>r!Fn>&^b(c=L!uVpecVa2X>l(lW7kL!6?EPuADdS%pTBiGJ+=6GYH`@}o42Md z74|tOUrTy@hdbJMkYQn|q(j+>tU*_~$pA zc;e{ZJB4Q%Kb&BGA@g_x5*ddmCD)00+&AB7)b*k>i><-FpV?qh(pl(2@uN1& z^$V3q+(HN<6f=#8p)s>7I1M#XPom^}5brB)9L@-s=?P?Kn9yEZQ&O7U(UM^*t%dj1XeY5%~8{4rDTV(eDYBkPYs{*ow;MvK#8E0!m zLi^gh5s8d+))l-q;cU`z1x8u##jJ0N$!)`g$toIhyg#|8!9~Dug_M}~yI=J-*VmXH zHsO5Sn5y<7#n39caRq6xO&rZAB;quhp4ppU!rTmOT%z>mmFRB;+l8@Ug;>F0e&5uB zHNJ-sW4QXtedr!1E+~y$DLcy0sXYX!q*#Cgly>XQm+)OYX+yl(_(1Y`{UEox@w@bn zh5FE;|0I4fS9Vm%1OkLWe}hKIu>!Hse|u#rShQ9Kdl`BS3~phzoW5{{4DkvF(rODs zWc(RN04V88G^YTQm^6|LAqnO(dqSsXRQ63iOs8Y>xH)b>DAo*Fp&oC?@!JC(HRBV(c26U+c|cI zFY0@rfGx_#wrUSlXJZ>=Lqk_Eh=IlA<5};fHx_gE(|TFqK}&+m(6AF2>lxJ6COy6& z#&2!vRJZk5Ez1HE?B#68E100UsytZ5SYH4?q^mA34JzA{>E&W%s5QOvF;mHtH9S@A z&dZMG#*I?tdoaM|9CiU5V*8I5v6WYrwN}J+;;XUT=7^1?Q?SyUd943lo zO-W1NOK?443fDJA&R`1oIAfxTKFLKANA!kvO6M*or)0qvovgUde_&j6`qtMf>B% z#nO2V9)frwt=D(i+MW6e%>@T70!>>b(^4O9kO)t<($!jhRo3~AaKX^;#%#8D7A<|N zH@`=c*7K>$b=2pBrS?NLaQ4OpZkR>?x6hiAVgWA9een~Wuvz<1_`kgBVhgQH51n%_ z&2(e944gGYox#|xwe@hA0+=Nwt+EMA>|gMeO;_lVP2Yr?f{QZdF6n|HXEf~zFJ1nV zdt3>>-CMzF(ubbUQXxWb9g3*;m{6e!A&AuG#N~gW#f$DU(sPDD^M>}?1Td;M@Eyl1 z3^GT>WKU|^D$o1Iqzk~$;OqKy<#D&f`iHySw74sUb=>>_-(f8+#A6{UD(8w4`0;}N zZishxX33B|HRv$F5OjNv6i-FF#4=E_2S5)m)laD~83BiNFaq`W`wnqo`RnwdkRaYf zot9wysAqPkqlM`M=#n<)w@A{VJeP(?aQe(>%mg@X&FjXC>s}({BMm#<#3V;*vM+t? z8De8{WA@O$LLj)p-ctA`G?;(q&7(Kb3D_8x>^UjtFrU@T01`NiT#+mSif%*pYZ+Hz>Sj-Atrm=0_DPF zQ-SKXrIb?`8vJUB80+@0rUmkQL!jnaLJG(K2dgMZ8n;zDXzwofW}E$`3Rdpr6F|6vb-|F!-$GCR;kS?C>9&TL^`h^8 zD2{@-YKQ|@9|g11hx>uGV^5E#f%x|s&nCYn>?k}Z<(m~T+s^JYJKj(Aj_~2XCd~2* zx8N$fpgCPkM4~X$Vr^o0IDu0aB3%$*L%RM=VFmV0wfFiU=f3U^S{W9FVz@+%zB9q{ z7_&Yw=f146#wz5pA~GH10}Zf+s18JNu+{~8<@Hpbo0?_z;HAw|S$BsL!5quq16O_A zg5nkEQ$k%=t$#Jb>u*!Lvau_ZTzB%qAb6BvFt(tUu=BW)*Sd#cNSJe@>-CV{c(}LZ zv!~1vc7j9%cZ?L@312SV6uywql!_&soqig3ak8T2Xmq; zuwzpF4PK`GB*S=L=>oTs+5(N2OBV9brEW+mjy0O4E)+cho^W-K8zr~nYJ489T<)w5 zRrhgbce>fS{2lVgUtDbQiZd1kl1`4a^w0crDcja#paCE9H&M_LvB=u;jZqW zO-5>_JE7M~J5W79kS6gm&_qhiGjyzCd+<3mg{G21Insv(-GxS(accb5O}40M?T`ti zJ%s>Q1CME7@cep{%h1q=OytNS%L=jd*2w?Me0wS9EUbr zPAGZ?u#v<~f3Z=cklm<6vnhk?9=zbTGWBB(so%>_y+@N0-QBuT1@cA)xJeSE&wvwB zj+A)lDMj2dtE7=G8&;3v#2wlJY3Jq2hMd?1okqz_Gkxy%g(kFSWA##BtWHatljXjIK;Gcgf&sX9wv1 zxj5f*^7_6Gm2rFG+?>;tyKO$Dj)OpU`B$g0HD1%@d|nG*%jM*s1RY|n)fR~p!hJnV zm>{66!192c&?+BXwCGxJY4DX?SjsC2f6*h0~|b-g?NmwV0K(mf~ee*50gDh zZKy)R(@x`hjJFfVqXaAoiuw``XhIhFQo_v0&k`qZo~gO0L!&`Q!KF>16{HJ|^4fX~n+j!$bEMklQD3@ktM#*UIbd)`wxzU~#XY{n>6i3oD&G8T3Voc@Y ztn%pkEqbow*|MQ0@UXdiSZg%z4nLy?OJ-I8U2;3d4baM<3BV3|AftiRZwukOD9@3l zQd(9i^lS*cSq)W|PsyB+BJ2BtI%==0!wyl~2U5?IqQkQ`y#Dj)nh$^DZ!e!z=rPb%bWAnK*n`5LMAc?du zn#As%HH8tKfRxj@5Yc&wUYNnSFl5aHa)qcky4QGIUih|XK8!I%fLQ0LKqG^Q^(OS! zCTw&xt4||~VNoJo2vAhuy$JhJ?O^4JK=E0A+q!-KHK5WZ7P;hHa)o3$HyoW>rFuG!JmFa@Lapv z`kAdoZVO1PjZ$Xh@|TP>AQL_?$no;xlXI;R&)`EBy&{H0Ag5+pc1^Rc8^#;&DO|fs z1kWLb>jgl&eI)-lBUE^AU$qaXsCqN{_;FKcs*^MIg520lun@llBM+#(&W;nwP#EfnB2qLp+mc+cmjF^oiK!L7Ru4eaRzAKXl=$Iw!+P&a z63KQp(XkO?crf##BhK^nVTFQ2=K0p--@_SqIxe4Ugr24@qGmQ2%Kf@jiys|b3 zin48jqg}d_s%JLQv|L=${4l|_Df7H@J$u$GL(-3wPb8?fVotQMdzzl`929KZuck(php=URL&;y;*R9;#j8DOcRh?#wK3QAFsK2b1@rX0@>a6 z;WyAPCrO5@XenlLv%x>0R1tis1~+3z(FZPPuxX9=CVz8vO28^CpMa)Sx7qMD+NK0zH`1mE3%`<=O3A_v#Pnn-7 zLF`7`hY5-hAB$G}YDYEW!SZHn*2AlN3arQL)zAXw6eFy$|Ft-WaPoC;*F ziUQX>U?Or*$xrdG@{xAPI&0|e({$t~Q8lBWg7eHi>nt)-2>LZOMP%4oM&O(7 z9kiFvmL-$Kh?iuTYUbYxX$F@5wNGhKCqnU&yo5l??7P>rctixfZ>Zmh6=@K5z*rxQ zI5%Er*Ng)N@yRKf+k1^Ib+)9AXT4^3xZma9*qAQbfjqxZemdL^SStd85W$> zVCE2G{Ba?_Q_XWE&ga4Bz#svGzSiKGMmFPgV?!ZN;XH(k%<5_KUF#UqO2?oW2V}7Syjq4Nx#keF85@A+Z+8r z30x#0%`t(3JBIG(K`G^n0=a4^@(^<@$qD056NVi0YhAy}C$M-Ka^bdG2ErQ94(&DS z$Dpq(w}`mb$5|B{lH4yDvl8b^#KBZxlz~FxE~^mERMim7DlIEq1?-%nJ4&Xs18$I! z8K+k@PtQIc+zLSgDeE;>64-M%r=Z7=bnZ3wHW)bs-d1CC*@2rx8!ObfOU@IP(7iRp z0IoS1HF^807Wa<0prZmSe}j>Y;Zv_j_EQt}D(JPc1ctDwDVN3;x%a!5p;XaeK%$ka z*qu&9;BOyxL=SyEkGFd$soigNYU%f@gXoJLwYTFzoXyMzeSE_ZsF~0GY4&M~7tPji zU`#pl1jGB{?^y%3XZ;MN5g;c!SA6H?;t@qe4tg@Fhb*5*#To zN?Dwx8@ivtH1c~y9Pjx^yA+9$w)F9Wb{#{*;xLb~MJ|VvsWifKOnmfb7J3!hI29!{ zb4IH1x4i6XgY6C7-7t*|N;c<-y1a=2SUAo-<1B=5z^LAM6_+02lS^aJ zYxDg46ljfq=!JEtXmK=XSiPjJVj4AvUWN&w30iZEd@PhD)E|Y zz8|xH4jRu6nw;9R&AChnZsl0q7H9nP2*^4FYvy^( ztKds^wc&wFEEPnMupn?wamR>2^}eKogExDs3J2G51y$DgOfV{0<7-PnN9t!a+=-$tVcotde!hV{ckgnTdW%4GDB^IDMYFJ{sR+Yp2wX_=p~W9JBlj%u@_C4#d1IanlH&QxMEz}b zHp_!Q9#m-hubdH6*yvuQ!W#)t%9}vpavHg~sWy*PYaFl|G>02{D_JPb*G(8@^~CS@@Ey~x)ewj*E zsE(dIPJ69VxJj*OU3V~KuOQO}{#eko5Z@87u*|bNdhr?fh?zdmazElLlaDUr*`dhR zsy;uyjo(4SzpUfT%#MlRA@46TKGF@>Q&TyONfPO5PZ9WW2|9+2KExCE=J6Ru#473z z^S^Ry&&7M~zyB*gIIh2*ivIpbwE0NNqZbwj$5Q~~kdkJvw6!@@>mky}I9$V4tv>}eRemD{1RsAor# z4AbBH4j(y*GqU9H`lGW)%%GHrh0t*Ct!|D~9n{Nc>GNmK0c^x9QE|E@MzqX>6eut7_FubaaOV}y^stdmxu|yH6z`Zv1|stac4R| zmsKDLZcY#_N|A0U20iR7uL=S`gHjmU8@bseMGnF#bl~d}^EM@KUv)c!4$)$)cKO3U zYC^o7xq`#ypGJ{iZTJIGoAdSW3A&=GkadH9?#@(t#O5D62$^^jn747c)2A?y0o`^ zeKXnFep5FYtN2Jn>$q`P>A|VHtU}3D>yuxXuC ziAzAKm-g0e*>#pzY>me7l=#z~Q8fHLz!1HVs3YOvE1O>=f0|-{wa?#lz*6tupL*$u z%i`Kx8g)EeQ`lc8ZTSpDY$xGgb8mji8T|f!&LI0fX0t`a=~TqD_SX}>3)yPnY;-$Y z!CL3%JQq6PSD&JM=N2gZ#!iBCJL*o)fPj2}2g{Ugd)MNZn0H_D$;=Z|oqijSep|1+ z059=gkVtcF-&U50Or}wyXkAT;jNBX)Mc*Yr&Xk&bHn;D7&iL@R4H$o)Sol`d)+>`h zQg1k8UZXIeJn}RuGiN-&1D#n~p1UO%GbD`mlFloq2Azmw7^I@Jl+AZbvTdTWZp)|E z`q$t8^~|C07oYYuAG_hFB6Ngf_K*T+{-B5>b_lw?by#2Yd5!e(YH1Z9iKpdo$H$q^ zUdAAenBaXpgN3E!TjTmX*)yfRCF^0y&X<~ri}qt~J;{J1>7bO0X#e{b z)%#(`&QGmp{)hR#T-r2D!BRYHFX%_&Z&N=W{+7OB^3gEw!bijU$Mh{0HyU7!^xv&$;G0ehJtj!Uh>DK} zsVgMfOTX5qa6||Ne1nsje(Ws_ZA{SL+OU4zj@LHD`IxyyPf`vt15Re1_>uGHy~ZCs zz^)i>2)@FAqZGNYY$8k4_e@Z5CHBNq?BUV4Z)WYdr850l4m=^prpqRe+IY)?o8mA> zI*G&%F31SEsXJ&*5SZ0i2&@~AFu%x?Bzk4@^BR9PG{lhp>jO|Oq2lvl#$n3nbtx(G zLNe^Emb=2|lF%{ge`DrLfes?ZWQQ7k=31H~|?Qba< zs9W~16TO?_m{F0Bdzx-x_^oBb`lW+^f6!38?w_MkHk>62C%mZ^btrib*@`yLB_>(@ zKb!7$I1Z;^?ga&l!Y(+r-v*C4EF^XcY03EYyL@ChXsljlJ1`M_VM7cHXS@rBzXXxa z^8=4@pfTjBYBaBpv6i5$Ht|0_*7oqHQ_6L=>>mTBWG~Agl{tFXz)`$XBpMT9``vg7 z=aPL5o{EG%QU&Yobcp5nK}X?-q8Y!4tvlf!i)Tl5laQ^-MPdIlBmLKw-g8Sr}f^-Ycu#fY!S;U%L9XK zDxyd!!k7-Fos=y^QDi6kSUU<4+C<6LCS*(Ytr|=zX0m3_NcLqI1~bNcKcjV?aZcy| zJHPAyzVG#Oo$H))JeJ>sh$o((xeIhw`dakMgvr?|HbD8ZdaV!Hku zm$~cc$!Wur%ZDrTHV9XWG0nI?aW}tf{gzZ#!j1@ms)vk#;mf*?h+=|Beyy@YR>Fco z7yMfti}k0yleRy1XnLrp(KeSXbqk+YO!JmXR+3y9f!kC$9eeOl=~pQGE=%y7__an2 zkv#*Aws#$E zBAR2s^q!G_mRRQCh~N&05XI?Q!%?mgBc3m&`OL#N`F5lgm`*>zxmh_+O(#)tr}j;^ zf)jrqntVb3?~`M2{;gL-j-McvsLQrrRod8i7WDkOltRq(JUqaU6-Se9Tl!YFC7vYl zmwR`4fR8rZ(P8!8Rhr!B_nKhi$9(q)AUD(;vi>yz>*ZR{`zEoyh2Q>_@Qsu_O*ulY zJoIigk0)zIy72^`Cvb+gzx!#k(Cl9@h?)=f45@FH`sU3FW=rZ+u}JJZ?q&#Euq3Xhg1_YayYh%(!!)lrqQwq1_#kKgoE!o;LRtcBy@n7Ff*ST53x6Yi!II#EN+BVRUv|FuNP zDtzIDN@}(z+NtN(Gw1K5`0xB{m*d^Yy}UZp4q(UFvTMLyFvv>?yvM)Ied@&vOI&#d z$ShuR#r`@Z85Vlp|2LAdqA>T!K1ag{+?)Ct;H%k7pyQf+?5yM~j{1l?rRN)YTwJHV zE;t>0>*t$nF5vOpB4Q271N|#Sd4ii~1B?$`U$qUQNd};aDq+~-0>6NSXr$63uM$b@ zvhqx=!WVzOkuE;pA2pVz%DL_4NQY(o>6}V-cOXP>MYtmZ`4oluvIWf~;_kPdQrB`c z8lc+t{$Zv2*RFArVZm^7bfSt7k7%=`ub-sdo3?$xXM=WyZy6+DZT#)K&781HyT_~Q z32Mq3oWeXf-jNr#i)2zGe0NHQA9$wgBa+2+=ouInIlQ-cCD7EXVb0i5> ziY;~`WgQxrQnf4V?Bw7`veRy){@v@4hG2D;TB+|4bz?M`YdM-35sFviY4)%}U9XmW5mZm7FQn6k8UDBOAySswz)-3SCcP5No1YLohPTeAIOdG_KX~{R!xoT}fJ)J0R>JBM zB_eaiC7Nl(_mbJ|Zqn#qbyf68ow= zW2AR3jqP_)IU1z)RXw3`8w~7akT0{_Z&~M1lJmB>c}|z)XBIS7Z?Uw5HxT_0>=h&s z)ee&IV~uZ0cjZjv7`4VC~6EqlVye7O<68p$(JS;cxo>XVgtF&~vp9f{|1oDLZn ze1+dH4E#}e%7l51P)W^z;uX)Pc8>8}O$Esat*WD z-6IZ=vW}CoT{}j8B+%&#gKdTKLoK=XL^O}W4MmTk?8c{*U2Tda{@Q^uv%~4!;j+aV z$`$1Q?u8rW7*KBgE*vi$L#Q$2TDE?cE594LrF>L%IBK3ld$U5dZ*m9`*-z%11y_z7 zuzRL@T@DTTOb?aFTU&OxY74atd+n7iI4Z=4Pf!kUfDHP`@x-yNn{mFf8ykl$qK$Ma z_=)*^I3Dcp-JJ!lVoo|hZ2G?D2u@!RQg(NMC{p|1T{n!nHy)uEU7YG*s5eyPuQ6RE z$|I?=Li?=W+DhT=hTTZ(o{(U+PgK&xF1^)e621ynIa)y%N{Wx; zbf=$#-UvHJcZnM)rcGDkK2`ITzKHOX;6&est}b?`EFBdUH;n@|tq?xnYA2{oTZFkbPN#|?wT8V&+YdQ< z(!AbbJg2AcR^zwCNFw)_A&g~9u6oimbUf1Ujb-f7Qnnj@e=ixBX1TA9!WXsPjsKbh zFnB_gZ`GasaCG|p2y>(j) zevOV)T$V(|=y_aDN~I@nc8SS5oAmqr`5U%`!pz9`^h=pKb&Pa6e(Je4>5mLoz&Rb2 zI>?TOg;RUNHt~t>SB&WjF}vS@+#Z4Fjj(@HkMWvz!8i2zJU?_@8*H(>E;p+-t5X0l zF>zR_#bvC|cwc1Pp@AJ9`AxA-H09sLxMHgH=+hg*q&jrdCVK8Bi@C%EQ!*4Rw3Itq zGl!CAjQ4i`5hCGsIKOsR?t|g4!S0vhAp(W{5^`8(O3vl9)@~V&RkM5AaEGq1f{K@N-ml^hLjGxi{j?&g;@8Ta)bpO!-4`x2rA@b>MpDxB zRd!Sy710Jp&rYVpA_pfq_hdUC)&}x^he)NsKWyq!bWt49@sN{gj|09O5WA|cPAjV! z%1R;y%Q*6g{(tC54s*NAI2`jDO;V6nd2mzdQTCWq^4Nfy@Ewe;}VhOjx^%EFoX9v-{`fC&rqD9kvZ(0{$X&aVAR@M7j=;YN?e|h}zu^9&?v;TG`v!*YWAU0wls@{c zcA`&KoBX2nio%8#;6r;pjv%5l5C7RW7I^Noxg#L=Ds+dlWPngGRXtT~Wu(`{!13IZ zZbMbIb}7d^p0BOm(IUIoNtR5&#JR_v$3-Z`T;n`Ya~o38?^6=2D4kFUiChII2-Q3$ zqckD{R}qcM8#!hsHM~*5;QW)u_NE;EP>DEs$?&6lNcyB~{?kF!vaNf)P;?Jq6*Pq9 z`P7hF$~|MVrZ)H7Y4`Zug1UlnCZ%>}lSbDc4RmGDDg0>1cPHL7|d+s+B^e|(Hn z@Frf%tJuZpbdG6Wf>--Je!W-1COl$DSxGIGv*I& zxrVG$Yu}^nnQpd=%c@JadcL&@U5-Y}<{Z77$bTY;bctxK0|is7d!!-PH;Zz4Wq>

33%^%C6J&?w;TA*&<*> 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 Date: Wed, 7 Feb 2024 12:54:56 +0100 Subject: [PATCH 17/17] adding ssh instructions --- docs/ssh_tunelling_access_workspace_vnet.md | 6 +++--- docs/tutorial/02-Infra deployment.md | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/ssh_tunelling_access_workspace_vnet.md b/docs/ssh_tunelling_access_workspace_vnet.md index 19ee0ae9f..05e52d8bd 100644 --- a/docs/ssh_tunelling_access_workspace_vnet.md +++ b/docs/ssh_tunelling_access_workspace_vnet.md @@ -1,13 +1,13 @@ -# Access the MLOps dev environment behind a VNET using SSH tunneling +# Access the LLMOps environment behind a VNET using SSH tunneling -If you deploy the MLOps dev environment with ```enableNetworkIsolation=true```, you can not access the resources behind the VNET. +If you deploy an environment with ```enableNetworkIsolation=true```, you can not access the resources behind the VNET. Hence, we use SSH tunneling. You have access to a virtual machine that will serve as a jumpbox. Here are the step to proceed: 1. Get the private key to access the jumpbox via ssh generated during deployment from the Keyvault -1. Navigate to the `~/.ssh` directory, and paste your clipboard into a new file: +1. Navigate to the `~/ssh` directory, and paste your clipboard into a new file: ```bash /> vi jumpbox diff --git a/docs/tutorial/02-Infra deployment.md b/docs/tutorial/02-Infra deployment.md index e112aa3c7..391699b87 100644 --- a/docs/tutorial/02-Infra deployment.md +++ b/docs/tutorial/02-Infra deployment.md @@ -76,3 +76,7 @@ bash ./deploy-infra.sh -e PROD -r ProdResourceGroup -i true" ```bash bash ./deploy-infra.sh -e PROD -r PRODResourceGroup -i true -a 1234abcd-123a-1234-abcd-123456abcdef -p password -t 1234abcd-123a-1234-abcd-123456abcdef -s 1234abcd-123a-1234-abcd-123456abcdef" ``` + +### Connect to network-isolated AML workspace + +In the above process, an SSH key-pair was generated in the ssh folder. You can use the private key to connect to the Linux VM and access the Azure Machine Learning workspace. The steps are detailed in the [Access the LLMOPs environment behind a VNET using SSH tunneling](./ssh_tunelling_access_workspace_vnet.md) tutorial.