text:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Glyssen.Shared;
using Glyssen.Shared.Bundle;
using Glyssen.Utilities;
using GlyssenEngine;
using GlyssenEngine.Bundle;
using GlyssenEngine.Paratext;
using GlyssenEngine.Script;
using GlyssenEngine.Utilities;
using GlyssenEngine.ViewModels;
using GlyssenFileBasedPersistence;
using L10NSharp;
using SIL.Extensions;
using SIL.IO;
using SIL.Reporting;
using SIL.Windows.Forms.WritingSystems;
using static System.String;
using Analytics = DesktopAnalytics.Analytics;
using BlockNavigatorViewModel = GlyssenEngine.ViewModels.BlockNavigatorViewModel<System.Drawing.Font>;

namespace Glyssen.Dialogs
{
	public partial class ProjectSettingsDlg : FormWithPersistedSettings, ILocalizable
	{
		private ProjectSettingsViewModel m_model;
		private WritingSystemSetupModel m_wsViewModel;

		private class ChapterAnnouncementItem
		{
			private string UiString { get; }
			public ChapterAnnouncement ChapterAnnouncement { get; }

			public ChapterAnnouncementItem(string uiString, ChapterAnnouncement chapterAnnouncement)
			{
				UiString = uiString;
				ChapterAnnouncement = chapterAnnouncement;
			}

			public override string ToString()
			{
				return UiString;
			}
		}

		public ProjectSettingsDlg(ProjectSettingsViewModel model, WritingSystemSetupModel wsViewModel)
		{
			InitializeComponent();

			m_txtRecordingProjectName.MaxLength = model.Project.MaxProjectNameLength;

			for (int i = 0; i < m_cboBookMarker.Items.Count; i++)
			{
				var chapterAnnouncement = (ChapterAnnouncement)i;
				m_cboBookMarker.Items[i] = new ChapterAnnouncementItem(LocalizationManager.GetDynamicString(GlyssenInfo.ApplicationId,
					"DialogBoxes.ProjectSettingsDlg.ChapterAnnouncementTab.BookMarkerComboBox.Items." + chapterAnnouncement,
					m_cboBookMarker.Items[i].ToString()), chapterAnnouncement);
			}

			IReadOnlyList<BookScript> books = model.Project.IncludedBooks.Any() ? model.Project.IncludedBooks : model.Project.Books;
			if (books.All(book => IsNullOrEmpty(book.PageHeader)))
				RemoveItemFromBookMarkerCombo(ChapterAnnouncement.PageHeader);
			if (books.All(book => IsNullOrEmpty(book.MainTitle)))
				RemoveItemFromBookMarkerCombo(ChapterAnnouncement.MainTitle1);

			SetViewModel(model, wsViewModel);
			Program.RegisterLocalizable(this);
			HandleStringsLocalized();
		}

		public void HandleStringsLocalized()
		{
			LoadReferenceTextOptions();
			LoadProjectDramatizationOptions();
			UpdateQuotePageDisplay();

			var fmt = m_linkLblChangeOmittedChapterAnnouncements.Text;
			var linkStartPos = fmt.IndexOf("{0}", StringComparison.OrdinalIgnoreCase);
			m_linkLblChangeOmittedChapterAnnouncements.Text = Format(fmt, m_tabPageScriptOptions.Text);
			if (linkStartPos >= 0 && m_tabPageScriptOptions.Text.Length > 0)
				m_linkLblChangeOmittedChapterAnnouncements.LinkArea = new LinkArea(linkStartPos, m_tabPageScriptOptions.Text.Length);
			else
				m_linkLblChangeOmittedChapterAnnouncements.LinkArea = default;
			if (m_model.IsLiveParatextProject)
				m_lblOriginalSource.Text = Format(LocalizationManager.GetString(
					"DialogBoxes.ProjectSettingsDlg.SourceLabelForParatextProject", "{0} project:", "\"Paratext\" (product name)"),
					ParatextScrTextWrapper.kParatextProgramName);
		}

		protected override void OnShown(EventArgs e)
		{
			base.OnShown(e);
			var project = m_model.Project;
			if (IsHandleCreated && m_model.IsLiveParatextProject &&
				(project.QuoteSystemStatus & QuoteSystemStatus.ParseReady) != 0)
			{
				var paratextProj = project.GetParatextScrTextWrapper();
				if (paratextProj != null && paratextProj.QuotationMarks.Any() &&
					!project.WritingSystem.QuotationMarks.SequenceEqual(project.GetQuotationMarksWithFullySpecifiedContinuers(paratextProj.QuotationMarks)))
				{
					string msg = Format(LocalizationManager.GetString("Project.ParatextQuoteSystemChanged",
							"The quotation mark settings in {0} project {1} no longer match the settings in this {2} project. To update " +
							"this project to match the {0} project settings (and get the latest versions of the text), click {3}.",
							"Param 0: \"Paratext\" (product name); " +
							"Param 1: Paratext project short name (unique project identifier); " +
							"Param 2: \"Glyssen\" (product name); " +
							"Param 3: localized name of the \"Update\" button"),
						ParatextScrTextWrapper.kParatextProgramName,
						m_model.ParatextProjectName,
						GlyssenInfo.Product,
						LocalizedUpdateButtonName);
					MessageBox.Show(this, msg, Text, MessageBoxButtons.OK);
				}
			}
		}

