{"id":103715,"date":"2022-04-05T15:36:50","date_gmt":"2022-04-05T13:36:50","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql"},"modified":"2022-04-05T15:36:50","modified_gmt":"2022-04-05T13:36:50","slug":"vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","title":{"rendered":"L\u00ebshimi i FerretDB 0.1, implementimi i MongoDB mbi baz\u00ebn e SGBD PostgreSQL.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00cbsht\u00eb publikuar l\u00ebshimi i projektit FerretDB 0.1 (i m\u00ebparshmi MangoDB), e cila lejon z\u00ebvend\u00ebsimin e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave dokumentare MongoDB me PostgreSQL pa b\u00ebr\u00eb ndryshime n\u00eb kodin e aplikacioneve. FerretDB implementohet si nj\u00eb server proxy, q\u00eb p\u00ebrkthen k\u00ebrkesat p\u00ebr MangoDB n\u00eb k\u00ebrkesa SQL p\u00ebr PostgreSQL, duke mund\u00ebsuar p\u00ebrdorimin e PostgreSQL si depo reale t\u00eb t\u00eb dh\u00ebnave. Kodi \u00ebsht\u00eb shkruar n\u00eb gjuh\u00ebn Go dhe shp\u00ebrndahet n\u00ebn licenc\u00ebn Apache 2.0.        <\/p>\n<p>K\u00ebrkesa p\u00ebr migrim mund t\u00eb lind\u00eb p\u00ebr shkak t\u00eb kalimit t\u00eb MongoDB n\u00eb nj\u00eb licenc\u00eb jo t\u00eb lir\u00eb SSPL, e cila \u00ebsht\u00eb e bazuar n\u00eb licenc\u00ebn AGPLv3, por nuk \u00ebsht\u00eb e hapur, pasi p\u00ebrmban nj\u00eb k\u00ebrkes\u00eb diskriminuese q\u00eb imponon fournizim n\u00ebn licenc\u00ebn SSPL jo vet\u00ebm p\u00ebr kodin e vet\u00eb aplikacionit, por edhe p\u00ebr tekstet burimore t\u00eb t\u00eb gjith\u00eb komponenteve t\u00eb p\u00ebrfshir\u00eb n\u00eb ofrimin e sh\u00ebrbimit cloud.     <\/p>\n<p>Si audienc\u00eb e synuar, FerretDB ka t\u00eb p\u00ebrmendur p\u00ebrdoruesit q\u00eb nuk p\u00ebrdorin n\u00eb aplikacionet e tyre funksionalitetet e avancuara t\u00eb MongoDB, por d\u00ebshirojn\u00eb t\u00eb p\u00ebrdorin nj\u00eb stak t\u00eb plot\u00eb t\u00eb hapur programor. N\u00eb faz\u00ebn aktuale t\u00eb zhvillimit, FerretDB mb\u00ebshtet vet\u00ebm nj\u00eb pjes\u00eb t\u00eb mund\u00ebsive t\u00eb MongoDB q\u00eb p\u00ebrdoren m\u00eb shpesh n\u00eb aplikacionet tipike. N\u00eb t\u00eb ardhmen, planifikojn\u00eb t\u00eb arrijn\u00eb p\u00ebrputhshm\u00ebri t\u00eb plot\u00eb me shofer\u00ebt p\u00ebr MongoDB dhe t\u00eb ofrojn\u00eb mund\u00ebsin\u00eb e p\u00ebrdorimit t\u00eb FerretDB si nj\u00eb z\u00ebvend\u00ebsim transparent p\u00ebr MongoDB.      <\/p>\n<p>Kujtojm\u00eb se MongoDB z\u00eb nj\u00eb vend nd\u00ebrmjet sistemeve t\u00eb shpejta dhe t\u00eb shkall\u00ebzueshme q\u00eb punojn\u00eb me t\u00eb dh\u00ebna n\u00eb formatin \u00e7el\u00ebs\/vler\u00eb dhe SGBD-ve relacionale, t\u00eb pasura me funksionalitete dhe t\u00eb p\u00ebrshtatshme p\u00ebr nd\u00ebrtimin e pyetjeve. MongoDB mb\u00ebshtet ruajtjen e dokumenteve n\u00eb nj\u00eb format t\u00eb ngjash\u00ebm me JSON, ka nj\u00eb gjuh\u00eb mjaft fleksibile p\u00ebr nd\u00ebrtimin e pyetjeve, mund t\u00eb krijoj\u00eb indekse p\u00ebr atribute t\u00eb ndryshme t\u00eb ruajtura, siguron n\u00eb m\u00ebnyr\u00eb efikase ruajtjen e objekteve t\u00eb m\u00ebdha binare, mb\u00ebshtet regjistrimin e operacioneve p\u00ebr ndryshimin dhe shtimin e t\u00eb dh\u00ebnave n\u00eb BD, mund t\u00eb funksionoj\u00eb sipas paradigm\u00ebs Map\/Reduce, si dhe mb\u00ebshtet replikimin dhe nd\u00ebrtimin e konfigurimeve me toleranc\u00eb ndaj d\u00ebshtimeve.     <\/p>\n<p>N\u00eb l\u00ebshimin FerretDB 0.1.0, metoda e nxjerrjes s\u00eb t\u00eb dh\u00ebnave nga PostgreSQL \u00ebsht\u00eb riformatuar krejt\u00ebsisht. M\u00eb par\u00eb, p\u00ebr \u00e7do k\u00ebrkes\u00eb hyr\u00ebse MongoDB formohej nj\u00eb k\u00ebrkes\u00eb SQL p\u00ebr PostgreSQL, q\u00eb p\u00ebrdorte funksione p\u00ebr t\u00eb punuar me formatin JSON dhe kryente filtrimin e rezultateve n\u00eb an\u00ebn e PostgreSQL. P\u00ebr shkak t\u00eb ndryshimeve n\u00eb semantik\u00ebn e funksioneve json t\u00eb PostgreSQL dhe MongoDB, kishte mosfunksionime n\u00eb krahasim dhe renditje t\u00eb llojeve t\u00eb ndryshme. P\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb problem, tani nxirret nj\u00eb sasi e tep\u00ebrt e t\u00eb dh\u00ebnave nga PostgreSQL, nd\u00ebrsa filtrimi i rezultatit b\u00ebhet n\u00eb an\u00ebn e FerretDB, duke lejuar p\u00ebrs\u00ebritjen e sjelljes s\u00eb MongoDB n\u00eb shumic\u00ebn e situatave.     <\/p>\n<p>Kostoja e p\u00ebrmir\u00ebsimit t\u00eb q\u00ebndrueshm\u00ebris\u00eb ka qen\u00eb ulja e performanc\u00ebs, e cila n\u00eb l\u00ebshimet e ardhshme pritet t\u00eb kompensohet p\u00ebrmes filtrimit selektiv n\u00eb an\u00ebn e FerretDB vet\u00ebm p\u00ebr k\u00ebrkesat, p\u00ebr t\u00eb cilat v\u00ebrehet nj\u00eb mosmarr\u00ebveshje n\u00eb sjellje. P\u00ebr shembull, k\u00ebrkesa \"db.collection.find({_id: 'some-id-value'})\" mund t\u00eb p\u00ebrpunoj\u00eb plot\u00ebsisht n\u00eb PostgreSQL. Objektivi kryesor i projektit n\u00eb k\u00ebt\u00eb faz\u00eb t\u00eb zhvillimit \u00ebsht\u00eb arritja e q\u00ebndrueshm\u00ebris\u00eb me MongoDB, nd\u00ebrsa performanca p\u00ebr momentin \u00ebsht\u00eb n\u00eb plan t\u00eb dyt\u00eb. N\u00eb ndryshimet funksionale t\u00eb versionit t\u00eb ri, p\u00ebrmendet mb\u00ebshtetje p\u00ebr t\u00eb gjitha operator\u00ebt bitor\u00eb, operatorin e krahasimit \"$eq\", si dhe operator\u00ebt \"$elemMatch\" dhe \"$bitsAllClear\".<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=56971\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. FerretDB \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a MangoDB \u0432 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a PostgreSQL, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PostgreSQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Go \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. \u041f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-103715","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a FerretDB 0.1, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MongoDB \u043d\u0430 \u0431\u0430\u0437\u0435 \u0421\u0423\u0411\u0414 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2022-04-05T13:36:50+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-04-05T13:36:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Versioni 0.1 i FerretDB, implementimi i MongoDB mbi baz\u00ebn e t\u00eb dh\u00ebnave PostgreSQL | ProHoster","description":"\u00cbsht\u00eb publikuar versioni 0.1 i projektit FerretDB (ish MangoDB), i cili lejon z\u00ebvend\u00ebsimin e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave dokumentore MongoDB me PostgreSQL pa b\u00ebr\u00eb ndryshime n\u00eb kodin e aplikacioneve.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a FerretDB 0.1, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MongoDB \u043d\u0430 \u0431\u0430\u0437\u0435 \u0421\u0423\u0411\u0414 PostgreSQL | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FerretDB 0.1 (\u0431\u044b\u0432\u0448\u0438\u0439 MangoDB), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414 MongoDB \u043d\u0430 PostgreSQL \u0431\u0435\u0437 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.","og:url":"https:\/\/prohoster.info\/sq\/blog\/news\/vypusk-ferretdb-0-1-realizaczii-mongodb-na-baze-subd-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2022-04-05T13:36:50+00:00","article:modified_time":"2022-04-05T13:36:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"103715","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2022-04-05 13:37:13","updated":"2022-10-02 21:35:28","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/103715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=103715"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/103715\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=103715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=103715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=103715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}