private void btnFiltrele_Click(object sender, EventArgs e) { try { CariArama.BuTariheKadarOlanBakiyeBilgisi = dateEdit1.DateTime; trGenel = SqlConnections.GetBaglanti().BeginTransaction(); gcCari.DataSource = CariArama.CariListesi(SqlConnections.GetBaglanti(), trGenel); gvCari.RestoreLayoutFromStream(cs.csGridLayout.GetLayout(1, this.Name, gvCari.Name, SqlConnections.GetBaglanti(), trGenel)); trGenel.Commit(); // tr kapatılır. ToplamlariHesapla(); //GridArayuzIslemleri(enGridArayuzIslemleri.Get); //gvCari.Columns["SehirID"].OptionsColumn.ShowInCustomizationForm = false; //gvCari.Columns["SehirID"].OptionsColumn.AllowShowHide = false; // gösterme gizlemeyi iptal ediyor //gvCari.RestoreLayoutFromXml(Application.StartupPath + "\\GridLayout\\KullanıcıID_frmCariListe.xml"); } catch (Exception hata) { trGenel.Rollback(); frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void btnKaydiAc_Click(object sender, EventArgs e) { try { if (gvCari.FocusedRowHandle < 0) { return; } if (this.Text == "Cari Kartlar Listesi") { Cari.frmCariDetay frmCariv2 = new Cari.frmCariDetay(Convert.ToInt32(gvCari.GetFocusedRowCellValue("CariID"))); frmCariv2.MdiParent = this.MdiParent; frmCariv2.Show(); } else { //_Veriver(gvCari.GetFocusedDataRow()); // veri ver neydi delege kullandığın zaman çok iyi açıklama yaz // hepsi buraya göre olacak _CariIDVer(Convert.ToInt32(gvCari.GetFocusedRowCellValue("CariID").ToString())); this.Close(); } } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void StokIhtiyacDoldur() { try { TrGenel = SqlConnections.GetBaglanti().BeginTransaction(); stokIhtiyac = new clsTablolar.csStokIhtiyac(SqlConnections.GetBaglanti(), TrGenel); GridKonumYukle(); TrGenel.Commit(); } catch (Exception hata) { TrGenel.Rollback(); frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } gcStokIhtiyac.DataSource = stokIhtiyac.dt_StokIhtiyac; stokIhtiyac.dt_StokIhtiyac.RowChanged += new DataRowChangeEventHandler(dt_StokIhtiyac_RowChanged); stokIhtiyac.dt_StokIhtiyac.RowDeleted += new DataRowChangeEventHandler(dt_StokIhtiyac_RowChanged); stokIhtiyac.dt_StokIhtiyac.RowChanging += new DataRowChangeEventHandler(dt_StokIhtiyac_RowChanged); gvStokIhtiyac.CellValueChanging += gvStokIhtiyac_CellValueChanging; }
private void frmExcel_Load(object sender, EventArgs e) { try { sfdKaydet.Filter = "Excel Files |*.xls"; if (sfdKaydet.ShowDialog() == DialogResult.OK) { _GelenGrid.ExportToXls(sfdKaydet.FileName); if (sfdKaydet.FileName != ".xls") { if (XtraMessageBox.Show("Kaydetme Başarılı.\nKaydedilen Dosya Açılsın mı?", "Ares", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { System.Diagnostics.Process.Start(sfdKaydet.FileName); } } } this.Dispose(); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
/// <summary> /// hemen al ın fonksiyonlarının burada kullanabilriz ilerde belki bunu private yaparım /// </summary> /// <param name="Get_Set_Fonksiyonlariii"></param> /// <returns></returns> public DataTable csHemenAlStringToDatatablesds(string HemenaldanGelen) { //Get_Set_Fonksiyonlari.ClientCredentials.w try { XmlDocument GelenTumveri = new XmlDocument(); GelenTumveri.LoadXml(HemenaldanGelen.ToString()); XmlReader xmlReader = new XmlNodeReader(GelenTumveri); DataSet dsGelen = new DataSet(); dt_Gelen.Clear(); dsGelen.ReadXml(xmlReader); if (dsGelen.Tables.Count == 0) { XtraMessageBox.Show("Siteden bilgiler okunamadı."); //this.Close(); } else { dt_Gelen = dsGelen.Tables[0]; //gridControl1.DataSource = dt_Gelen; } return(dt_Gelen); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); throw new Exception(hata.Message); } }
private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { string Layout = ""; { using (var ms = new MemoryStream()) { gvStokIhtiyac.SaveLayoutToStream(ms); ms.Position = 0; using (var reader = new StreamReader(ms)) Layout = reader.ReadToEnd(); } TrGenel = SqlConnections.GetBaglanti().BeginTransaction(); cs.csGridLayout.InsertLayout(1, this.Name, gvStokIhtiyac.Name, Layout, SqlConnections.GetBaglanti(), TrGenel); TrGenel.Commit(); } } catch (Exception hata) { TrGenel.Rollback(); frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void AnaForm_FormClosing(object sender, FormClosingEventArgs e) { for (int i = 0; i < Application.OpenForms.Count; i++) { try { if ((Application.OpenForms[i]).Tag.ToString() == "0") { e.Cancel = true; (Application.OpenForms[i]).Activate(); //MessageBox.Show("Burada Kayıt Tamamlanmamış hamısınaaaaaa"); return; } } catch (Exception) { //Eğer btnkaydet butonu yoksa buraya düşecek ama öyle gereksiz bi yer hamısına } } try { ((frmKullaniciGiris)Application.OpenForms["frmKullaniciGiris"]).ProgramiKapat(); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void FormuAc(Form GelenForm) { try { bool Durum = false; foreach (var item in this.MdiChildren) { if (item.Name == GelenForm.Name) { Durum = true; item.Activate(); } } if (Durum == false) { GelenForm.MdiParent = this; GelenForm.Show(); } } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { GridArayuzIslemleri(enGridArayuzIslemleri.Set); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void frmCariOzelBilgi_FormClosed(object sender, FormClosedEventArgs e) { try { OzelBilgi.OzelBilgiGuncelle(SqlConnections.GetBaglanti()); GridArayuzIslemleri(enGridArayuzIslemleri.Set); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void FormuAc2(Form GelenForm) { try { GelenForm.MdiParent = this; GelenForm.Show(); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void btnTabloyuKaydet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { trGenel = SqlConnections.GetBaglanti().BeginTransaction(); cs.csGridLayout.InsertLayout(1, this.Name, gvCari, SqlConnections.GetBaglanti(), trGenel); trGenel.Commit(); } catch (Exception hata) { trGenel.Rollback(); frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
public csHemenAlGetSet() // önce bu çalışır hemenal da bağlantı kurulur hamısına { try { CustomBinding binding = (CustomBinding)CreateDefaultBinding(); binding.SendTimeout = new TimeSpan(10, 10, 10); Get_Set_Fonksiyonlari = new HemenAlServis.hemenalserviceSoapClient(binding, new EndpointAddress("http://www.cikolatacerez.com/service/hemenal.asmx")); if (Get_Set_Fonksiyonlari.Auth(frmKullaniciGiris.HemenAl_Auth_Code, frmKullaniciGiris.HemenAl_username, frmKullaniciGiris.HemenAl_password) == "False") { XtraMessageBox.Show("HemenAl Entegrasyon Bilgileri Doğrulanamadı.\n İşlem İptal Edilecek.", "Ares", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
private void frmCariListe_Load(object sender, EventArgs e) { try { trGenel = SqlConnections.GetBaglanti().BeginTransaction(); CariGrubuGetir(); trGenel.Commit(); NesneleriBinle(); //gvCari.CustomizationForm.ControlBox = true; //gvCari.CustomizationForm.ContextMenuStrip.ShowCheckMargin = true; txtCariAdi.Select(); txtCariAdi.Focus(); } catch (Exception hata) { frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }
//public static int SatisFaturasiFiyatID, AlisFaturasiFiyatID; // bu ne ya bu böyle olmazki amk private void btnTamam_Click(object sender, EventArgs e) { try { if (txtKullaniciAdi.Text == "" || txtKullaniciSifre.Text == "") { txtKullaniciAdi.Focus(); return; } SqlConnections.GetBaglanti(); trGenel = SqlConnections.GetBaglanti().BeginTransaction(); // KullaniciID = DbClass.Kullanici.KullaniciKontrol(SqlConnections.GetBaglanti(), trGenel, txtKullaniciAdi.Text, txtKullaniciSifre.Text); clsTablolar.csKullanici islem = new clsTablolar.csKullanici(SqlConnections.GetBaglanti(), trGenel, -1); KullaniciID = islem.KullaniciKontrol(SqlConnections.GetBaglanti(), trGenel, txtKullaniciAdi.Text, txtKullaniciSifre.Text); if (KullaniciID != "-1") { // voip ve hemen ayalarının hepsi buradan alınacak #region VOIP BİLGİLERİ GETİRİLİYOR. using (SqlCommand cmd = new SqlCommand(@" SELECT AyarlarVOIPID,VOIPTanim,DisplayName,UserName,RegisterName,RegisterPassword,DomainServerHost,DomainServerPort,GelenAramaKontrolu,NotPenceresiAcilsin FROM dbo.AyarlarVOIP", SqlConnections.GetBaglanti(), trGenel)) { using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult)) { if (dr.Read()) { AyarlarVOIPID = dr["AyarlarVOIPID"].ToString(); VOIPTanim = dr["VOIPTanim"].ToString(); DisplayName = dr["DisplayName"].ToString(); UserName = dr["UserName"].ToString(); RegisterName = dr["RegisterName"].ToString(); RegisterPassword = dr["RegisterPassword"].ToString(); DomainServerHost = dr["DomainServerHost"].ToString(); DomainServerPort = dr["DomainServerPort"].ToString(); GelenAramaKontrolu = dr["GelenAramaKontrolu"].ToString(); NotPenceresiAcilsin = dr["NotPenceresiAcilsin"].ToString(); } } } #endregion #region HemenAl BİLGİLERİ GETİRİLİYOR. using (SqlCommand cmd = new SqlCommand(@"SELECT SiteAdi,Auth_Code,username,password,Aktif FROM HemenAlEntegrasyon", SqlConnections.GetBaglanti(), trGenel)) { using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult)) { if (dr.Read()) { HemenAl_Auth_Code = dr["Auth_Code"].ToString(); HemenAl_username = dr["username"].ToString(); HemenAl_password = dr["password"].ToString(); } } } #endregion #region genelAyarlar Hamısına clsTablolar.Ayarlar.csAyarlar Ayarlarr = new clsTablolar.Ayarlar.csAyarlar(SqlConnections.GetBaglanti(), trGenel); clsTablolar.Ayarlar.csYetkiler Yetkiler = new clsTablolar.Ayarlar.csYetkiler(SqlConnections.GetBaglanti(), trGenel); #endregion trGenel.Commit(); frmAnaForm frmAnaForm = new frmAnaForm(); this.Hide(); frmAnaForm.Show(); } else { trGenel.Commit(); XtraMessageBox.Show("Kullanıcı Kodu veya Şifresniz Hatalı.", " Ares ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception hata) { trGenel.Rollback(); frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } finally { //XmlDocument doc = new XmlDocument(); //doc.Load("Aresv2.exe.config"); //XmlNodeList nl = doc.SelectNodes("/configuration/userSettings/Aresv2.Properties.Settings/setting/value"); //nl[0].InnerText = txtKullaniciAdi.Text; //nl[1].InnerText = txtKullaniciSifre.Text; //doc.Save("Aresv2.exe.config"); //Aresv2.Properties.Settings.Default.KullaniciAdi = txtKullaniciAdi.EditValue.ToString(); //Aresv2.Properties.Settings.Default.KullaniciSifresi = txtKullaniciSifre.EditValue.ToString(); SqlConnections.BaglantiyiKapat(); } }
//DevExpress.XtraBars.Ribbon.RibbonControl ; private void AnaForm_Load(object sender, EventArgs e) { //frmInge frmm = new frmInge(); //frmm.Show(); //ribbon.ScreenModeChanged += Ribbon_ScreenModeChanged; ribbon.ApplicationIcon = (Bitmap)ımageCollection1.Images[0]; ribbon.ApplicationIcon.MakeTransparent(Color.White); try { trGenel = SqlConnections.GetBaglanti().BeginTransaction(); clsTablolar.Ayarlar.csAyarlar Ayarlar = new clsTablolar.Ayarlar.csAyarlar(SqlConnections.GetBaglanti(), trGenel); // bunu bir kere çalıştırıyoruz ki ayarlar gelsin. #region Cari Gorme Yetkisi Yoksa Cari Kartlar Listesi olmayacak if (clsTablolar.Ayarlar.csYetkiler.CariKartGorme == true) { btnCariListe.Visibility = BarItemVisibility.Always; } else if (clsTablolar.Ayarlar.csYetkiler.CariKartGorme == false) { btnCariListe.Visibility = BarItemVisibility.Never; } #endregion #region Cari Kart Ekleme Yetkisi Yoksa if (clsTablolar.Ayarlar.csYetkiler.CariKartEkleme == true) { btnCariEkle.Visibility = BarItemVisibility.Always; } else if (clsTablolar.Ayarlar.csYetkiler.CariKartEkleme == false) { btnCariEkle.Visibility = BarItemVisibility.Never; } #endregion #region Stok Kart Gorme Yetkisi if (clsTablolar.Ayarlar.csYetkiler.StokKartGorme == false) { barBtnStokListesi.Visibility = BarItemVisibility.Never; } #endregion #region Stok Kartı Açma Yetkisi if (clsTablolar.Ayarlar.csYetkiler.StokKartEkleme == false) { BarbtnYeniStokKarti.Visibility = BarItemVisibility.Never; } #endregion #region Stok Hareketleri Gorme Yetkisi if (clsTablolar.Ayarlar.csYetkiler.StokHareketleri == false) { rpStokHareketleri.Visible = false; } #endregion #region Fatura Gösterme // Fatura Listesinin hiç açılmaması için Hem Satış Hem Alış Faturasını Görünütüleme Yetkisi olmaması lazım // buraya birde iade edilen faturalar içinde kontrol lazım if (clsTablolar.Ayarlar.csYetkiler.SatisFaturasiGorme == false && clsTablolar.Ayarlar.csYetkiler.AlisFaturasiGorme == false) { btnFaturaListesi.Visibility = BarItemVisibility.Never; } #endregion #region Satis Faturası Ekleme if (clsTablolar.Ayarlar.csYetkiler.SatisFaturasiEkleme == false) { btnSatisFaturasi.Visibility = BarItemVisibility.Never; } #endregion #region Alis Faturası Ekleme if (clsTablolar.Ayarlar.csYetkiler.AlisFaturasiGorme == false) { btnAlisFaturasi.Visibility = BarItemVisibility.Never; } #endregion #region Sipariş Görme // Alınan veya verilen sipiriş görme yetkisine sahip değilse Sipariş listesi butonu gizli olacak if (clsTablolar.Ayarlar.csYetkiler.AlinanSiparisGorme == false && clsTablolar.Ayarlar.csYetkiler.VerilenSiparisGorme == false) { btnSiparisListesi.Visibility = BarItemVisibility.Never; } #endregion #region Alinan Siparis Ekleme if (clsTablolar.Ayarlar.csYetkiler.AlinanSiparisEkleme == false) { btnAlinanSiparis.Visibility = BarItemVisibility.Never; } #endregion #region Verilen Sipariş Ekleme if (clsTablolar.Ayarlar.csYetkiler.VerilenSiparisEklme == false) { btnVerilenSiparis.Visibility = BarItemVisibility.Never; } #endregion #region Basit Üretim Reçetesi Görme if (clsTablolar.Ayarlar.csYetkiler.BasitUretimReceteGosterme == false) { btnReceteListesi.Visibility = BarItemVisibility.Never; } #endregion #region Basit Üretim Reçetesi Ekleme if (clsTablolar.Ayarlar.csYetkiler.BasitUretimReceteEkleme == false) { btnReceteEkle.Visibility = BarItemVisibility.Never; } #endregion #region Cek Görebilme Yetksi // hem alınan çekleri hem verilen çekleri görebilme yetkisi yoksa Çek Listesi görünmeyecek if (clsTablolar.Ayarlar.csYetkiler.AlinanCekGosterme == false && clsTablolar.Ayarlar.csYetkiler.VerilenCekGosterme == false) { btnCekListesi.Visibility = BarItemVisibility.Never; } #endregion #region Verilen Çek Ekleme Yetkisi if (clsTablolar.Ayarlar.csYetkiler.VerilenCekEkleme == false) { btnVerilenCek.Visibility = BarItemVisibility.Never; } #endregion #region Alinan Çek Ekleme Yetkisi if (clsTablolar.Ayarlar.csYetkiler.AlinanCekEkleme == false) { btnAlinanCek.Visibility = BarItemVisibility.Never; } #endregion #region İş Başvuru Yetkileri if (clsTablolar.Ayarlar.csYetkiler.IsBasvuruGosterme == false) { barBtnIsBasvuruListesi.Visibility = BarItemVisibility.Never; } if (clsTablolar.Ayarlar.csYetkiler.IsBasvuruEkleme == false) { barBtnIsBasvuruKaydi.Visibility = BarItemVisibility.Never; } #endregion #region Ayarlar Yetkileri if (clsTablolar.Ayarlar.csYetkiler.Ayarlar == false) { PageAyarlar.Visible = false; } #endregion #region StokEtiket if (clsTablolar.Ayarlar.csYetkiler.StokEtiket == false) { barBtnStokEtiket.Visibility = BarItemVisibility.Never; } #endregion #region HemenAl İşlemleri // daha sonra HemenAl işlemleri ile ilgili yetkilendirmeler detaylandırılacak if (clsTablolar.Ayarlar.csYetkiler.HemenAlIslemleri == false) { PageHemenAl.Visible = false; } #endregion #region Personel İşlemleri if (clsTablolar.Ayarlar.csYetkiler.PersonelIslemleri == false) { PagePersonel.Visible = false; } #endregion #region Faturasindan Iade Gorme if (clsTablolar.Ayarlar.csYetkiler.AlisFaturasindanIadeEkleme == false) { btnAlistanIadeFatura.Visibility = BarItemVisibility.Never; } if (clsTablolar.Ayarlar.csYetkiler.SatisFaturasindanIadeEkleme == false) { btnSatisIadeFaturasi.Visibility = BarItemVisibility.Never; } #endregion #region CariHareket if (clsTablolar.Ayarlar.csYetkiler.CariHareketleriGorme == false) { btnCariHareketListesi.Visibility = BarItemVisibility.Never; } if (clsTablolar.Ayarlar.csYetkiler.CariHareketEkleme == false) { btnCariHareketEkle.Visibility = BarItemVisibility.Never; } #endregion #region StokSayim if (clsTablolar.Ayarlar.csYetkiler.StokSayim == false) { rpStokSayim.Visible = false; } #endregion #region Fiyat Analiz if (clsTablolar.Ayarlar.csYetkiler.FiyatAnaliz == false) { btnFiyatAnaliz.Visibility = BarItemVisibility.Never; } #endregion if (clsTablolar.Ayarlar.csYetkiler.AjandaGorme == false) { ribbonPage7.Visible = false; } #region Falan Filan Açıklama yaz bool GrupGozukecekmi = false; bool PageGozukecekmi = false; //burada gözükmesini engellediğimiz Butonların //Grubundaki butonları hepsi gizli oluyorsa pageGrup unda gözükmesini engelliyoruz //Page deki bütün grupların hepsi gizli ise page in visible ını false yapıyoruz for (int a = 0; a < ribbon.Pages.Count; a++) // ribbon da kaç adet sayfa varsa hepsini dolaşıyor { PageGozukecekmi = false; for (int b = 0; b < ribbon.Pages[a].Groups.Count; b++) // bir page in içinde kaç adet group varsa { // page in içinde deki falan filan buralara açıklamalar yaz GrupGozukecekmi = false; for (int c = 0; c < ribbon.Pages[a].Groups[b].ItemLinks.Count; c++) // group un içinde kaç adet buton varsa { if (ribbon.Pages[a].Groups[b].ItemLinks[c].Item.Visibility != BarItemVisibility.Never) // eğer içinde 1 tane bile never den farklı bişi varsa { // eğer bu alana girdiyse demektir ki // bulunan grup gözükecek // bulunan grup un gözükmemesi için içindekilerin hepsinin visibility özelleği never olması lazım GrupGozukecekmi = true; c = ribbon.Pages[a].Groups[b].ItemLinks.Count; } } if (GrupGozukecekmi == false) { ribbon.Pages[a].Groups[b].Visible = false; } //PageGozukecekmi = false; if (ribbon.Pages[a].Groups[b].Visible != false) { PageGozukecekmi = true; //b = ribbon.Pages[a].Groups.Count; } } if (PageGozukecekmi == false) { ribbon.Pages[a].Visible = false; } } #endregion trGenel.Commit(); if (Aresv2.Properties.Settings.Default.GelistiriciModu == false) { barBtnEksilenStokListesi.Visibility = BarItemVisibility.Never; btnStokIhtiyac.Visibility = BarItemVisibility.Never; barButtonItem30.Visibility = BarItemVisibility.Never; barBtnPaketListesi.Visibility = BarItemVisibility.Never; ribbonPageGroup22.Visible = false; ribbonPage10.Visible = false; rpUretim.Visible = false; ribbonPage4.Visible = false; PagePersonel.Visible = false; rpYonetim.Visible = false; ribbonPage1.Visible = false; PageHemenAl.Visible = false; } this.Text = SqlConnections._DB + " - " + " Versiyon = Beta 25- " + SqlConnections._Server; if (clsTablolar.Ayarlar.csYetkiler.AjandaGorme == true) { //barButtonItem_Ajanda_ItemClick(null, null); } } catch (Exception hata) { trGenel.Rollback(); frmHataBildir frmHataBildir = new frmHataBildir(hata.Message, hata.StackTrace); frmHataBildir.ShowDialog(); } }