		private void LoadProjectDramatizationOptions()
		{
			var optionList = new List<KeyValuePair<ExtraBiblicalMaterialSpeakerOption, string>>
			{
				new KeyValuePair<ExtraBiblicalMaterialSpeakerOption, string>(ExtraBiblicalMaterialSpeakerOption.Narrator,
					LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.ExtraBiblicalSpeakerOption.Narrator", "Narrator")),
				new KeyValuePair<ExtraBiblicalMaterialSpeakerOption, string>(ExtraBiblicalMaterialSpeakerOption.MaleActor,
					LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.ExtraBiblicalSpeakerOption.MaleActor", "Male Actor")),
				new KeyValuePair<ExtraBiblicalMaterialSpeakerOption, string>(ExtraBiblicalMaterialSpeakerOption.FemaleActor,
					LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.ExtraBiblicalSpeakerOption.FemaleActor", "Female Actor")),
				new KeyValuePair<ExtraBiblicalMaterialSpeakerOption, string>(ExtraBiblicalMaterialSpeakerOption.ActorOfEitherGender,
					LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.ExtraBiblicalSpeakerOption.EitherGender", "Either Gender")),
				new KeyValuePair<ExtraBiblicalMaterialSpeakerOption, string>(ExtraBiblicalMaterialSpeakerOption.Omitted,
					LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.ExtraBiblicalSpeakerOption.Omitted", "Omitted"))
			};

			m_bookIntro.DataSource = new BindingSource(optionList, null);
			m_bookIntro.DisplayMember = "Value";
			m_bookIntro.ValueMember = "Key";

			m_sectionHeadings.DataSource = new BindingSource(optionList, null);
			m_sectionHeadings.DisplayMember = "Value";
			m_sectionHeadings.ValueMember = "Key";

			m_titleChapters.DataSource = new BindingSource(optionList, null);
			m_titleChapters.DisplayMember = "Value";
			m_titleChapters.ValueMember = "Key";
		}

		private void LoadReferenceTextOptions()
		{
			// Saving the selection (if any) here is required to deal with the (rare) case where
			// the user does on-the-fly localization. When there is an existing selection that
			// differs from the one that was set when we came into this dialog and we reset the
			// data source, the selection gets lost. So we need to remember which one was selected
			// and restore it below.
			var currentSelection = SelectedReferenceText;
			var dataSource = new Dictionary<string, ReferenceTextProxy>();
			foreach (var refTextId in ReferenceTextProxy.AllAvailable)
			{
				string key;
				if (refTextId.Type == ReferenceTextType.Custom)
				{
					var fmt = (refTextId.Missing) ?
						LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.MissingReferenceText", "Missing: {0}") :
						LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.CustomReferenceText", "Custom: {0}");
					key = Format(fmt, refTextId.CustomIdentifier);
				}
				else
				{
					key = refTextId.Type.ToString();
				}

				dataSource.Add(key, refTextId);
			}
			m_ReferenceText.DataSource = new BindingSource(dataSource, null);
			m_ReferenceText.ValueMember = "Value";
			m_ReferenceText.DisplayMember = "Key";

			SelectCurrentReferenceText(currentSelection ?? m_model.Project.ReferenceTextProxy);
		}

		private void ProjectSettingsDlg_Load(object sender, EventArgs e)
		{
			TileFormLocation();
		}

		private void RemoveItemFromBookMarkerCombo(ChapterAnnouncement chapterAnnouncement)
		{
			var i = GetIndexOfItemFromBookMarkerCombo(chapterAnnouncement);
			if (i != -1)
				m_cboBookMarker.Items.RemoveAt(i);
		}

		private int GetIndexOfItemFromBookMarkerCombo(ChapterAnnouncement chapterAnnouncement)
		{
			for (int i = 0; i < m_cboBookMarker.Items.Count; i++)
			{
				if (((ChapterAnnouncementItem)m_cboBookMarker.Items[i]).ChapterAnnouncement == chapterAnnouncement)
					return i;
			}
			return -1;
		}

		public GlyssenBundle UpdatedBundle { get; private set; }
		internal ParatextScrTextWrapper UpdatedParatextProject { get; private set; }

		public string ReferenceTextTabPageName => m_tabPageReferenceTexts.Text;

		private void SetViewModel(ProjectSettingsViewModel projectSettingsViewModel, WritingSystemSetupModel wsViewModel)
		{
			m_model = projectSettingsViewModel;
			m_wsViewModel = wsViewModel;
			RecordingProjectName = m_model.RecordingProjectName;
			AudioStockNumber = m_model.AudioStockNumber;
			m_txtOriginalSource.Text = m_model.IsLiveParatextProject ? m_model.ParatextProjectName : m_model.BundlePath;
			LanguageName = m_model.LanguageName;
			IsoCode = m_model.IsoCode;
			PublicationName = m_model.PublicationName;
			PublicationId = m_model.PublicationId;
			m_txtVersification.Text = m_model.Versification.Name;
			m_lblQuoteMarkSummary.Text = m_model.Project.QuoteSystem.ShortSummary;

			m_wsFontControl.BindToModel(wsViewModel);

			if (!IsNullOrWhiteSpace(m_model.SampleText))
				m_wsFontControl.TestAreaText = m_model.SampleText;

			// PG-433, 07 JAN 2016, PH: Disable some UI if project file is not writable
			var enableControls = m_model.Project.ProjectIsWritable;
			m_btnUpdateFromSource.Enabled =
				m_txtRecordingProjectName.Enabled =
					m_txtAudioStockNumber.Enabled = enableControls && !m_model.Project.IsSampleProject;
			m_btnQuoteMarkSettings.Enabled = enableControls;
			m_btnOk.Enabled = enableControls;
			m_wsFontControl.Enabled = enableControls;
			var i = GetIndexOfItemFromBookMarkerCombo(m_model.ChapterAnnouncementStyle);
			if (m_model.ChapterAnnouncementStyle == ChapterAnnouncement.ChapterLabel || i < 0)
			{
				m_rdoChapterLabel.Checked = true;
				m_cboBookMarker.SelectedIndex = 0;
			}
			else
				m_cboBookMarker.SelectedIndex = i;

			m_chkChapterOneAnnouncements.Checked = !m_model.SkipChapterAnnouncementForFirstChapter;
			m_chkAnnounceChaptersForSingleChapterBooks.Checked = !m_model.SkipChapterAnnouncementForSingleChapterBooks;

			SelectCurrentReferenceText(m_model.Project.ReferenceTextProxy);

			m_bookIntro.SelectedValue = m_model.Project.DramatizationPreferences.BookIntroductionsDramatization;
			m_sectionHeadings.SelectedValue = m_model.Project.DramatizationPreferences.SectionHeadDramatization;
			m_titleChapters.SelectedValue = m_model.Project.DramatizationPreferences.BookTitleAndChapterDramatization;
		}

		private void SelectCurrentReferenceText(ReferenceTextProxy currentReferenceText)
		{
			foreach (KeyValuePair<string, ReferenceTextProxy> kvp in m_ReferenceText.Items)
			{
				if (kvp.Value == currentReferenceText)
				{
					m_ReferenceText.SelectedItem = kvp;
					break;
				}
			}
		}

		private string RecordingProjectName
        {
            get => m_txtRecordingProjectName.Text.Trim();
			set => m_txtRecordingProjectName.Text = value.Trim();
		}

        private string AudioStockNumber
        {
            get => m_txtAudioStockNumber.Text.Trim();
			set => m_txtAudioStockNumber.Text = value;
		}

		private string LanguageName
		{
			set => m_txtLanguageName.Text = value ?? Empty;
		}

		private string IsoCode
		{
			get => (IsNullOrWhiteSpace(m_txtIso639_2_Code.Text)) ? "zzz" : m_txtIso639_2_Code.Text;
			set => m_txtIso639_2_Code.Text = value;
		}

		private string PublicationName
		{
			set => m_txtPublicationName.Text = value;
		}

		private string PublicationId
		{
			get => m_txtPublicationId.Text;
			set => m_txtPublicationId.Text = value;
		}

		private void UpdateQuotePageDisplay()
		{
			m_lblQuoteMarkSummary.Text = m_model.Project.QuoteSystem.ShortSummary;

			m_lblQuoteMarkReview.ForeColor = GlyssenColorPalette.ColorScheme.ForeColor;

			string quoteMarkReviewText = "";
			switch (m_model.Project.QuoteSystemStatus)
			{
				case QuoteSystemStatus.Obtained:
					quoteMarkReviewText = LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.ReviewQuoteMarks", "You may review the quote mark settings.");
					break;
				case QuoteSystemStatus.Guessed:
					quoteMarkReviewText = LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.CarefullyReviewQuoteMarks", "Carefully review the quote mark settings.");
					m_lblQuoteMarkReview.ForeColor = GlyssenColorPalette.ColorScheme.Warning;
					break;
				case QuoteSystemStatus.Reviewed:
					quoteMarkReviewText = Format(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.QuoteMarksReviewed", "Quote mark settings were reviewed on {0}.", "{0} is a date"), m_model.Project.QuoteSystemDate.ToString("yyyy-MM-dd"));
					break;
				case QuoteSystemStatus.UserSet:
					quoteMarkReviewText = Format(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.QuoteMarksUpdated", "Quote mark settings were updated on {0}.", "{0} is a date"), m_model.Project.QuoteSystemDate.ToString("yyyy-MM-dd"));
					break;
			}
			m_lblQuoteMarkReview.Text = quoteMarkReviewText;
		}

		private void UpdateAnnouncementsPageDisplay()
		{
			var showChangeOmittedChapterAnnouncementsLabel =
				m_titleChapters.SelectedValue is ExtraBiblicalMaterialSpeakerOption extraBiblicalOption &&
				extraBiblicalOption == ExtraBiblicalMaterialSpeakerOption.Omitted;

			if (showChangeOmittedChapterAnnouncementsLabel)
			{
				m_linkLblChangeOmittedChapterAnnouncements.Visible = true;

				m_lblExampleSubsequentChapterAnnouncement.Text = "";
				m_lblExampleFirstChapterAnnouncement.Text = "";
				m_lblExampleSingleChapterAnnouncement.Text = "";
				m_lblExampleTitleForMultipleChapterBook.Text = "";
				m_lblExampleTitleForSingleChapterBook.Text = "";
			}
			else
			{
				m_linkLblChangeOmittedChapterAnnouncements.Visible = false;

				if (m_model != null)
				{
					m_lblExampleSubsequentChapterAnnouncement.Text = m_model.ExampleSubsequentChapterAnnouncement;
					m_lblExampleFirstChapterAnnouncement.Text = m_model.ExampleFirstChapterAnnouncement;
					m_lblExampleSingleChapterAnnouncement.Text = m_model.ExampleSingleChapterAnnouncement;
					m_lblExampleTitleForMultipleChapterBook.Text = m_model.ExampleTitleForMultipleChapterBook;
					m_lblExampleTitleForSingleChapterBook.Text = m_model.ExampleTitleForSingleChapterBook;
					bool displayWarning = m_model.ChapterAnnouncementIsStrictlyNumeric;
					m_lblChapterAnnouncementWarning.Visible = displayWarning;
					m_lblExampleSubsequentChapterAnnouncement.ForeColor = displayWarning
						? GlyssenColorPalette.ColorScheme.Warning
						: GlyssenColorPalette.ColorScheme.ForeColor;
				}
			}
		}

		private void HandleOkButtonClick(object sender, EventArgs e)
		{
			if (m_model.RecordingProjectName != RecordingProjectName && ProjectBase.Reader.ProjectExistsHaving(IsoCode, PublicationId, RecordingProjectName))
			{
				var msg =Format(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.OverwriteProjectPrompt",
					"A {0} project with an ID of {1} and a Recording Project Name of {2} already exists for this language. Do you want to overwrite it?"),
					ProductName, m_txtPublicationId.Text, RecordingProjectName);
				if (MessageBox.Show(this, msg, ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) != DialogResult.Yes)
				{
					DialogResult = DialogResult.None;
					return;
				}

				var existingProjectPath = ProjectRepository.GetProjectFolderPath(IsoCode, PublicationId, RecordingProjectName);
				if (!RobustIO.DeleteDirectoryAndContents(existingProjectPath))
				{
					var failedMsg = Format(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.OverwriteProjectFailed",
							"{0} was unable to delete all of the files in {1}. You can try to clean this up manually and then re-attempt saving these changes."),
						ProductName, existingProjectPath);
					MessageBox.Show(this, failedMsg, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
					return;
				}
			}

            m_model.RecordingProjectName = RecordingProjectName;
            m_model.AudioStockNumber = AudioStockNumber;
			m_model.ChapterAnnouncementStyle = ChapterAnnouncementStyle;
			m_model.SkipChapterAnnouncementForFirstChapter = !m_chkChapterOneAnnouncements.Checked;
			m_model.Project.ReferenceTextProxy = SelectedReferenceText;

			m_model.Project.DramatizationPreferences.BookIntroductionsDramatization = (ExtraBiblicalMaterialSpeakerOption)m_bookIntro.SelectedValue;
			m_model.Project.DramatizationPreferences.SectionHeadDramatization = (ExtraBiblicalMaterialSpeakerOption)m_sectionHeadings.SelectedValue;
			m_model.Project.DramatizationPreferences.BookTitleAndChapterDramatization = (ExtraBiblicalMaterialSpeakerOption)m_titleChapters.SelectedValue;

			m_model.Project.ProjectSettingsStatus = ProjectSettingsStatus.Reviewed;
			DialogResult = DialogResult.OK;
			Close();
		}

		private ReferenceTextProxy SelectedReferenceText => ((KeyValuePair<string, ReferenceTextProxy>?)m_ReferenceText.SelectedItem)?.Value;

		private void HandleCancelButtonClick(object sender, EventArgs e)
		{
			// This ensures that any temporary override to this (which ultimately sets a static
			// member on Block) is reset if the user presses Cancel.
			m_model.RevertChapterAnnouncementStyle();
			DialogResult = DialogResult.Cancel;
			Close();
		}

		private ChapterAnnouncement ChapterAnnouncementStyle =>
			m_rdoChapterLabel.Checked ? ChapterAnnouncement.ChapterLabel :
				((ChapterAnnouncementItem)m_cboBookMarker.SelectedItem).ChapterAnnouncement;

		public string LocalizedGeneralTabName => m_tabPageGeneral.Text;
		public string LocalizedUpdateButtonName => m_btnUpdateFromSource.Text.Replace("...", Empty);

		private void m_btnQuoteMarkSettings_Click(object sender, EventArgs e)
		{
			var reparseOkay = false;
			if (m_model.IsLiveParatextProject)
			{
				reparseOkay = m_model.Project.QuoteSystemStatus != QuoteSystemStatus.Obtained;
			}
			else if (!m_model.Project.IsSampleProject)
			{
				if (m_model.Project.IsOkayToChangeQuoteSystem)
					reparseOkay = true;
				else
				{
					string msg = Format(LocalizationManager.GetString("Project.UnableToLocateTextBundleMsg",
							"The original text release bundle for the project is no longer in its original location ({0}). " +
							"The Quote Mark Settings cannot be modified without access to it."), m_model.Project.OriginalBundlePath) +
						Program.LocateBundleYourselfQuestion;
					string title = LocalizationManager.GetString("Project.UnableToLocateTextBundle", "Unable to Locate Text Bundle", "Message caption");
					if (DialogResult.Yes == MessageBox.Show(msg, title, MessageBoxButtons.YesNo))
						reparseOkay = SelectBundleForProjectDlg.GiveUserChanceToFindOriginalBundle(m_model.Project);
				}
			}

			BlockNavigatorViewModel viewModel = null;
			try
			{
				var fontProxy = new AdjustableFontProxy(m_wsViewModel.CurrentDefaultFontName,
					(int)m_wsViewModel.CurrentDefaultFontSize, m_wsViewModel.CurrentRightToLeftScript);
				if (m_model.Project.IncludedBooks.Any())
					viewModel = new BlockNavigatorViewModel(m_model.Project, BlocksToDisplay.AllExpectedQuotes, fontProxy, AdjustableFontProxy.GetFontProxyForReferenceText);
				using (var dlg = new QuotationMarksDlg(m_model.Project, viewModel, !reparseOkay, this))
				{
					MainForm.LogDialogDisplay(dlg);
					if (dlg.ShowDialog(this) == DialogResult.OK)
						UpdateQuotePageDisplay();
				}
			}
			finally
			{
				viewModel?.Dispose();
			}
		}

		private void m_btnUpdate_Click(object sender, EventArgs e)
		{
			if (m_model.IsLiveParatextProject)
			{
				UpdatedParatextProject = m_model.GetUpdatedParatextData(new WinformsParatextProjectLoadingAssistant(null, true));
				if (UpdatedParatextProject != null)
				{
					Logger.WriteEvent($"Updating project {m_lblRecordingProjectName} from Paratext data {m_model.ParatextProjectName}");
					HandleOkButtonClick(sender, e);
				}
				else
				{
					Analytics.Track("CancelledUpdateProjectFromParatextData", new Dictionary<string, string>
					{
						{"projectLanguage", m_model.IsoCode},
						{"paratextProjectName", m_model.ParatextProjectName},
						{"projectID", m_model.PublicationId},
						{"recordingProjectName", m_model.RecordingProjectName}
					});
				}
			}
			else
			{
				if (SelectBundleForProjectDlg.TryGetBundleName(m_model.RecordingProjectName, m_model.BundlePath, out string selectedBundlePath))
				{
					var bundle = new GlyssenBundle(selectedBundlePath);
					if (ConfirmProjectUpdateFromBundle(bundle))
					{
						Logger.WriteEvent($"Updating project {m_lblRecordingProjectName} from bundle {selectedBundlePath}");
						m_model.BundlePath = selectedBundlePath;
						UpdatedBundle = bundle;
						HandleOkButtonClick(sender, e);
					}
					else
					{
						Analytics.Track("CancelledUpdateProjectFromBundleData", new Dictionary<string, string>
						{
							{"bundleLanguage", bundle.LanguageIso},
							{"projectLanguage", m_model.IsoCode},
							{"bundleID", bundle.Id},
							{"projectID", m_model.PublicationId},
							{"recordingProjectName", m_model.RecordingProjectName},
							{"bundlePathChanged", (m_model.BundlePath != selectedBundlePath).ToString()}
						});
						bundle.Dispose();
					}
				}
			}
		}

		private bool ConfirmProjectUpdateFromBundle(GlyssenBundle bundle)
		{
			StringBuilder msg = new StringBuilder();
			var oldValueFormat = LocalizationManager.GetString("Project.UpdateFromBundle.OldValue",
				"Old value: {0}");
			var newValueFormat = LocalizationManager.GetString("Project.UpdateFromBundle.NewValue",
				"New value: {0}");

			if (bundle.LanguageIso != m_model.IsoCode)
			{
				msg.Append(Environment.NewLine);
				msg.Append(LocalizationManager.GetString("Project.UpdateFromBundle.Language", "Language"));
				msg.Append(Environment.NewLine);
				msg.Append("    ");
				var oldLanguage = IsNullOrEmpty(m_model.LanguageName) ? m_model.IsoCode :
					$"{m_model.LanguageName} ({m_model.IsoCode})";
				msg.AppendFormat(oldValueFormat, oldLanguage);
				msg.Append(Environment.NewLine);
				msg.Append("    ");
				msg.AppendFormat(newValueFormat, bundle.LanguageAsString);
				msg.Append(Environment.NewLine);
			}

			if (bundle.Id != m_model.PublicationId)
			{
				msg.Append(Environment.NewLine);
				msg.Append(LocalizationManager.GetString("Project.UpdateFromBundle.Id", "ID"));
				msg.Append(Environment.NewLine);
				msg.Append("    ");
				msg.AppendFormat(oldValueFormat, m_model.PublicationId);
				msg.Append(Environment.NewLine);
				msg.Append("    ");
				msg.AppendFormat(newValueFormat, bundle.Id);
				msg.Append(Environment.NewLine);
			}

			if (msg.Length > 0)
			{
				msg.Insert(0, Environment.NewLine);
				msg.Insert(0, LocalizationManager.GetString("Project.UpdateFromBundle.UpdatedBundleMismatch",
					"The metadata of the selected text release bundle does not match the current project. If you continue with this update, the following metadata will be changed:"));

				// This isn't necessarily "required" or "expected", but it seems useful to report
				if (bundle.Name != m_model.PublicationName)
				{
					msg.Append(Environment.NewLine);
					msg.Append(LocalizationManager.GetString("Project.UpdateFromBundle.PublicationName", "Publication name"));
					msg.Append(Environment.NewLine);
					msg.Append("    ");
					msg.AppendFormat(oldValueFormat, m_model.PublicationName);
					msg.Append(Environment.NewLine);
					msg.Append("    ");
					msg.AppendFormat(newValueFormat, bundle.Name);
					msg.Append(Environment.NewLine);
				}
				msg.Append(Environment.NewLine);
				msg.Append(LocalizationManager.GetString("Project.UpdateFromBundle.AllowUpdate",
					"Do you want to continue with this update?"));
				return MessageBox.Show(this, msg.ToString(), LocalizationManager.GetString("Project.UpdateFromBundle.ConfirmUpdate", "Confirm Update"), MessageBoxButtons.YesNo, MessageBoxIcon.Warning) ==
					DialogResult.Yes;
			}
			return true;
		}

		private void HandleChapterAnnouncementStyleChange(object sender, EventArgs e)
		{
			if (m_rdoBookNamePlusChapterNumber.Checked)
			{
				m_chkChapterOneAnnouncements.Checked = false;
				m_chkAnnounceChaptersForSingleChapterBooks.Checked = false;
			}
			HandleChapterAnnouncementChange(sender, e);
		}

		private void HandleChapterAnnouncementChange(object sender, EventArgs e)
		{
			m_model.ChapterAnnouncementStyle = ChapterAnnouncementStyle;
			UpdateAnnouncementsPageDisplay();
		}

		private void HandleAnnounceFirstChapterCheckedChanged(object sender, EventArgs e)
		{
			m_model.SkipChapterAnnouncementForFirstChapter = !m_chkChapterOneAnnouncements.Checked;
			m_chkAnnounceChaptersForSingleChapterBooks.Enabled = m_chkChapterOneAnnouncements.Checked;
			UpdateAnnouncementsPageDisplay();
		}

		private void HandleAnnounceSingleChapterCheckedChanged(object sender, EventArgs e)
		{
			m_model.SkipChapterAnnouncementForSingleChapterBooks = !m_chkAnnounceChaptersForSingleChapterBooks.Checked;
			UpdateAnnouncementsPageDisplay();
		}

		private void HandleSelectedTabPageChanged(object sender, EventArgs e)
		{
			if (m_tabControl.SelectedTab == m_tabPageTitleAndChapterAnnouncmentOptions)
			{
				m_lblExampleFirstChapterAnnouncement.Font =
				m_lblExampleSingleChapterAnnouncement.Font =
				m_lblExampleSubsequentChapterAnnouncement.Font =
				m_lblExampleTitleForMultipleChapterBook.Font =
				m_lblExampleTitleForSingleChapterBook.Font =
					new Font(m_wsViewModel.CurrentDefaultFontName,
						(float)Math.Min(m_lblBookTitleHeading.Font.SizeInPoints * 1.1, m_wsViewModel.CurrentDefaultFontSize));
			}
		}

		private void m_txtRecordingProjectName_TextChanged(object sender, EventArgs e)
		{
			m_btnOk.Enabled = !IsNullOrWhiteSpace(m_txtRecordingProjectName.Text);
		}

		private void HandleSelectedReferenceTextChanged(object sender, EventArgs e)
		{
			m_linkRefTextAttribution.Text = Empty;
			m_linkRefTextAttribution.Links.Clear();
			if (m_ReferenceText.SelectedItem is KeyValuePair<string, ReferenceTextProxy> kvp)
			{
				var refTextProxy = kvp.Value;
				var metadata = refTextProxy.Metadata;
				SetReferenceTextCopyrightInfo(metadata);
				var referenceText = ReferenceText.GetReferenceText(refTextProxy);
				m_labelWarningReferenceTextDoesNotCoverAllBooks.Visible =
					!m_model.Project.AvailableBooks.Select(b => b.Code).All(bookId =>
						referenceText.HasContentForBook(bookId));

				m_labelOTVersion.Text = referenceText.EnglishOTVersion;
				m_labelNTVersion.Text = referenceText.EnglishNTVersion;
			}
		}

		private void SetReferenceTextCopyrightInfo(GlyssenDblTextMetadataBase metadata)
		{
			var copyrightInternalNodes = metadata?.Copyright?.Statement?.InternalNodes;
			if (copyrightInternalNodes == null)
				return;

			m_linkRefTextAttribution.Text = Join(Environment.NewLine, copyrightInternalNodes.Select(n => n.InnerText));
			const string kHttpPrefix = "http://";
			var linkStart = m_linkRefTextAttribution.Text.IndexOf(kHttpPrefix, StringComparison.Ordinal);
			if (linkStart >= 0)
			{
				var linkExtent = m_linkRefTextAttribution.Text.LastIndexOf("/", StringComparison.Ordinal) - linkStart;
				if (linkExtent > 0)
				{
					//m_linkRefTextAttribution.LinkArea = new LinkArea(linkStart, linkExtent);
					m_linkRefTextAttribution.Links.Add(linkStart, linkExtent,
						m_linkRefTextAttribution.Text.Substring(linkStart, linkExtent));
				}
			}
		}

		private void HandleWebSiteLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
		{
			string tgt = e.Link.LinkData as string;

			if (!IsNullOrEmpty(tgt))
				System.Diagnostics.Process.Start(tgt);
		}

		private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
		{
			m_tabControl.SelectedTab = m_tabPageScriptOptions;
			m_titleChapters.Focus();
		}

		private void m_titleChapters_SelectedValueChanged(object sender, EventArgs e)
		{
			UpdateAnnouncementsPageDisplay();
		}

		private void m_txtRecordingProjectName_Validating(object sender, System.ComponentModel.CancelEventArgs e)
		{
			var proposedName = RecordingProjectName;

			if (proposedName.Length == 0)
			{
				var captionFmt = LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.RecordingProjectNameRequiredCaption",
					"{0} Required",
					"Parameter is the \"Recording Project Name\" label used in the Project Settings dialog box");

				var msgFmt = LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.RecordingProjectNameRequired",
					"The {0} is required because it will be used as part of the file path to store the project.",
					"Parameter is the \"Recording Project Name\" label used in the Project Settings dialog box");

				DisplayRecordingProjectNameValidationError(msgFmt, captionFmt, e);
				e.Cancel = true;
				return;
			}

			var details = new StringBuilder();
			if (FileSystemUtils.StartsOrEndsWithDisallowedCharacters(proposedName))
			{
				details.Append(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.RemoveIllegalStartOrEndCharacters",
					"Do not start or end the name with a period.",
					"The \"name\" here refers to the Recording Project Name entered in the Project Settings dialog box."));
			}
			var illegalCharacters = FileSystemUtils.GetIllegalFilenameCharacters(proposedName);
			if (illegalCharacters.Any())
			{
				if (details.Length > 0)
					details.Insert(0, "\u2022 ").Append(Environment.NewLine).Append("\u2022 "); // Make it into a bullet list
				details.Append(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.RemoveIllegalCharacters",
					"Remove illegal characters from the name:",
					"The \"name\" here refers to the Recording Project Name entered in the Project Settings dialog box. " +
					"This will be followed by a list of one or more illegal characters that were encountered."));
				if (illegalCharacters.Count == 1)
					details.Append(" ").Append(illegalCharacters[0]);
				else
				{
					foreach (var illegalCharacter in illegalCharacters)
						details.Append(Environment.NewLine).Append("    ").Append(illegalCharacter);
				}
			}

			if (details.Length == 0 && FileSystemUtils.IsReservedFilename(proposedName))
			{
				details.Append(LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.DoNotUseReservedFilename",
					"Use a different name. The name {0} is a reserved filename in the Windows operating system.",
					"The parameter is the Recording Project Name entered in the Project Settings dialog box."));
			}

			if (details.Length > 0)
			{
				details.Insert(0, Environment.NewLine);
				var captionFmt = LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.InvalidRecordingProjectNameCaption",
					"Invalid {0}",
					"Parameter is the \"Recording Project Name\" label used in the Project Settings dialog box");

				var msgFmt = LocalizationManager.GetString("DialogBoxes.ProjectSettingsDlg.InvalidRecordingProjectName",
					"The {0} will be used as part of the file path to store the project. To make it a legal name, do the following:",
					"Parameter is the \"Recording Project Name\" label used in the Project Settings dialog box");

				DisplayRecordingProjectNameValidationError(msgFmt + details, captionFmt, e);
			}
		}

