Body: <p>)</p>
  <p>i am a newbe with drupal7=&gt;civicrm and found by chance an &quot;open door&quot; probably dynamically genrated by ajax:</p>
  <p>=&gt; https://{our domain}/crm/civicrm/ajax/l10n-js/
  The browser shows this:</p>
  <p>*// <a href="http://civicrm.org/licensing" rel="nofollow noreferrer">http://civicrm.org/licensing</a>
  //  Generated 17 May 2021 14:28:02
  (function($) {
  // Config settings
  CRM.config.userFramework = &quot;Drupal&quot;;
  CRM.config.resourceBase = &quot;https://machmit.aufstehen.de/crm/sites/all/modules/civicrm/&quot;;
  CRM.config.packagesBase = &quot;https://machmit.aufstehen.de/crm/sites/all/modules/civicrm/packages/&quot;;
  CRM.config.lcMessages = &quot;de_DE&quot;;
  CRM.config.locale = &quot;de_DE&quot;;
  CRM.config.cid = 15944;
  $.datepicker._defaults.dateFormat = CRM.config.dateInputFormat = &quot;mm/dd/yy&quot;;
  CRM.config.timeIs24Hr = false;
  CRM.config.ajaxPopupsEnabled = true;
  CRM.config.allowAlertAutodismissal = true;
  CRM.config.resourceCacheCode = &quot;JfC51&quot;;
  // Merge entityRef settings
  CRM.config.entityRef = $.extend({}, {&quot;filters&quot;:{&quot;Contact&quot;:[{&quot;key&quot;:&quot;contact_type&quot;,&quot;value&quot;:&quot;Kontaktart&quot;},{&quot;key&quot;:&quot;group&quot;,&quot;value&quot;:&quot;Gruppe&quot;,&quot;entity&quot;:&quot;GroupContact&quot;},{&quot;key&quot;:&quot;tag&quot;,&quot;value&quot;:&quot;Tag&quot;,&quot;entity&quot;:&quot;EntityTag&quot;},{&quot;key&quot;:&quot;city&quot;,&quot;value&quot;:&quot;Stadt&quot;,&quot;type&quot;:&quot;text&quot;,&quot;entity&quot;:&quot;Address&quot;},{&quot;key&quot;:&quot;postal_code&quot;,&quot;value&quot;:&quot;Postleitzahl&quot;,&quot;type&quot;:&quot;text&quot;,&quot;entity&quot;:&quot;Address&quot;},{&quot;key&quot;:&quot;state_province&quot;,&quot;value&quot;:&quot;Bundesland&quot;,&quot;entity&quot;:&quot;Address&quot;},{&quot;key&quot;:&quot;country&quot;,&quot;value&quot;:&quot;Land&quot;,&quot;entity&quot;:&quot;Address&quot;},{&quot;key&quot;:&quot;first_name&quot;,&quot;value&quot;:&quot;Vorname&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;}},{&quot;key&quot;:&quot;last_name&quot;,&quot;value&quot;:&quot;Nachname&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;}},{&quot;key&quot;:&quot;nick_name&quot;,&quot;value&quot;:&quot;Nick Name&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;}},{&quot;key&quot;:&quot;organization_name&quot;,&quot;value&quot;:&quot;Employer name&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;}},{&quot;key&quot;:&quot;gender_id&quot;,&quot;value&quot;:&quot;Geschlecht&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;}},{&quot;key&quot;:&quot;is_deceased&quot;,&quot;value&quot;:&quot;Verstorben&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;}},{&quot;key&quot;:&quot;contact_id&quot;,&quot;value&quot;:&quot;CiviCRM ID&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;key&quot;:&quot;external_identifier&quot;,&quot;value&quot;:&quot;Externe ID&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;key&quot;:&quot;source&quot;,&quot;value&quot;:&quot;Bezugsquelle&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;Email&quot;:{&quot;0&quot;:{&quot;key&quot;:&quot;contact_id.contact_type&quot;,&quot;value&quot;:&quot;Kontaktart&quot;,&quot;entity&quot;:&quot;Contact&quot;},&quot;7&quot;:{&quot;key&quot;:&quot;contact_id.first_name&quot;,&quot;value&quot;:&quot;Vorname&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;},&quot;entity&quot;:&quot;Contact&quot;},&quot;8&quot;:{&quot;key&quot;:&quot;contact_id.last_name&quot;,&quot;value&quot;:&quot;Nachname&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;},&quot;entity&quot;:&quot;Contact&quot;},&quot;9&quot;:{&quot;key&quot;:&quot;contact_id.nick_name&quot;,&quot;value&quot;:&quot;Nick Name&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;},&quot;entity&quot;:&quot;Contact&quot;},&quot;10&quot;:{&quot;key&quot;:&quot;contact_id.organization_name&quot;,&quot;value&quot;:&quot;Employer name&quot;,&quot;type&quot;:&quot;text&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;},&quot;entity&quot;:&quot;Contact&quot;},&quot;11&quot;:{&quot;key&quot;:&quot;contact_id.gender_id&quot;,&quot;value&quot;:&quot;Geschlecht&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;},&quot;entity&quot;:&quot;Contact&quot;},&quot;12&quot;:{&quot;key&quot;:&quot;contact_id.is_deceased&quot;,&quot;value&quot;:&quot;Verstorben&quot;,&quot;condition&quot;:{&quot;contact_type&quot;:&quot;Individual&quot;},&quot;entity&quot;:&quot;Contact&quot;},&quot;13&quot;:{&quot;key&quot;:&quot;contact_id&quot;,&quot;value&quot;:&quot;CiviCRM ID&quot;,&quot;type&quot;:&quot;text&quot;},&quot;14&quot;:{&quot;key&quot;:&quot;contact_id.external_identifier&quot;,&quot;value&quot;:&quot;Externe ID&quot;,&quot;type&quot;:&quot;text&quot;,&quot;entity&quot;:&quot;Contact&quot;},&quot;15&quot;:{&quot;key&quot;:&quot;contact_id.source&quot;,&quot;value&quot;:&quot;Bezugsquelle&quot;,&quot;type&quot;:&quot;text&quot;,&quot;entity&quot;:&quot;Contact&quot;}},&quot;Activity&quot;:[{&quot;key&quot;:&quot;activity_type_id&quot;,&quot;value&quot;:&quot;Aktivit\u00e4tstyp&quot;},{&quot;key&quot;:&quot;status_id&quot;,&quot;value&quot;:&quot;Status der Aktivit\u00e4t&quot;}]},&quot;links&quot;:{&quot;Contact&quot;:[{&quot;label&quot;:&quot;New Individual&quot;,&quot;url&quot;:&quot;/crm/civicrm/profile/create?reset=1&amp;context=dialog&amp;gid=4&quot;,&quot;type&quot;:&quot;Individual&quot;,&quot;icon&quot;:&quot;fa-user&quot;},{&quot;label&quot;:&quot;New Organization&quot;,&quot;url&quot;:&quot;/crm/civicrm/profile/create?reset=1&amp;context=dialog&amp;gid=5&quot;,&quot;type&quot;:&quot;Organization&quot;,&quot;icon&quot;:&quot;fa-building&quot;},{&quot;label&quot;:&quot;New Household&quot;,&quot;url&quot;:&quot;/crm/civicrm/profile/create?reset=1&amp;context=dialog&amp;gid=6&quot;,&quot;type&quot;:&quot;Household&quot;,&quot;icon&quot;:&quot;fa-home&quot;}]}}, CRM.config.entityRef || {});
  // Initialize CRM.url and CRM.formatMoney
  CRM.url({back: '/crm/civicrm-placeholder-url-path?civicrm-placeholder-url-query=1', front: '/crm/civicrm-placeholder-url-path?civicrm-placeholder-url-query=1'});
  CRM.formatMoney('init', false, &quot;\u20ac 1.234,56&quot;);
  // Localize select2
  $.fn.select2.defaults.formatNoMatches = &quot;Nichts gefunden.&quot;;
  $.fn.select2.defaults.formatLoadMore = &quot;Lade...&quot;;
  $.fn.select2.defaults.formatSearching = &quot;Suche...&quot;;
  $.fn.select2.defaults.formatInputTooShort = function() {
  return ($(this).data('api-entity') === 'contact' || $(this).data('api-entity') === 'Contact') ? &quot;Hier Namen oder E-Mail-Adresse eintragen...&quot; : &quot;Einen Suchbegriff eingeben...&quot;;
  };
  // Localize jQuery UI
  $.ui.dialog.prototype.options.closeText = &quot;SchlieÃŸen&quot;;
  // Localize jQuery DataTables
  // Note the first two defaults set here aren't localization related,
  // but need to be set globally for all DataTables.
  $.extend( $.fn.dataTable.defaults, {
  &quot;searching&quot;: false,
  &quot;jQueryUI&quot;: true,
  &quot;language&quot;: {
  &quot;emptyTable&quot;: &quot;Nichts gefunden.&quot;,
  &quot;info&quot;:  &quot;EintrÃ¤ge <em>START</em> bis <em>END</em> von insgesamt <em>TOTAL</em>&quot;,
  &quot;infoEmpty&quot;: &quot;Zeige 0 bis 0 von 0 EintrÃ¤gen&quot;,
  &quot;infoFiltered&quot;: &quot;(filtered from <em>MAX</em> total entries)&quot;,
  &quot;infoPostFix&quot;: &quot;&quot;,
  &quot;thousands&quot;: &quot;.&quot;,
  &quot;lengthMenu&quot;: &quot;<em>MENU</em> EintrÃ¤ge anzeigen&quot;,
  &quot;loadingRecords&quot;: &quot; &quot;,
  &quot;processing&quot;: &quot; &quot;,
  &quot;zeroRecords&quot;: &quot;Nichts gefunden.&quot;,
  &quot;paginate&quot;: {
  &quot;first&quot;: &quot;Erste&quot;,
  &quot;last&quot;: &quot;Letzte&quot;,
  &quot;next&quot;: &quot;Weiter&quot;,
  &quot;previous&quot;: &quot;ZurÃ¼ck&quot;
  }
  }
  });
  // Localize strings for jQuery.validate
  var messages = {
  required: &quot;Dieses Feld ist ein Pflichtfeld.&quot;,
  remote: &quot;Bitte korrigieren Sie dieses Feld.&quot;,
  email: &quot;Bitte geben Sie eine gÃ¼ltige E-Mailadresse ein.&quot;,
  url: &quot;Geben Sie eine gÃ¼ltige URL ein.&quot;,
  date: &quot;Bitte gebe ein gÃ¼ltiges Datum ein.&quot;,
  dateISO: &quot;Bitte gebe ein gÃ¼ltiges Datum ein (JJJJ-MM-TT).&quot;,
  number: &quot;Geben Sie eine gÃ¼ltige Zahl ein.&quot;,
  digits: &quot;Bitte gebe nur Ziffern ein. &quot;,
  creditcard: &quot;Bitte geben Sie eine gÃ¼ltige Kreditkartennummer ein. &quot;,
  equalTo: &quot;Bitte geben Sie die gleichen Werter noch einmal ein.&quot;,
  accept: &quot;Please enter a value with a valid extension.&quot;,
  maxlength: $.validator.format(&quot;Please enter no more than {0} characters.&quot;),
  minlength: $.validator.format(&quot;Please enter at least {0} characters.&quot;),
  rangelength: $.validator.format(&quot;Please enter a value between {0} and {1} characters long.&quot;),
  range: $.validator.format(&quot;Please enter a value between {0} and {1}.&quot;),
  max: $.validator.format(&quot;Please enter a value less than or equal to {0}.&quot;),
  min: $.validator.format(&quot;Please enter a value greater than or equal to {0}.&quot;)
  };
  $.extend($.validator.messages, messages);</p>
  <p>var params = {
  errorClass: 'crm-inline-error alert-danger',
  messages: {},
  ignore: '.select2-offscreen, [readonly], :hidden:not(.crm-select2), .crm-no-validate',
  ignoreTitle: true,
  errorPlacement: function(error, element) {
  if (element.prop('type') === 'radio') {
  error.appendTo(element.parent('div.content'));
  }
  else {
  error.insertAfter(element);
  }
  }
  };
  // use civicrm notifications when there are errors
  params.invalidHandler = function(form, validator) {
  // If there is no container for display then red text will still show next to the invalid fields
  // but there will be no overall message. Currently the container is only available on backoffice pages.
  if ($('#crm-notification-container').length) {
  $.each(validator.errorList, function(k, error) {
  $(error.element).parents('.crm-custom-accordion.collapsed').crmAccordionToggle();
  $(error.element).crmError(error.message);
  });
  }
  };
  CRM.validate = {
  _defaults: params,
  params: {},
  functions: []
  };
  // Load polyfill
  if (!('Promise' in window)) {
  CRM.loadScript(CRM.config.resourceBase + 'bower_components/es6-promise/es6-promise.auto.min.js');
  }
  })(jQuery);*</p>
  <p>Is this the way it should be ???</p>
  <p>Thanks a lot for any suggestion how to protect this....</p>
  <p>Best regards
  Dieter</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-05-17T13:30:33.877Z
