  
    uint64_t cnt = 0;
    bool filterInitialized = false;
  
    while (!do_exit) {
      sm.update();
      if (filterInitialized){
 
</s> remove       bool inputsOK = sm.allAliveAndValid();
      bool gpsOK = this->isGpsOK();
 </s> add       bool inputsOK = sm.allAliveAndValid() && this->are_inputs_ok();
      bool gpsOK = this->is_gps_ok();
  const std::vector<std::string> critical_input_services = {"cameraOdometry", "liveCalibration", "accelerometer", "gyroscope"};
  for (std::string service : critical_input_services) {
    this->observation_values_invalid.insert({service, 0.0});
  }
  
    uint64_t cnt = 0;
    bool filterInitialized = false;
  const std::vector<std::string> critical_input_services = {"cameraOdometry", "liveCalibration", "accelerometer", "gyroscope"};
  for (std::string service : critical_input_services) {
    this->observation_values_invalid.insert({service, 0.0});
  }
  
    while (!do_exit) {
      sm.update();
      if (filterInitialized){
keep keep add keep keep keep keep
 [locationd] Add input checks (#26460)

* add input checks with same decay as reset_tracker

* add observation timings check

* typo

* bugfix

* improve offline locationd visibility

* sbugfix offline lld

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> 
selfdrive/locationd/locationd.cc