		private void DisplayRecordingProjectNameValidationError(string msgFmt, string captionFmt, System.ComponentModel.CancelEventArgs e)
		{
			var recordingProjectNameLabel = m_lblRecordingProjectName.Text;
			for (int i = recordingProjectNameLabel.Length - 1; i > 0; i--)
			{
				if (char.IsPunctuation(recordingProjectNameLabel[i]))
					recordingProjectNameLabel = recordingProjectNameLabel.Remove(i, 1);
				else
					break;
			}
			MessageBox.Show(this, Format(msgFmt, recordingProjectNameLabel),
				Format(captionFmt, recordingProjectNameLabel),
				MessageBoxButtons.OK, MessageBoxIcon.Error);

			e.Cancel = true;
		}

		/// <summary>
		/// Validates m_txtAudioStockNumber to prevent characters that would result in an illegal
		/// file name during export.
		/// </summary>
		private void m_txtAudioStockNumber_Validating(object sender, System.ComponentModel.CancelEventArgs e)
		{
			m_txtAudioStockNumber.Text = AudioStockNumber; // ensure trimmed
			// I'm using U+2024 (One Dot Leader) as my replacement character because, while it is a legal
			// filename character, in practice it results in misleading names and should never be used. It's
			// almost certainly never going to be typed in by a (non-malicious) user as an audio stock number.
			const char kReplacement = '\u2024';
			var sanitized = AudioStockNumber.SanitizeFilename(kReplacement);

			string errorMsg = null;
			if (sanitized.Length < AudioStockNumber.Length)
			{
				// Note: It's theoretically possible to get here because of other weird leading or trailing
				// control characters, but this is highly unlikely.
				// (See SIL.Extensions.StringExtensions.IsInvalidFilenameLeadingOrTrailingSpaceChar)
				m_txtAudioStockNumber.Select(sanitized.Length, AudioStockNumber.Length - sanitized.Length);
				errorMsg = LocalizationManager.GetString("Project.StockNumberIllegalTrailingCharacters",
					"The {0} must not end with a dot (.).",
					"Param is the (localized) \"Audio Stock Number\" label (with punctuation trimmed).");
			}
			else
			{
				var firstIllegalCharacter = sanitized.IndexOf(kReplacement);
				if (firstIllegalCharacter >= 0)
				{
					var lastIllegalCharacter = sanitized.LastIndexOf(kReplacement);
					m_txtAudioStockNumber.Select(firstIllegalCharacter, lastIllegalCharacter - firstIllegalCharacter + 1);
					errorMsg = LocalizationManager.GetString("Project.StockNumberIllegalCharacters",
						"The {0} must not contain illegal directory name characters.",
						"Param is the (localized) \"Audio Stock Number\" label (with punctuation trimmed).");
				}
			}

			if (errorMsg != null)
			{
				// Cancel the event and select the text to be corrected by the user.
				e.Cancel = true;
				errorProvider1.SetError(m_txtAudioStockNumber, Format(errorMsg,
					Regex.Replace(m_lblAudioStockNumber.Text, @"[^\w\s]", "")));
			}
		}