Comments.Text: I can't reproduce this either on a test site or the public demo http://dmaster.demo.civicrm.org. My guess is something about your web server configuration?
Comments.UserDisplayName: Demerit
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-05-18T15:04:12.723Z
Comments.Text: Hi Demerit,
  thx ;-) 
  The drupal7/civicrm is installed via yunohost.
  WebServer is nginx and i did not change any configuration by myself.
  
  There are installed these addons also:
  #  yunohost app list
  apps:
    0: civicrm_drupal7
    1: my_webapp
    2: phpmyadmin
    3: redirect
  
  best regards
  Dieter
Comments.UserDisplayName: thedi
Tags: <ajax>
Title: how to protect "dynamically by ajax generated .js-file"?
ThreadText: # how to protect "dynamically by ajax generated .js-file"?
  
  (Asked by: username_0 on 2021-05-17)
  
  )
  
  i am a newbe with drupal7=>civicrm and found by chance an "open door" probably dynamically genrated by ajax:
  
  => https://{our domain}/crm/civicrm/ajax/l10n-js/
  The browser shows this:
  
  \*// <http://civicrm.org/licensing>
  // Generated 17 May 2021 14:28:02
  (function($) {
  // Config settings
  CRM.config.userFramework = "Drupal";
  CRM.config.resourceBase = "https://machmit.aufstehen.de/crm/sites/all/modules/civicrm/";
  CRM.config.packagesBase = "https://machmit.aufstehen.de/crm/sites/all/modules/civicrm/packages/";
  CRM.config.lcMessages = "de\_DE";
  CRM.config.locale = "de\_DE";
  CRM.config.cid = 15944;
  $.datepicker.\_defaults.dateFormat = CRM.config.dateInputFormat = "mm/dd/yy";
  CRM.config.timeIs24Hr = false;
  CRM.config.ajaxPopupsEnabled = true;
  CRM.config.allowAlertAutodismissal = true;
  CRM.config.resourceCacheCode = "JfC51";
  // Merge entityRef settings
  CRM.config.entityRef = $.extend({}, {"filters":{"Contact":[{"key":"contact\_type","value":"Kontaktart"},{"key":"group","value":"Gruppe","entity":"GroupContact"},{"key":"tag","value":"Tag","entity":"EntityTag"},{"key":"city","value":"Stadt","type":"text","entity":"Address"},{"key":"postal\_code","value":"Postleitzahl","type":"text","entity":"Address"},{"key":"state\_province","value":"Bundesland","entity":"Address"},{"key":"country","value":"Land","entity":"Address"},{"key":"first\_name","value":"Vorname","type":"text","condition":{"contact\_type":"Individual"}},{"key":"last\_name","value":"Nachname","type":"text","condition":{"contact\_type":"Individual"}},{"key":"nick\_name","value":"Nick Name","type":"text","condition":{"contact\_type":"Individual"}},{"key":"organization\_name","value":"Employer name","type":"text","condition":{"contact\_type":"Individual"}},{"key":"gender\_id","value":"Geschlecht","condition":{"contact\_type":"Individual"}},{"key":"is\_deceased","value":"Verstorben","condition":{"contact\_type":"Individual"}},{"key":"contact\_id","value":"CiviCRM ID","type":"text"},{"key":"external\_identifier","value":"Externe ID","type":"text"},{"key":"source","value":"Bezugsquelle","type":"text"}],"Email":{"0":{"key":"contact\_id.contact\_type","value":"Kontaktart","entity":"Contact"},"7":{"key":"contact\_id.first\_name","value":"Vorname","type":"text","condition":{"contact\_type":"Individual"},"entity":"Contact"},"8":{"key":"contact\_id.last\_name","value":"Nachname","type":"text","condition":{"contact\_type":"Individual"},"entity":"Contact"},"9":{"key":"contact\_id.nick\_name","value":"Nick Name","type":"text","condition":{"contact\_type":"Individual"},"entity":"Contact"},"10":{"key":"contact\_id.organization\_name","value":"Employer name","type":"text","condition":{"contact\_type":"Individual"},"entity":"Contact"},"11":{"key":"contact\_id.gender\_id","value":"Geschlecht","condition":{"contact\_type":"Individual"},"entity":"Contact"},"12":{"key":"contact\_id.is\_deceased","value":"Verstorben","condition":{"contact\_type":"Individual"},"entity":"Contact"},"13":{"key":"contact\_id","value":"CiviCRM ID","type":"text"},"14":{"key":"contact\_id.external\_identifier","value":"Externe ID","type":"text","entity":"Contact"},"15":{"key":"contact\_id.source","value":"Bezugsquelle","type":"text","entity":"Contact"}},"Activity":[{"key":"activity\_type\_id","value":"Aktivit\u00e4tstyp"},{"key":"status\_id","value":"Status der Aktivit\u00e4t"}]},"links":{"Contact":[{"label":"New Individual","url":"/crm/civicrm/profile/create?reset=1&context=dialog&gid=4","type":"Individual","icon":"fa-user"},{"label":"New Organization","url":"/crm/civicrm/profile/create?reset=1&context=dialog&gid=5","type":"Organization","icon":"fa-building"},{"label":"New Household","url":"/crm/civicrm/profile/create?reset=1&context=dialog&gid=6","type":"Household","icon":"fa-home"}]}}, CRM.config.entityRef || {});
  // Initialize CRM.url and CRM.formatMoney
  CRM.url({back: '/crm/civicrm-placeholder-url-path?civicrm-placeholder-url-query=1', front: '/crm/civicrm-placeholder-url-path?civicrm-placeholder-url-query=1'});
  CRM.formatMoney('init', false, "\u20ac 1.234,56");
  // Localize select2
  $.fn.select2.defaults.formatNoMatches = "Nichts gefunden.";
  $.fn.select2.defaults.formatLoadMore = "Lade...";
  $.fn.select2.defaults.formatSearching = "Suche...";
  $.fn.select2.defaults.formatInputTooShort = function() {
  return ($(this).data('api-entity') === 'contact' || $(this).data('api-entity') === 'Contact') ? "Hier Namen oder E-Mail-Adresse eintragen..." : "Einen Suchbegriff eingeben...";
  };
  // Localize jQuery UI
  $.ui.dialog.prototype.options.closeText = "SchlieÃŸen";
  // Localize jQuery DataTables
  // Note the first two defaults set here aren't localization related,
  // but need to be set globally for all DataTables.
  $.extend( $.fn.dataTable.defaults, {
  "searching": false,
  "jQueryUI": true,
  "language": {
  "emptyTable": "Nichts gefunden.",
  "info": "EintrÃ¤ge *START* bis *END* von insgesamt *TOTAL*",
  "infoEmpty": "Zeige 0 bis 0 von 0 EintrÃ¤gen",
  "infoFiltered": "(filtered from *MAX* total entries)",
  "infoPostFix": "",
  "thousands": ".",
  "lengthMenu": "*MENU* EintrÃ¤ge anzeigen",
  "loadingRecords": " ",
  "processing": " ",
  "zeroRecords": "Nichts gefunden.",
  "paginate": {
  "first": "Erste",
  "last": "Letzte",
  "next": "Weiter",
  "previous": "ZurÃ¼ck"
  }
  }
  });
  // Localize strings for jQuery.validate
  var messages = {
  required: "Dieses Feld ist ein Pflichtfeld.",
  remote: "Bitte korrigieren Sie dieses Feld.",
  email: "Bitte geben Sie eine gÃ¼ltige E-Mailadresse ein.",
  url: "Geben Sie eine gÃ¼ltige URL ein.",
  date: "Bitte gebe ein gÃ¼ltiges Datum ein.",
  dateISO: "Bitte gebe ein gÃ¼ltiges Datum ein (JJJJ-MM-TT).",
  number: "Geben Sie eine gÃ¼ltige Zahl ein.",
  digits: "Bitte gebe nur Ziffern ein. ",
  creditcard: "Bitte geben Sie eine gÃ¼ltige Kreditkartennummer ein. ",
  equalTo: "Bitte geben Sie die gleichen Werter noch einmal ein.",
  accept: "Please enter a value with a valid extension.",
  maxlength: $.validator.format("Please enter no more than {0} characters."),
  minlength: $.validator.format("Please enter at least {0} characters."),
  rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
  range: $.validator.format("Please enter a value between {0} and {1}."),
  max: $.validator.format("Please enter a value less than or equal to {0}."),
  min: $.validator.format("Please enter a value greater than or equal to {0}.")
  };
  $.extend($.validator.messages, messages);
  
  var params = {
  errorClass: 'crm-inline-error alert-danger',
  messages: {},
  ignore: '.select2-offscreen, [readonly], :hidden:not(.crm-select2), .crm-no-validate',
  ignoreTitle: true,
  errorPlacement: function(error, element) {
  if (element.prop('type') === 'radio') {
  error.appendTo(element.parent('div.content'));
  }
  else {
  error.insertAfter(element);
  }
  }
  };
  // use civicrm notifications when there are errors
  params.invalidHandler = function(form, validator) {
  // If there is no container for display then red text will still show next to the invalid fields
  // but there will be no overall message. Currently the container is only available on backoffice pages.
  if ($('#crm-notification-container').length) {
  $.each(validator.errorList, function(k, error) {
  $(error.element).parents('.crm-custom-accordion.collapsed').crmAccordionToggle();
  $(error.element).crmError(error.message);
  });
  }
  };
  CRM.validate = {
  \_defaults: params,
  params: {},
  functions: []
  };
  // Load polyfill
  if (!('Promise' in window)) {
  CRM.loadScript(CRM.config.resourceBase + 'bower\_components/es6-promise/es6-promise.auto.min.js');
  }
  })(jQuery);\*
  
  Is this the way it should be ???
  
  Thanks a lot for any suggestion how to protect this....
  
  Best regards
  Dieter
  
  **Tags:** ajax
  
  > **Comments:**
  > **username_1**: I can't reproduce this either on a test site or the public demo http://dmaster.demo.civicrm.org. My guess is something about your web server configuration?  
  > **username_0**: Hi username_1, thx ;-)  The drupal7/civicrm is installed via yunohost. WebServer is nginx and i did not change any configuration by myself.  There are installed these addons also: #  yunohost app list apps:   0: civicrm_drupal7   1: my_webapp   2: phpmyadmin   3: redirect  best regards Dieter  
  
  ---
  
  ## 0 answers
  
  