		private void m_txtAudioStockNumber_Validated(object sender, EventArgs e)
		{
			// If all conditions have been met, clear the ErrorProvider of errors.
			errorProvider1.SetError(m_txtAudioStockNumber, "");
		}
	}
}


To put it simply, a contested divorce is one where the parties involved have a disagreement on one or more issues of their divorce, such as the division of marital property or child custody. When both spouses can agree on how to proceed with their divorce, it's referred to as an uncontested divorce.
A contested divorce takes more time and is more difficult to manage because the parties must attempt to negotiate a settlement and, if unsuccessful, complete a court trial.
It takes a great deal of patience, cooperation, and compromise between both spouses to have an uncontested divorce. If you wish to avoid a battle in the courtroom, you will have to be willing to work with your soon-to-be ex-partner. But if you are unable to reach an agreement with your spouse as to how your divorce should proceed, a Maryland divorce lawyer can talk you through your options and help you decide the best path forward.


1064 66th St is a Multi-Family building located in Dyker Heights, Brooklyn constructed in 1931. This 3-story building has 6 units. The building is within Community District 310 and zoned for the following schools - P.S. 310, Fort Hamilton High School, J.H.S. 227 Edward B. Shallow. Nearby transportation include the N, D, R subway lines.


Bollore Logistics is launching its brand new river transport solution today, with the first commissioning of a river unit service running between Le Havre and Bonneuil-sur-Marne via Gennevilliers, near Paris (France).
This new service is fully consistent with the development strategy undertaken by Bollore Logistics for the Seine Valley and its drive to develop innovative and eco-friendly solutions to meet customers' needs.
Designed as a flexible solution, the service offers several advantages. First of all, the environmental benefits of waterway transport, which is low in pollution and reduces greenhouse gas emissions. Bollore Logistics will thus be reducing the share of road transport in favour of a barge service, allowing it to ship deliveries to its customers located in the Paris consumer basin. A "last mile" service, primarily operated by trucks running on natural gas, will round out this new logistics solution.
Bollore Logistics also wants to offer its customers the benefits of optimized cost management by taking advantage of the best port franchises offered by the Seine corridor. "The river corridor solution can help optimise the costs of parking import containers in Le Havre. Our goal is to offer our customers a flexible solution that reduces these costs." says Laurent Foloppe, Director of the Normandy Region at Bolloré Logistics.
The Bollore Logistics motor barge will provide a shuttle service every Wednesday, running between the multimodal terminal of Le Havre and Bonneuil-sur-Marne to the south west of Paris, offering additional stops at the ports of Gennevilliers and Rouen. This solution allows Bolloré Logistics to offer a capacity of more than 5,000 TEUs to Paris' Ports (Paris port and waterways authority). The motor barge will depart loaded from the two Parisian ports to Rouen and Le Havre.
HAROPA also welcomes the decision to serve the Bonneuil terminal: "Located on the east side of Paris, close to the major logistics bases of the Greater Paris region, the terminal is trimodal, connected to rail and river. It provides a final link in the chain and is strategically placed as close as possible to consumer markets" says Bréhier.


text:
SOAR Buyer's Guide – Get it HERE!
5 Alternatives to The Gartner Magic Quadrant for SIEM
Posted on October 31, 2017 by Jeff Edwards in Best Practices, Featured
Gartner is one of the loudest voices in enterprise technology— they're world's largest information technology research and advisory company, and generally, the first source consulted when it comes to evaluating enterprise IT solutions, and enterprise Identity Management is no exception.
But while the Gartner's flagship Magic Quadrant report for SIEM is a great resource for finding out who the top contenders are, it doesn't give a particularly in-depth analysis behind what each solution offers or how they perform across different industries and use cases. Nor do Magic Quadrants typically don't include a very broad spectrum of solutions.
Gartner's yearly reports don't exactly move at the speed of business, and you can't base an entire RFP off of one resource (though I'm sure some do). A well-informed decision requires a well-rounded research process.
IT workers, CIOs, and CISOs need to conduct extensive research to correctly plan, assess, and deploy the right solution for their organization.
That means multiple sources—and lots of work. Luckily, we've done some of the work for you. Below, you'll find the top five alternatives to Gartner's Magic Quadrant reports.
Since each organization needs a tool to match up with their own specific use cases, these resources allow researchers to sift through solutions that satisfy a wide range of SIEM requirements.
But should you feel the need for even more resources, check out our SIEM resource library, which features 12 top resources, and is constantly updated with the latest and greatest InfoSec best practices.
Forrester Wave Report & Vendor Landscape Reports
Forrester offers a wide variety of resources to assist business leaders in selecting the right enterprise technology solutions. As one of the most well-established technology research outlets, Forrester is a trusted source of information, offering expansive market studies that encompass a multitude of charts, graphics, and figures. Forrester's flagship methodology lies in the company's ever-evolving quarterly Wave reports as well as their in-depth vendor landscape reports. Forrester currently offers Wave and Vendor Landscape reports for Security Analytics.
View Resource: Forrester Wave Report for Security Analytics
KuppingerCole is an international analyst firm that specializes in offering thought leadership in areas including SIEM and Real Time Security Monitoring and Intelligence. In their free Analyst View on Real Time Security Monitoring and Intelligence, KuppingerCole's analysts give an in-depth analysis of a variety of information security tools including SIEM and big data analytics. Likewise, this blog on building a 'future proof' security operations center is great fodder for understanding what makes an efficient SOC.
View Resource: Analyst View: Real Time Security Monitoring and Intelligence
Gartner Critical Capabilities Reports
In addition to their Magic Quadrant reports, Gartner also offers the less well-known Critical Capabilities reports, which allow the reader to compare vendors based on specific use cases which relate to their own environments.
For example, in the 2016 version of their Critical Capabilities report for SIEM, Gartner takes the 13 vendors that it considers most significant in the SIEM market and evaluates the strengths and weaknesses of those vendors against 'critical capabilities' and use cases for SIEM. Gartner does not endorse any vendor, product, or service depicted in its research publications.
Gartner defines Critical capabilities as "attributes that differentiate products/services in a class in terms of their quality and performance."
Gartner rates each vendor's product or service on a five-point scale in terms of how well it delivers each capability.
Gartner Peer Insights
Gartner Peer Insights is Gartner's answer to the crowdsourced review site—a crowdsourced review site of their own. With their Peer Insights program, Gartner is trying to present the collective experiences of thousands of qualified (and verified) tech buyers and end users who have already gone where you are headed. Perhaps most importantly, Gartner's Peer Insights democratizes the evaluation process, allowing for vendors not typically included in Magic Quadrants and Critical Capabilities reports due to their stringent requirements. Gartner's Peer Insights on Identity Governance and Administration features 113 reviews on 19 vendors—far more than considered in the Magic Quadrant and Critical capabilities reports.
Solutions Review Buyer's Guide
Solutions Review's SIEM and Security Analytics Buyer's Guide is the perfect primer for selecting the right SIEM solution. The 30-page document includes a category overview, 5 questions to ask potential SIEM providers, 5 questions to ask yourself before buying, plus a capabilities reference and complete profiles of the top 24 SIEM solution providers, making it easy for companies considering SIEM implementations to compare and contrast solutions and find their best fit. By using the SIEM Buyer's Guide in conjunction with other tools on this list, solutions-seekers will be armed with all of the materials they need to ensure selection of the best software for their company.
More Information Security Resources:
SIEM Buyer's Guide
Get the Solutions Review SIEM Buyer's Guide. This complimentary download breaks down the top SIEM vendors for you to build an easy shortlist of contenders.
Gartner Magic Quadrant for SIEM
Take a look at Gartner's Magic Quadrant for SIEM for the strengths and weakness of the most significant vendors in the market.
Follow Jeff
Jeff Edwards
Jeff Edwards is an enterprise technology writer and analyst covering Identity Management, SIEM, Endpoint Protection, and Cybersecurity writ large.He holds a Bachelor of Arts Degree in Journalism from the University of Massachusetts Amherst, and previously worked as a reporter covering Boston City Hall.
Latest posts by Jeff Edwards (see all)
Five Questions You Need To Ask Yourself When Evaluating SIEM Solutions - November 8, 2017
Winning the Data Breach War with User and Entity Behavioral Analytics - November 3, 2017
5 Alternatives to The Gartner Magic Quadrant for SIEM - October 31, 2017
Previous Previous post: CyberSec Management Co. Skybox Secures $150M Funding Round
Next Next post: Winning the Data Breach War with User and Entity Behavioral Analytics
Solutions Review: The 4 SOAR Vendors to Watch in 2021
What to Expect at the Cyber Security & Cloud Congress North America on October 5 and 6
Department of Health and Human Services Hit By Cyber-Attack
Vendor Map Report SIEM
33 Data Privacy Week Comments from Industry Experts in 2023
Identity Management and Information Security News for the Week of January 27; LogicGate, Privado.ai, Nsure.ai, and More
Searchable and Fully Homomorphic: Data Encryption Evolved
The Patch and Vulnerability Management Symbiotic Relationship
The Highest-Rated SOC Books Available on Amazon
Best Security Information & Event Management SIEM & Security Analytics Vendors, Companies, Software, Tools | Solutions Review
The Essential 16 Incident Response Books for Professionals
How to Build a Security Operations Center (SOC) on a Budget
The Best 23 Data Security Platforms to Consider in 2023
Key Takeaways: 2022 Gartner Magic Quadrant for Security Service Edge
Solutions Review brings all of the best Information Security thought leaders, news, best practices and events together in one place: Here at Solutions Review SIEM.
Free SIEM Buyer's Guide
Solutions Review - SIEM | Privacy Policy | Do Not Sell My Info

redpajama_set_name: RedPajamaCommonCrawl


text:
Read Next:	Michael Strahan Throws Support Behind U.S. Women's Soccer Team's Call for Equal Pay
Markets & Festivals
It's All So Quiet
There are no easy rewards for the protagonist -- or indeed, the viewer -- of "It's All So Quiet," the austere but subtly powerful fifth feature of Dutch auteur Nanouk Leopold ("Wolfsbergen," "Brownian Movement").
By Boyd van Hoeij
Boyd van Hoeij
Boyd's Most Recent Stories
Jean Rochefort Dies: French Actor Was Famously to Appear in 'Don Quixote'
Emmanuelle Riva, Star of 'Amour,' 'Hiroshima Mon Amour,' Dies at 89
Jacques Rivette, Cerebral French New Wave Director, Dies at 87
With: Jeroen Willems, Henri Garcin, Wim Opbrouck, Martijn Lakemeier, Lies Visschedijk. (Dutch dialogue)
There are no easy rewards for the protagonist — or indeed, the viewer — of "It's All So Quiet," the austere but subtly powerful fifth feature of Dutch auteur Nanouk Leopold ("Wolfsbergen," "Brownian Movement"). More inspired by than literally adapted from Gerbrand Bakker's bestseller, "The Twin," the pic charts the much-belated coming-of-age of a fiftysomething, closed-mouthed farmer who decides to move his ailing, once-domineering father upstairs so he can finally come into his own down below. Hushed, superbly acted character study makes the silences count but nonetheless has a shot at niche theatrical exposure, especially in Euro and gay-friendly arthouses.
One of "Quiet's" first shots is an immediate winner, combining everyday action and more symbolic meanings in a typically Leopoldesque way. Helmer (the late Jeroen Willems), a fit dairy-cattle farmer of about 55, carries his ill but still-stout father (Henri Garcin) up a flight of stairs to the attic, as seen from the landing below; the suggestive visual of one hulking adult body struggling to support another establishes how the father has become the son's cross to bear.
Leopold's ease with storytelling through sound (or lack thereof) and imagery is the main reason the film remains so involving. For a picture based on a literary work, even one of such Calvinist restraint as Bakker's, there's very little dialogue. It's not even clear, for example, that Helmer's sibling, who drowned before the film opens, is his twin brother, as the English-language title of the novel suggests. The book's one major female role has been greatly reduced as well — surprisingly, as the director's previous pics were mainly femme-focused.
What remains is a trio of men, all of few words, who define the limits of Helmer's world: the father who's slowly "dying of old age"; the kind, Belgian milk-truck driver (Wim Opbrouck) who is Helmer's age and regularly comes to collect the farm's milk; and a hunky young farmhand, Henk (Martijn Lakemeier), who turns up out of nowhere (unlike in the novel). The truck driver and the farmhand stir feelings of affection and desire, respectively, but the towering, if slowly withering, presence of his father upstairs makes it impossible for Helmer to act on his feelings.
The character development here is understated but beautifully laid bare by a quartet of top actors. Willems, a Dutch theater vet who died suddenly last December, gives a devastating performance as Helmer, who might think his true feelings are concealed by the eternally downward-pointing corners of his mouth, but who's nonetheless easily readable for auds throughout. As his father, Belgian thesp Garcin (perhaps most famous for his role as Fanny Ardent's cuckolded husband in Truffaut's "The Woman Next Door") provides the necessary gravitas and, despite his total dependence on his offspring for care, the sort of calculated indifference that would make a son hurt inside.
Flemish actor Opbrouck ("Can Go Through Skin") and rising Dutch star Lakemeier ("Winter in Wartime") are perfectly cast, even though Lakemeier's role seems to have suffered the most from Leopold's severe pruning of the original text, making the young man's actions necessary, story-wise, but not always clearly motivated.
Departing from the novel's Waterland backdrop, just northeast of Amsterdam, the film is set in rural Zeeland, near the Belgian border, and Leopold uses the open surrounding fields as a nice counterweight to the farm's dark, closed-off interiors without driving home the parallels too forcefully. Her first film shot with digital cameras feels looser in approach but no less composed, while the minimalist sound design amplifies surface silences as well as underlying tensions.
It's All So Quiet
Netherlands-Germany
Production: A Cineart (in Netherlands), Salzgeber & Co. Medien (in Germany) release of a Circe Films, N279 Entertainment presentation and production, in association with Coin Film, VPRO, ZDF/3Sat. (International sales: Films Distribution, Paris.) Produced by Stienette Bosklopper, Els Vandevorst. Co-producer, Herbert Schwering. Directed, written by Nanouk Leopold, based on the novel "The Twin" by Gerbrand Bakker.
Crew: Camera (color, HD), Frank van den Eeden; editor, Katharina Wartena; music, Paul M. van Brugge; production designer, Elsje de Bruijn; costume designers, Manon Blom, Ute Paffendorf; sound (Dolby SRD), Andreas Hildebrandt; line producer, Ada Goossens; line producer (Germany), Christine Kiauk; casting, Janusz Gosschalk, Harm van der Sanden. Reviewed at Berlin Film Festival (Panorama Special -- opener), Feb. 8, 2013. Running time: 91 MIN.
Cast: With: Jeroen Willems, Henri Garcin, Wim Opbrouck, Martijn Lakemeier, Lies Visschedijk. (Dutch dialogue)
36 Saints
64A-Films
Cineart
Diego Ramirez
Farmers Field
Green Dog Films
Lucky Them
Stoopid Buddy Stoodios
More Scene
Dwayne Johnson: Idris Elba Nixed 'Black James Bond' Joke in 'Hobbs & Shaw'
In the "Fast & Furious Presents Hobbs & Shaw," the movie's villain Brixton, played by Idris Elba, spreads his arms out wide and declares "I'm black Superman." It turns out that might not have been the original line. Dwayne Johnson tells Variety that Elba was first asked to proclaim he's "black James Bond," but the [...]
Top Music Manager Calls Out American Icon Awards for Failing to Pay Talent
The centuries-old adage no good deed goes unpunished is a common refrain for star music manager Scott Rodger of late. Rodger, who represents Paul McCartney and Andrea Bocelli at Maverick, says his client Matteo Bocelli, the son of the opera star, was stiffed out of promised expense reimbursement by the American Icon Awards. The event, [...]
Cannabis Industry Tackles Justice Reform With 'Last Prisoner Project'
Jim Belushi is standing two feet away in the backyard of his spacious Brentwood home, honking a harp like he's a Blues Brother back in sweet home Chicago accompanied by noted reggae band Rebelution's Eric Rachmany and Kyle Ahern, who provide a 12-bar shuffle. There's the sweet smell of skunk — and success — hanging [...]
Dwyane Wade, Megan Rapinoe Win Big at 2019 Nickelodeon Kids' Choice Sports Awards
The 2019 Nickelodeon Kids' Choice Sports Awards was filled with incredible athletes, inspiring moments and — of course — a massive amount of slime. "I love the kids. I love the slime. I loved the games. I love seeing celebrities and athletes like become kids again. And it's like my favorite thing," Michael Strahan told [...]
Dave Bautista Talks Representation in Hollywood and Defying Stereotypes with 'Stuber'
Dave Bautista and Kumail Nanjiani make an unlikely duo in "Stuber," an R-rated comedy about a police officer and his Uber driver. But the two connected over the rare chance to star in the film as actors of Asian descent (Baustia is half-Filipino and Nanjiani is Pakistani). "I've been stereotyped for a couple different reasons [...]
How Jamie Bell Transformed Into a Neo-Nazi for 'Skin'
Anyone who still associates British actor Jamie Bell with his breakout role as a young boy who dreams of becoming a ballet dancer will quickly forget all about "Billy Elliot" after seeing "Skin," which screened at ArcLight Hollywood on Thursday night. "I was shocked," the film's writer-director, Guy Nattiv, told Variety of his leading man's [...]


Search this online dating site for singles in Arizona, the Grand Canyon State. This free Arizona online dating site has millions of members and thousands of Arizona singles. Why waste time and money searching Rillito,Arizona bars for love? Create a Match.com profile for FREE. Online Dating 101: Step one, create your free Match.com Rillito personal profile with your best photo; step two, watch your Rillito dating choices line up; step three, choose the date of your dreams.


Saturday, June 29th 8 to 9 a.m.
Wednesday, June 26th 6 to 8 p.m.
Monday, June 24th 6 to 8 p.m.
Saturday, June 22nd and Sunday, June 23rd 12 to 3:30 p.m.
Saturday, June 15th and Sunday, June 16th 12 to 3:30 p.m.
Saturday, June 8th and Sunday, June 9th 12 to 3:30 p.m.
Saturday, June 1st and Sunday, June 2nd 12 to 3:30 p.m.
Saturday, May 11th and Sunday, May 12th 12 to 3:30 p.m.
Saturday, May 4th and Sunday, May 5th 12 to 3:30 p.m.
Saturday March 23rd and Sunday March 24th 12:00 to 3:30 p.m.
Sunday, January 13th at 12:00 p.m.
Sunday, January 13th at 6:00 p.m.
Saturday, January 12th at 11:30 a.m.
Thursday, December 20th at 7:00 p.m.
Guest speaker at the USA Triathlon Pacific Northwest Annual Membership Meeting in Couer D'Alene this summer will be Heather Kelly, Western Washington graduate and owner and founder of OPENutrition (Optimum Performance Enhancing Nutrition). Two short lectures will be presented. "Eating for Performance" focuses on how digestive health is critical to performance as well as the importance of converting a carbohydrate driven metabolism to a fat fueled one. "Dynamic Eating Psychology – An Intro to Mind Body Nutrition" will discuss how stress affects digestion and the importance of eating speed and simple practices that enhance digestion and calorie burning efficiency. More information on Heather and her talks can be found on our Facebook page. This excellent education opportunity will take place at the CDA Chamber of Commerce at 4pm August 10.
Everyone wants a lean physique. For the majority of folks, even competitive athletes, body composition is a challenge. You can't just work out harder. How about adding mass to your frame if you're chronically underweight? We'll delve into the effects of insulin resistance and stress hormone release and show how minor improvements can result in major results.
Come learn about leaning out + mass gaining and enter to win a cash prize! Winners are based on before + after photos. Not sure if you want to enter? Check out our results page to read testimonials from our past Body Composition Challenges. This challenge is 6 weeks long and will wrap up with after photos and a potluck September 8th!
Come learn the how's and why's about leaning out + mass gaining as well as enter the OPENutrition Body Composition Challenge! Crossfit Denver will be giving away prizes to the top two male and female winners. First place will receive TWO MONTHS FREE UNLIMITED TRAINING (A $260 value) and second place will receive ONE MONTH UNLIMITED ($130 value). Winners are based on before + after photos. Not sure if you want to enter? Check out our results page to read testimonials from our past Body Composition Challenges. This challenge is close to 5 weeks long and will wrap up July 15th with after photos, a potluck, and another seminar!
Learn how a diet based on meat, vegetables and healthy fats can drastically affect the outcomes you are getting from your training regime. Are you a high-performing athlete looking for the next "edge" in your game? Have your results recently stalled and you are wondering what needs to happen next in order to see improvements? Whoever you are, whatever you are up to, you can benefit from improving your current diet.
When is the best time to fuel? Do you know about the magic window for optimal carbohydrate uptake? What should you eat post-workout? These questions and more will be covered during the OPENutrition Seminar on post-workout nutrition. Find out if all those supplements, shakes and meal replacement bars are worth the dough.
OPENutrition Spring Body Comp Challenge Potluck!
We will have a potluck to celebrate the folks who took the OPENutrition 5 Week Challenge! We will be taking "after" photos and announcing the male and female winners! Bring food, bring friends, please wear the same clothes that you had your "before" photos taken in. See you then!
OPENutrition Spring Body Comp Challenge!
We will explain the in's and out's of mass gaining and leaning out for anyone who missed the presentation last time.
Have your goals changed since the last challenge? Did you lean out and now you're ready to put some muscle on your frame? Do you need some healthy competition/cash to motivate you to clean up your diet? Join us for the 5 week challenge and win cash doing it!
Seminar and "before" photos Monday, February 6th at 7 p.m.
$10 for the seminar to learn all about leaning out and mass gaining. $20 to enter the challenge.
"After" photos will be taken Sunday, March 11th at 6:30 p.m. We will have a potluck again and congratulate our male and female winners!
All friends and family of CFNFC athletes are invited! Kicking off the holidays with some good food, good company, and we will be paying big bucks to the male and female winners of the Body Comp Challenge!
When is the best time to fuel? Do you know about the magic window for optimal carbohydrate uptake? What should you eat post workout? These questions and more will be covered in the second installment of the OPEN Seminar Series. Find out if all those supplements, shakes and meal replacement bars are worth the dough.


text:
Exploring the Bay of Bengal: The Culture & Wildlife of India, Bangladesh & Myanmar
Mariellen Ward & Shubham Mansingka|April 18, 2018|Blog Post
Located in the northeastern part of the Indian Ocean, the Bay of Bengal is the largest bay in the world. It encompasses approximately 839,000 square miles, and is bordered by India, Bangladesh, and Myanmar.
Nearly a dozen different rivers feed into the bay, including the mighty Ganges, Brahmaputra, and Meghna. The expansive delta created by these rivers is a diverse marine ecosystem that includes the Sundarbans, a UNESCO World Heritage Site. This massive mangrove forest is known for a wide range of Indian wildlife, including the Bengal tiger (India's national animal), Ganges River dolphin, and estuarine crocodile.
Zegrahm's new Bay of Bengal: Chennai to Yangon expedition (on board the 120-passenger Silver Discoverer) offers travelers an excellent opportunity to explore the rich biological diversity of the region. In addition to an array of land-based and marine mammals, the bay is also home to fascinating coral reefs, estuaries, and a wide variety of birds.
It's also home to millions of people, with unique cultures that have been influenced by the wetlands, waterways, shifting islands, extreme weather, and other unique features the Bay of Bengal area has to offer. The bay's coastal regions feature multiple sites of historical and religious significance, as well as significant sea ports.
Here's a look at some of the cultural and natural attractions this part of India, Bangladesh, and Myanmar have to offer:
Bay of Bengal Wildlife
Wildlife of India
The Bay of Bengal region offers a broad variety of ecosystems, with a dense concentration of wildlife and birds.
Bhitarkanika National Park in Odisha is a unique habitat of mangrove forests interspersed with numerous creeks and mudflats. It is the second largest mangrove forest in India (after Sundarbans) and has more than 60 species of mangroves.
The Gahirmatha Marine Sanctuary in Odisha is another hotspot of biodiversity. It is home to a large population of giant salt water crocodiles and the world's largest, most important nesting ground for the endangered Olive Ridley sea turtle. Numerous wetlands are scattered throughout the sanctuary, and they serve as feeding grounds for more than 50,000 migratory birds during the winters.
Sundarbans National Park & Tiger Reserve is located in West Bengal in the Sundarbans delta, the largest mangrove forest in the world. One of the best national parks in India, this is the kingdom of the Bengal tiger and home to many other wildlife species, including the Indian grey mongoose, leopards, wild boar, flying fox, chital deer, pangolin, and more.
Wildlife of Bangladesh
Bangladesh's landscape on the Bay of Bengal ranges from marshy forest and wetlands to glistening rice paddies and rolling hills full of misty tea gardens.
Despite being a small country, Bangladesh has more than 700 rivers, 17 national parks, numerous offshore islands, and one coral reef. Bangladesh is one of the 10 countries most affected by global warming and is extremely vulnerable to a rise in sea level.
Bangladesh shares the Sundarbans with India. On the Bangladesh side, the Sundarbans Reserve Forest is on the UNESCO World Heritage List. It's a magnificent area of scenic beauty, natural resources, and rich biodiversity, not to mention a breeding ground for numerous endangered species.
The Teknaf Game Reserve, near Cox's Bazaar, protects some of Bangladesh's few remaining wild elephants. Visitors will also have a chance to see other rare wildlife, such as the hoolock gibbon and Ganges River dolphin. A significant number of the country's bird species can also be sighted here. Another highlight of the reserve is the Kudum Cave, which is also known as the bat cave.
Wildlife of Myanmar
Myanmar's Bay of Bengal coast is a long stretch of palm-fringed, white-sand beaches. The country is home to a wide variety of ecosystems including rainforests, wetlands, coastal, and marine ecosystems. The entire country is rich in resources and enjoys a great diversity of flora and fauna.
The many rivers that flow through Myanmar are surrounded by mangroves, swamp forest, lakes, and marshes that provide a natural habitat for a large variety of marine and animal species.
There are more than 20 national parks and wildlife reserves spread across Myanmar, and quite a few of them lie in the Bay of Bengal region. Among the wildlife found in Myanmar are tigers, clouded leopards, Asiatic black bears, gibbons, and barking deer.
BAY OF BENGAL CULTURE
The Culture of India
India's riches can often be intoxicating and overwhelming to visitors. The states on the coast of Bay of Bengal are no different. With a history stretching back millennia, and numerous traditional cultures living in the same time-honored way they have for centuries, the Bay of Bengal region is the home of numerous UNESCO World Heritage monuments and landmarks.
In Puri, on the coastline of Odisha, the sacred Lord Jagannath Temple (which is famous for the annual Rath Yatra festival) is a sight to behold. In fact, the word "juggernaut" comes from the force of the huge chariots that are paraded through town during this annual cultural festival.
Odisha is also home to the Konark Sun Temple, which represents the sun god's chariot. It's a 13th century architectural marvel, a UNESCO World Heritage site, and arguably one of India's finest historical treasures.
Among the many other superb sites you'll find on the Bay of Bengal coast are the UNESCO-listed Group of Monuments at Mahabalipuram (which date from the 7th and 8th centuries), wondrous caves of the Jain religion, mystical and ancient Buddhist monasteries, and pre-historic paintings.
The Culture of Bangladesh
The Bay of Bengal region has a multifaceted cultural heritage, with its ancient mix of animist, Buddhist, Hindu, and Islamic religions.
Bangladesh, which was part of India before achieving independence with the partition of the country in 1947, is the newest country on the bay. It's a heady amalgamation of beaches, ruins, bazaars, boat rides, wildlife, and colorful cultural festivals.
The villages of Bangladesh mostly maintain their traditional culture, producing unique folk art that has survived for hundreds of years. On the country's remote islands, you can find both traditional fishing villages and indigenous tribal cultures that make you feel you have stepped back in time. Here you can see locals extracting sea salt by traditional methods and experience a floating rice market.
Some of the more fascinating towns of Bangladesh include Cox's Bazaar (which boasts the world's longest beach, stretching more than 62 miles) and Bagerhat, which lies at the meeting point of the Ganges and Brahmaputra rivers.
This ancient town was founded in the 15th century and is known as the Historic Mosque City of Bagerhat, which has been recognized by UNESCO for the exceptional number of mosques and early Islamic monuments found there.
The Culture of Myanmar
Myanmar is often called "the Land of Pagodas" due to the fact that its landscape is dotted with distinctive tiered temples, including the oldest pagoda in the world. The country was formerly known as Burma, and has long been home to religious and cultural diversity (including 100+ different ethnic groups).
While the majority of the population is Buddhist, the country is also home to Christians, Hindus, and Muslims. Among the country's most fascinating cultural delights, the ancient city of Bagan showcases a colossal complex of thousand-year-old temples.
Visitors can also canoe through the still waters of Inle Lake to see the locals fishing in a unique way– by balancing on one leg while paddling their boats with the other.
The capital of Myanmar was shifted to Naypyitaw back in 2005. But the former capital, Yangon, remains the cultural and commercial heart of the country. Among Yangon's UNESCO World Heritage Sites are numerous colonial-era churches and the tomb of the last Mughal emperor of India, Bahadur Shah Zafar. –Mariellen Ward and Shubham Mansingka
BIOS: Mariellen Ward is a travel writer and digital storyteller. She has a BA in Journalism and has been published in many leading online and offline publications around the world. Her award-winning travel blog, Breathedreamgo, is inspired by her extensive travels in India.
Shubham Mansingka is a professional travel blogger from India with an avid interest in photography, culture, trekking, and food. He loves listening to the stories of villagers and explores offbeat, unknown places and hopes to make you see more of this beautiful world through his experiences on his travel blog Travelshoebum.
Travel credit cards are becoming increasingly popular, and that's not surprising. When you consider how many...
Global interest in nature-based tourism, which includes wildlife...
Join Me in Borneo
Dear Travelers,
In August of 2018, biologist Michael Moore and I co-led a two-week Zegrahm wildlife adventure in Borneo, spotting wild orangutans...
A Brief History of the Philippines
Dear Traveler,
Best Places to Travel & Visit - Your Southeast Asia Itinerary
Your Southeast Asia Itinerary
Southeast Asia consists of eleven different countries, each situated south of China. The countries are surrounded...
The World's 10 Best Adventure Travel Companies
As an expert on ecotourism, one of the most common questions I get is, "How do I know which tour operators are truly sustainable?" As with...
Best Solo Travel Destinations In The World | Zegrahm Expeditions
Solo travel is a rapidly growing trend nowadays, as more and more people are discovering the joys of traveling alone.
10 Benefits of Small Ship Cruising with Zegrahm Expeditions
For nearly 30 years, Zegrahm Expeditions has been taking travelers to the world's most remote and remarkable destinations on all seven continents...
What To Pack For A Cruise - Packing List Ideas | Zegrahm Expeditions
The Ultimate Cruise Packing List (Including Cold, Hot/Dry, & Tropical Climates)
The World's Best Places To Scuba Dive & Snorkel
Our Top 10 Picks
In early 2012, while staying at a glamping resort on a private island off the coast of Panama, my wife and I did a one-day...


Track your order from ship date to arrival. To begin, enter your order number and email below. Where is my order number?
For an in-store order, use the 10 digit alphanumeric order number on your store receipt or order confirmation email.
For an online order, use the 8 digit order number from your confirmation email.
If you need help finding your order number, please do not hesitate to e-mail us or call us at 1.866.720.7463.


In December of last year, O2 UK launched the QelpCare selfservice application. Being the first operator in the UK to implement the software, O2 once again shows their dedication to provide their customers the best support possible.
"At O2, we truly care about customer service and satisfaction. As an addition to our current efforts, deploying QelpCare selfservice software was a logical next step to provide our customers with the care they desire and deserve." says Pinaki Jha, Head of Sales and Service Customer Experience.


text:
1. Gujarat, India
Country's largest producer of cotton and salt, Gujarat is the birth place of Mahatma Gandhi. In 2005 and 2006 heavy monsoons caused severe flooding, which killed more than 1,000 people, severely damaged infrastructure and agriculture. According to the expectations of scientists, a rapidly changing climate will lead to increasingly unpredictable monsoon rains and floods.
2. The Maldives, Indian ocean
The Maldives consists of 1200 tropical Islands, with white beaches, swaying palm trees and brightly colored coral reefs. The Republic of Maldives stretches across more than 600 miles. According to reports by the UN, by 2100 the sea level will rise 59 centimeters. In this case, the chain of 1,200 Islands and coral atolls 800 miles from the tip of India will be partly flooded, because a large part of the Maldives lies just one and a half metres above sea level (the highest point in the state – 2.4 meters above sea level). Even minor sea level rise could lead to the fact that some of the Islands will die.
3. Bangkok, Thailand
Bangkok – tropical capital, where the traditional East meets the modernity of the West. This city constantly tolerate flooding, especially during Continue reading →
Posted in asia, country, people, tradition, world
The family has its black sheep. This applies even to the gaming industry. This «ugly» the Japanese game industry. A country that has the fastest development of technology has managed to divide the gaming industry into three camps. First — fans of Japanese games. Second — are neutral, which no matter what they're doing and playing what you love. The third camp — these are the people who not understand Japanese game design. I'm more of a renegade third party. No matter how long I watched by Japan, I was not able to accept the culture of Japan. Ranging from manga and anime, to design game levels and generally their games. Although, I like many, grew up on the NES console. And the games then were mostly from there. In the late 90's to early 2000's Japan has captured our hearts. But many left behind.
One such game that many put away from him, in my opinion, was Metal Gear. The designer of which was the infamous Hideo kojima. The game was a revolution and perhaps the cob of one of the best series in the genre of stealth-action. Interesting story and a new word from the young designer was given the opportunity to prove to the world what Japanese game design. Continue reading →
Posted in country, family, japan, love, people, world
Japan has four major Islands – Honshu (3/5 area of the country), Hokkaido, Shikoku and Kyushu and many small Islands extending arc of about 3500 km, from Hokkaido in the northeast to Islands of Ryukyu in the South-West. Japan is separated from the southeastern coast of Russia and East coasts of the DPRK and the Republic of Korea by the sea of Japan, from China – the East China sea. The South-Western extremity of Japan and South East Korea are separated by the Korea Strait with the minimum width of approx. 180 km. North of Japan is Sakhalin island. and to the North-East of the Kuril ridge.
Political structure
Japan is a constitutional monarchy. The Emperor performs certain ceremonial functions (present on the official celebrations, national holidays). Based on the decision of the Cabinet of Ministers he signs official documents prepared by the government, laws, international treaties, convene the Parliament session and dissolves the lower house, sets the date of elections to the Parliament, assures the appointment and dismissal of Ministers and other senior officials confirmed the authority of their ambassadors and receives foreign ambassadors, confirms the Declaration of Amnesty, he confers awards and honorary titles. By decision of the Parliament the Emperor appoints the Prime Minister and the last member of the Cabinet and chief justice of the Supreme court. Legally, the Emperor Continue reading →
Posted in country, japan, korea, love, people, tradition, world
Tours in Thailand
The ancient name of the Kingdom of Thailand . which sounds like Siam, familiar to many. The country is located in the heart of Southeast Asia and is famous for…
To begin with, than go in. Go in a literal sense. The fact is that when entering a Japanese house, you can find your step in the hallway – genkan…
The Republic of Korea occupies the southern part of the Korean Peninsula, acting on 1100 kilometers from the Asian mainland. From the West the Peninsula is washed by the Yellow…
Coming of age Celebrations in Japan
Gross national income of Japan, 1970-2013
Seminar on Hapkido in Daugavpils.
Architecture of North Korea
Top 10 most unusual ways of greeting
South Korea travel Guide South Korea
Tea ceremony in Japan and its history


text:
https://www.sfgate.com/health/article/SAN-FRANCISCO-UCSF-animal-research-called-top-2735883.php
SAN FRANCISCO / UCSF animal research called top 'lawbreaker' / 51 federal citations over three years, activists report
By Julian Guthrie
Published 4:00 am PDT, Friday, August 6, 2004
A national group trying to stop the use of animals in medical research has found UC San Francisco to be the nation's worst violator of federal animal welfare laws, listing 51 federal citations over three years.
A report released Thursday by the nonprofit group Stop Animal Exploitation Now (SAEN) said the 51 violations ranged from inadequately trained laboratory personnel to failing to administer painkiller to a monkey after cranial surgery. Of the total, 30 were repeat violations, and 10 involved direct misuse of animals.
The animal welfare group based its report, "Breaking the Law: Animal Care in U.S. Labs," on U.S. Department of Agriculture inspection reports between 2000 and 2003. The USDA is required to conduct biannual inspections of research facilities.
Other institutions cited by SAEN as "major violators" of the federal Animal Welfare Act include: Johns Hopkins, Emory University, the University of Pennsylvania, Harvard University, the University of Florida and the University of Pittsburgh. In all, there were 559 violations by 25 institutions over three years.
"Dozens of labs across the country are violating federal law, and UCSF is the No. 1 lawbreaker," said SAEN's executive director, Michael Budkie, standing in front of the UCSF campus on Parnassus Avenue. "UCSF is first in number of violations, number of repeat violations and violations that directly affect animals."
UCSF has more than 500 active research studies involving rodents, rabbits, dogs, cats, sheep, pigs, ferrets, squirrels and nonhuman primates.
UCSF associate vice chancellor for research Ara Tahmassian said in a statement Thursday that animal research is never undertaken lightly and that many layers of oversight exist to ensure animals are treated humanely and appropriately.
"The university believes that certain animal activist organizations are philosophically opposed to animal research and present statistics out of context and in a way that misrepresents the facts," Tahmassian said.
He said the university tries to minimize the use of animals and seeks alternatives but believes such research is essential to medical innovation.
UCSF researchers who work with animals have been credited with an array of medical breakthroughs.
One example is a UCSF researcher who spent three decades studying the lungs of rabbits, dogs, cows and other animals and produced an artificial form of a substance that coats the interior of lungs and allows them to expand and contract. The discovery saves the lives of tens of thousands of premature infants every year who are born without the ability to produce the substance.
In another example, listed by UCSF, researchers working with dogs and other animals pioneered the development of catheter ablation techniques that cure heart rhythm disorders, making it possible to treat common disorders by threading a tiny catheter through a vein and into the heart. Before the breakthrough, open-heart surgery was the only way to treat many of the disorders.
Another UCSF researcher advanced the understanding of HIV. A mouse model developed 10 years ago allows researchers to test antiviral drugs and explore the mechanisms of the AIDS virus. The mouse was developed with a human-like blood-forming system that acts like a human immune system.
SAEN's Budkie said his work focuses on experiments that are redundant and cause animals to suffer unnecessarily. He believes that animals are routinely harmed in the name of "scientifically meritless" studies. He earned a bachelor's degree in animal health technology and trained in a lab at the University of Cincinnati.
Budkie said some of the worst experiments at UCSF involve primates that undergo multiple surgeries and are trained through water deprivation. He said one UCSF researcher, who has been cited numerous times by the USDA, is studying neural control of eye movement. The researcher implants metal coils in the monkey's eyes and a hook that protrudes from the skull. The monkeys can be restrained in a chair for as long as eight hours.
"Animals are not inanimate objects," Budkie said. "They have a concept of self. They feel pain."
Monkey experiments at UCSF are replicated in labs across the country, Budkie said. He said he recently searched the National Institutes of Health database and found 180 similar studies.
He believes in effecting change not through outrageous -- and sometimes unlawful -- tactics adopted by groups such as the Animal Liberation Front and People for the Ethical Treatment of Animals, but by gathering records through legal channels and presenting the findings in reports.
"We get the data, get it right and get it to the public," said Budkie, who has a second bachelor's degree in theology. "If the American public had all the facts about what's happening to animals in labs, labs would be closed."
Bob O'Brien, an organizer with the San Francisco group Vigil for Animals, has spent one day a month for the past year sitting on a bench in front of UCSF, protesting research practices. He has problems with all of the research, he said, but finds certain studies unthinkable. Descriptions of the studies, written by the researchers, were obtained by SAEN, he said.
"The experiments are cruel and unnecessary," O'Brien said.
Jeremy Beckham, another activist who joined the group gathered in front of UCSF, is spending the summer protesting the use of primates in medical research. Earlier this week, he protested the use of monkeys in research at the UC Davis primate center, one of the largest in the nation.
"I read a book about primates who were taught sign language," Beckham said. "I know sign language and got to visit these chimps who sign. It was amazing to communicate. I look in their eyes, and it's so much like interacting with humans. Their awareness is not unlike a child's. Would we do these things to children?"
UCSF is the nation's fourth-largest National Institutes of Health grant recipient, after Johns Hopkins, the University of Pennsylvania and the University of Washington.


Archives|Paid Notice: Deaths CAHILL, ANTHONY B., SR.
Paid Notice: Deaths CAHILL, ANTHONY B., SR.
CAHILL-Anthony B., Sr., age 68, of Bonita Springs, Florida and Nantucket, Massachusetts, died on November 18, 1998 after an extended illness. Born in New York City on November 19, 1929, son of the late Russell B. Cahill and Estelle Forhan Cahill. He was the husband of Karen Butler Cahill. He grew up in Pelham Manor and Mamaroneck, New York and was educated at Iona Prep School and attended Iona College in New Rochelle, New York. He resided in various towns in Westchester County, namely White Plains, Bedford Village, Chappaqua, and Somers until he retired in 1990 moving to Florida and continuing to summer on Nantucket Island, Massachusetts as he had since the 1960s. Mr. Cahill worked in the heavy construction industry in the 1940's during summers while a student and after serving in the U.S. Marines from 1950-1952 continued in the construction business throughout his business life, primarily road construction including public projects such as the New York State Thruway built in the early 1950s where he was deeply involved in the construction of the Tappan Zee Bridge and Westchester Toll Plaza in Tarrytown, New York. Having the foresight to follow the major trend of the development of the upper portion of Westchester County, New York in the late 1950s into the 60s, Mr. Cahill, in 1963, founded Cahill Paving Corporation originally in Katonah, New York, soon after moving his company to Bedford Hills, New York where it remained for many years. Seeing the value of an asphalt plant in northern Westchester and Putnam Counties he started Putnam Asphalt Corporation in Patterson, New York as well as Harlem Valley Materials, Inc in Wassaic, New York, all doing business throughout Westchester, Putnam and Dutchess Counties. He continued to successfully run his businesses until his retirement in 1990. Mr. Cahill served for 15 years as a Trustee for the Pension Fund of the Local 137 Operating Engineers Union. He was a member of Sankaty Head Golf Club, Nantucket, Massachusetts and Bonita Bay Golf Club in Bonita Springs, Florida; an officer in the Westchester County Contractor's Association, a member of the Westchester Bituminous Asphalt Association. In addition to his wife, Karen, he is survived by three sons, Richard F. Cahill of San Diego, California, Anthony B. Cahill, Jr. of Ridgefield, Connecticut and James E. Cahill of Nantucket, Massachusetts, and his brother, John J. Cahill of Vero Beach, Florida. He is also suvived by five grandchildren, his former wife Valerie, many nieces, nephews, grandnieces and grandnephews, two stepdaughters and two stepsons. Friends may call on the Cahill family on Friday, November 20, 1998 from 5-9:00PM at the Hodges Funeral Chapel, 3520 Tamiami Trail North. A Mass of Christian Burial will be held on Saturday, November 21, 1998 at 9:00AM at Saint John the Evangelist Catholic Church. Interment will be in Prospect Hill Cemetery in Nantucket, Mass. Mr. Cahill is a parishioner of St. Mary's (Our Lady of the Isle) Church in Nantucket, Massachusetts and St. John's the Evangelist Church in Naples, Florida. In lieu of flowers, donations may be made to the Sankaty Head Caddy Camp Fund of Sankaty Head Golf Club, Nantucket, Massachesetts which helps young boys earn scholarships for college.


text:
AWKA HOSTS CSAAE FOR ITS 6TH IYLCBE SUMMIT
Aug 4, 2019 | CBlog | 0 comments
The Center for Social Awareness, Advocacy and Ethics Inc., an international NGO founded by Rev. Fr. Dr. Godswill Agbagwa, a Catholic Priest and Lecturer at Frostburg State University, Maryland USA held its 6th annual International Leadership, Career Building, and Entrepreneurship Summit at the Nnamdi Azikwe University, Awka, Anambra State.
Delegates of the Summit were hosted at Wintess Hotel, a luxury abode nestled in the lush and contemporary area of Awka, the capital city of Anambra State. The hotel which was just recently opened is a modern offshoot of the beautiful Anambra landscape and Delegates were treated to the amazing and luxurious concierge services of Wintess Hotel.
The culinary fantasies of some Delegates were also fulfilled as they were treated to wonderful native cuisines of Eastern Nigeria such as the White Banga soup, Ogbonno, Egusi soup, Eba & Yam Pottage. It was altogether a wonderful experience taking part in the culture-inspired foods.
The Event which officially kicked off on July 12th at the School Auditorium was opened with a speech by the Founder of the Centre who welcomed all Delegates and underlined his concerns about the need for a better African community inspired by the youth. The Chief Host, the University Vice-Chancellor, Prof. Charles Esimone was represented by the Deputy Vice-Chancellor (Admin) Prof. Carol who took the keynote speech, welcoming the Delegates warmly to Anambra State and the University.
The first part of the Summit featured different panels which discussed from different perspectives how African youths are driving change in their communities.
Prominent lead panelists such as Professor Chinyere Stella Okunna & Barrister Sam Okeke challenged the youths on more innovative ways to create community change.
The Director of the Confucius Institute, Prof. Yu Zhangbao also spoke on Sino-Nigerian relations and cooperation on education and introduced Delegates to the different means through which they could benefit from the opportunities that are available.
The second day of the Summit, July 13th featured the Bootcamp training for Delegates who were trained by established experts in Human Resources, Entrepreneurship, and Business Finance. Our speakers who were Mr. Alex Ugwuezuonu, Mr. James Elekwachi & Dr. Farouk Kurawa came from different parts of Nigeria to curate the different training sessions.
The Event closed on July 13th with a Social Night hosted by CSAAE for the Summit Delegates. Invited guests included prominent representatives from the Anambra State government. The largely social event featured the highly anticipated Raffle Draw where the Centre gifted a brand new Laptop, a Samsung Tablet and a brand new Samsung Phone to grateful winners. The Anambra State Commissioner for Youths and Creative Economy also charged the youths to engage in more productive activities that would promote their immediate communities. He promised to work with the Centre in creating access for youths to opportunities for growth. The event ended with the Local Organizing Committee appreciating the Founder, Sponsors, and Delegates for contributing to the success of the event.
2020 EALFC: "WE ARE GOING FOR AN INTENSIVE, BOOTCAMP STYLE CONFERENCE" SAYS FOUNDER
by Chigozie Joy | Dec 31, 2019 | CBlog | 0 Comments
The first step in every solution strategy is problem identification. With the vision to address underdevelopment and poverty in Africa, hence mandating every emerging leader to work on a community development project, yearly, CSAAE hosts a centerwide conference termed...
IMF PARTNERS WITH CSAAE TO TRAIN SELECT CSOS
Civil Society Organizations (CSOs) have been identified as key actors in development. International Monetary Fund(IMF), an agency of the United Nations, has noted remarkable success in achieving her mission through symbiotic collaborations with CSOs; and as a...
"I WANT TO RAISE PEOPLE WHO ARE AS STUBBORN AS I AM TO CHANGE THE STATUS QUO" MR ONYEBUCHI
Grant is an instrument of change, an instrument of societal impact for non-profits. Grant proposal is an opportunity for persons or organizations to invest in a social change which, individually they may not be able to effect. One of the first and foremost...


An eccentric styling, vaguely inspired by Ray Petri, that mixes down jackets, skirts (yes, skirts), sporty socks and garments. Elected as the ideal style for the Amsterdam Dance Festival. Ph. Giovanni Gastel, styling Alessandro Calascibetta.


Equipped with soundproof windows and contemporary furniture, these spacious rooms (14 m2) come 2 single beds or a double bed. There are coffee and tea making facilities available. Other facilities include a flat-screen TV, a mini bar and modern bathroom facilities. Free in-room Wi-Fi is available.
Equipped with soundproof windows and contemporary furniture, these spacious rooms (18 m2) come 1 single bed. There are coffee and tea making facilities available. Other facilities include a flat-screen TV, a mini bar and modern bathroom facilities. Free in-room Wi-Fi is available.
This spacious and soundproof room (20 m2) is equipped with either a king or double bed. It includes contemporary furniture, and coffee and tea-making facilities. A flat-screen TV, a mini bar and a safe are also available. The bathroom comes with free bathrobes and slippers. Free in-room Wi-Fi is provided.
The NH Brussels Stéphanie hotel is situated on a quiet and peaceful side street, yet right in the heart of the upscale Louise shopping district. Just steps away, guests can find luxurious boutiques and fine dining. Meanwhile, Brussels historic city center is only 25 minutes away on foot. Alternatively, Louise metro station is 300 meters away from the hotel and will connect guests to the rest of the city. NH Brussels Stéphanie has 67 contemporary rooms. Each one comes with tea and coffee making facilities and free Wi-Fi. Guests staying on the 6th floor will enjoy the lovely views over the rooftops of Brussels. Each morning, we serve a delicious breakfast buffet. There is something for every taste including fresh breads and pastries, cold cuts, cheeses, fruit, and yogurt. Guests can also wind down with an authentic Belgian beer or their favorite cocktail at our comfy lobby bar with armchairs and booths. If you need a snack any time of the day, there is a 24/7 self-service Open Bar, where you can find hot and cold sandwiches, confectionary, and various beverages. Our staff will be happy to recommend top dining options just steps away from the hotel.


Place the rice in a bowl with water to cover and soak one hour.
Bring a large pot of water to boil with food color and half the cardamom pods. Stir in the rice, reduce heat, cover and simmer until tender, 20 minutes.
In a large skillet over low heat, cook remaining cardamom pods in oil 2 minutes. Stir in cooked, drained rice, and sugar. Cover and cook 5 minutes. Remove from heat and stir in cream, raisins, walnuts, almonds and orange zest. Serve warm.


Kapha in the Body Reducing Programme & Why. Kapha Season is here, the earth, the air and the body is heavier and damp. As we know the season's change and before we get the sunshine of late spring, we experience the wet, sleet and snow which begins to melt and create havoc as the warmer weather starts to heat up the earth.
Kapha Season is here, the earth, the air and the body are heavier and damp. As we know the season's change and before we get the sunshine of late spring, we experience the wet, sleet and snow which begins to melt and create havoc as the warmer weather starts to heat up the earth.
Day One the Foundations. This is the foundation and general format that you will be following throughout the programme, although each day will have some different recipes and practices for you to do.
Day Four. Getting into tune with your body. When you start to become more in-tune with your body and with the energy of the days and seasons, you will be more able to adjust in the future seasonal junctures. One of the main themes for seasonal junctures is the need to bring about change in a gradual way.
Day Three. There is so much wonderful information to learn about Kapha and of course the other doshas, but we are focusing on Kapha this month. This particular article alongside the daily formulas, tells us about the evening time for Kapha, read below.
Day Five. One of the main themes for seasonal junctures is the need to bring about change in a gradual way. If you make changes quickly and without the due time and attention you will not only lose the benefits but it will be detrimental to your body. If you make changes gradually, they will feel more natural and are more likely to stick. If you try a drastic change rapidly, this will create too much stress on your system.
Balancing Kapha General Rules. Keep these rules as a foundation particularly if you are a Kapha body type. But remember that the Kapha Season will affect everyone and this is where we look to see what Kapha symptoms we are experiencing.
Triphala - The Supreme Internal Cleanser of India. Triphala (three fruits) is one of the oldest and, beyond doubt, the most highly revered compound in the 5,000-year tradition of Ayurveda.


Employees of the National Commission on Research, Science and Technology (NCRST) are demanding that the current acting CEO, Enid Keramen, be removed due to poor leadership skills.
The National Commission on Research, Science and Technology (NCRST) and the African Biosafety Network of Expertise (ABNE) signed a new agreement in the capital on Monday.
More still needs to be done to create sufficient public awareness around genetically modified organisms (GMOs).
-The National Commission for Research, Science and Technology (NCRST), has launched a national Genetically Modified Organisms (GMO) testing, training and research laboratory in Windhoek.
The National Commission for Research, Science and Technology (NCRST) and the Namibian Standards Institution (NSI) have entered into strategic partnerships.
The adoption of science, technology and innovation can contribute greatly to Namibia's socio-economic development.
The National Commission on Research, Science and Technology (NCRST) handed over facilities to the Community Skills Development Centre (COSDEC) at Ondangwa.
The International University of Management (IUM) and the National Commission on Research and Technology, have signed a Memorandum of Understanding to strengthen research and innovation.
NCRST commits millions for innovative projects by the youth.
The National Commission on Research, Science and Technology has committed close to 5 million dollars for innovative projects by the youth.


Uh, oh.... you've been arrested.
Now, they're going to take your photo.
Here's some of our favorite mug shots over the last few years. The pictures were all from the Egg Harbor Township and Absecon Police Department Facebook pages.
Mug shots are pictures taken at the time of a person's arrest. There is no presumption of guilt in the inclusion of these photos.


ROME — Pope Francis has told Italian Catholic youths in Rome to pursue their dreams despite job market worries.
Tens of thousands of young people filled Rome's ancient Circus Maximus on Saturday evening to hear Francis advise them to ignore adults who warn against certain professions, saying they are not in demand. Many walked for days to reach the rally.


PL2Q Hugin motor mount and prop saver set.
Say thanks by giving swepet a tip and help them continue to share amazing Things with the Thingiverse community.
PL2Q Hugin by swepet is licensed under the Creative Commons - Attribution - Share Alike license.
Say thanks and help swepet continue to share amazing Things with the Thingiverse community.
You'll need a PayPal account to tip swepet. Click the button below and you will be redirected to PayPal. Once the payment is complete, you'll be brought back to Thingiverse.


text:
Кизитери́нка — узловая железнодорожная станция, расположенная в микрорайоне Александровка Пролетарского района города Ростова-на-Дону на берегу реки Дон. Имеет статус грузовой станции.

История
В начале декабря 1917 года под станцией состоялся один из первых боёв Гражданской войны в России — немногочисленные верные присяге казачьи части Войска Донского и добровольцы Алексеевской организации пытались подавить начавшееся в Ростове-на-Дону советское восстание.

В настоящее время станция в основном обслуживает грузовые перевозки Ростовского речного порта. Кроме того, на станции останавливаются пригородные поезда, следующие по направлению Ростов — Лихая. Также на станции останавливаются электропоезда в рамках проекта «Городская электричка».

В будущем по генплану развития города Ростов-на-Дону планируется размещение второго большого железнодорожного вокзала Ростов-Восточный в районе станции Кизитеринка для пропуска скоростных поездов в южном направлении.

Примечания

Ссылки

Станции Ростовского региона Северо-Кавказской железной дороги
Узловые железнодорожные станции
Железнодорожные станции и платформы Ростова-на-Дону

redpajama_set_name: RedPajamaWikipedia


WASHINGTON (AP) _ More than 32,000 chenille sweaters are being recalled because federal authorities say they are dangerously flammable.
The Consumer Product Safety Commission said Wednesday the soft-textured sweaters were sold by major retailers _ including Bloomingdale's, Macy's, Nordstrom, Lord & Tayor, Neiman Marcus and Limited Too _ as well as small boutiques nationwide, CPSC said.
Made in a variety of colors in China, Hong Kong, Taiwan and the United States, the sweaters sold for between $38 and $130 nationwide. Nearly all are 65 percent rayon and 35 percent nylon.
The agency urged consumers to stop wearing sweaters they believe may be involved in the recall and to return them to the retailer where they were purchased.
The recall covers some sweaters under these brand names and RN numbers: BCBG Maxazeria, 80734; 525 Made in America, 61680; Maille Ishyu, 78635; Sisters, 84332; Karen Kane Lifestyle Petite, 59168; Karen Kane Lifestyle, 59168; Karen Kane, 59168; The Limited, 54867; Express Tricot, 54867; and N.Y. Jeans, 23243.