Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/alepython-byte_ganaderia-backend.json
T

1 line
153 KiB
JSON

{"repo": "alepython-byte/ganaderia-backend", "files": {"src/main/resources/application.properties": {"284501d8a36bfe223fb7e308de6d09420e10e2e2": {"t": 1785745401.8043172, "n": 9747, "h": "703e209151e4e1d5", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\napp.abuse-protection.outbox-requeue.enabled=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_ENABLED:true}\napp.abuse-protection.outbox-requeue.window=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_WINDOW:10m}\napp.abuse-protection.outbox-requeue.max-attempts=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_MAX_ATTEMPTS:5}\napp.abuse-protection.outbox-requeue.block-duration=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_BLOCK_DURATION:10m}\napp.abuse-protection.email.enabled=${APP_ABUSE_PROTECTION_EMAIL_ENABLED:true}\napp.abuse-protection.email.recipient.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_WINDOW:10m}\napp.abuse-protection.email.recipient.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_MAX_ATTEMPTS:10}\napp.abuse-protection.email.recipient.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_BLOCK_DURATION:10m}\napp.abuse-protection.email.recipient-event-type.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_WINDOW:10m}\napp.abuse-protection.email.recipient-event-type.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_MAX_ATTEMPTS:5}\napp.abuse-protection.email.recipient-event-type.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_BLOCK_DURATION:10m}\napp.abuse-protection.email.channel.window=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_WINDOW:10m}\napp.abuse-protection.email.channel.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_MAX_ATTEMPTS:100}\napp.abuse-protection.email.channel.block-duration=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:claude}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\napp.ai.deepseek.api-key=${DEEPSEEK_API_KEY:}\napp.ai.deepseek.model=${DEEPSEEK_MODEL:deepseek-chat}\napp.ai.deepseek.base-url=${DEEPSEEK_BASE_URL:https://api.deepseek.com/v1}\napp.ai.deepseek.connect-timeout=${DEEPSEEK_CONNECT_TIMEOUT:5s}\napp.ai.deepseek.read-timeout=${DEEPSEEK_READ_TIMEOUT:30s}\napp.ai.deepseek.max-tokens=${DEEPSEEK_MAX_TOKENS:500}\n\napp.ai.claude.api-key=${CLAUDE_API_KEY:}\napp.ai.claude.api-url=https://api.anthropic.com/v1/messages\napp.ai.claude.model=claude-haiku-4-5-20251001\napp.ai.claude.max-tokens=500\napp.ai.claude.max-prompt-chars=${CLAUDE_MAX_PROMPT_CHARS:6000}\napp.ai.claude.connect-timeout=${CLAUDE_CONNECT_TIMEOUT:5s}\napp.ai.claude.read-timeout=${CLAUDE_READ_TIMEOUT:30s}\n\n# DeepSeek Configuration\ndeepseek.base-url=https://api.deepseek.com/v1\ndeepseek.api-key=${DEEPSEEK_API_KEY}\ndeepseek.connect-timeout=5\ndeepseek.read-timeout=30\ndeepseek.max-tokens=500\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "f0e0e052dbf17415b625b1a5b5973cc2554e81b0": {"t": 1785752767.2101042, "n": 9684, "h": "ffdeb16d70f0ec48", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\napp.abuse-protection.outbox-requeue.enabled=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_ENABLED:true}\napp.abuse-protection.outbox-requeue.window=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_WINDOW:10m}\napp.abuse-protection.outbox-requeue.max-attempts=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_MAX_ATTEMPTS:5}\napp.abuse-protection.outbox-requeue.block-duration=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_BLOCK_DURATION:10m}\napp.abuse-protection.email.enabled=${APP_ABUSE_PROTECTION_EMAIL_ENABLED:true}\napp.abuse-protection.email.recipient.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_WINDOW:10m}\napp.abuse-protection.email.recipient.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_MAX_ATTEMPTS:10}\napp.abuse-protection.email.recipient.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_BLOCK_DURATION:10m}\napp.abuse-protection.email.recipient-event-type.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_WINDOW:10m}\napp.abuse-protection.email.recipient-event-type.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_MAX_ATTEMPTS:5}\napp.abuse-protection.email.recipient-event-type.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_BLOCK_DURATION:10m}\napp.abuse-protection.email.channel.window=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_WINDOW:10m}\napp.abuse-protection.email.channel.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_MAX_ATTEMPTS:100}\napp.abuse-protection.email.channel.block-duration=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:claude}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\napp.ai.deepseek.api-key=${DEEPSEEK_API_KEY:}\napp.ai.deepseek.model=${DEEPSEEK_MODEL:deepseek-chat}\napp.ai.deepseek.base-url=${DEEPSEEK_BASE_URL:https://api.deepseek.com/v1}\napp.ai.deepseek.connect-timeout=${DEEPSEEK_CONNECT_TIMEOUT:5s}\napp.ai.deepseek.read-timeout=${DEEPSEEK_READ_TIMEOUT:30s}\napp.ai.deepseek.max-tokens=${DEEPSEEK_MAX_TOKENS:500}\n\napp.ai.claude.api-key=${CLAUDE_API_KEY:}\napp.ai.claude.api-url=https://api.anthropic.com/v1/messages\napp.ai.claude.model=claude-haiku-4-5-20251001\napp.ai.claude.max-tokens=500\napp.ai.claude.connect-timeout=${CLAUDE_CONNECT_TIMEOUT:5s}\napp.ai.claude.read-timeout=${CLAUDE_READ_TIMEOUT:30s}\n\n# DeepSeek Configuration\ndeepseek.base-url=https://api.deepseek.com/v1\ndeepseek.api-key=${DEEPSEEK_API_KEY}\ndeepseek.connect-timeout=5\ndeepseek.read-timeout=30\ndeepseek.max-tokens=500\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "3979a92730d12274ccdaafd32d1d7095268cc908": {"t": 1785752769.0558617, "n": 9396, "h": "d73e1c899c871458", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\napp.abuse-protection.outbox-requeue.enabled=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_ENABLED:true}\napp.abuse-protection.outbox-requeue.window=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_WINDOW:10m}\napp.abuse-protection.outbox-requeue.max-attempts=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_MAX_ATTEMPTS:5}\napp.abuse-protection.outbox-requeue.block-duration=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_BLOCK_DURATION:10m}\napp.abuse-protection.email.enabled=${APP_ABUSE_PROTECTION_EMAIL_ENABLED:true}\napp.abuse-protection.email.recipient.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_WINDOW:10m}\napp.abuse-protection.email.recipient.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_MAX_ATTEMPTS:10}\napp.abuse-protection.email.recipient.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_BLOCK_DURATION:10m}\napp.abuse-protection.email.recipient-event-type.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_WINDOW:10m}\napp.abuse-protection.email.recipient-event-type.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_MAX_ATTEMPTS:5}\napp.abuse-protection.email.recipient-event-type.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_BLOCK_DURATION:10m}\napp.abuse-protection.email.channel.window=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_WINDOW:10m}\napp.abuse-protection.email.channel.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_MAX_ATTEMPTS:100}\napp.abuse-protection.email.channel.block-duration=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:deepseek}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\napp.ai.deepseek.api-key=${DEEPSEEK_API_KEY:}\napp.ai.deepseek.model=${DEEPSEEK_MODEL:deepseek-chat}\napp.ai.deepseek.base-url=${DEEPSEEK_BASE_URL:https://api.deepseek.com/v1}\napp.ai.deepseek.connect-timeout=${DEEPSEEK_CONNECT_TIMEOUT:5s}\napp.ai.deepseek.read-timeout=${DEEPSEEK_READ_TIMEOUT:30s}\napp.ai.deepseek.max-tokens=${DEEPSEEK_MAX_TOKENS:500}\n\n# DeepSeek Configuration\ndeepseek.base-url=https://api.deepseek.com/v1\ndeepseek.api-key=${DEEPSEEK_API_KEY}\ndeepseek.connect-timeout=5\ndeepseek.read-timeout=30\ndeepseek.max-tokens=500\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "bdbb37f11a54cc86547370c19712d6c16951d531": {"t": 1785752771.621018, "n": 9394, "h": "705828cf89026071", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\napp.abuse-protection.outbox-requeue.enabled=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_ENABLED:true}\napp.abuse-protection.outbox-requeue.window=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_WINDOW:10m}\napp.abuse-protection.outbox-requeue.max-attempts=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_MAX_ATTEMPTS:5}\napp.abuse-protection.outbox-requeue.block-duration=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_BLOCK_DURATION:10m}\napp.abuse-protection.email.enabled=${APP_ABUSE_PROTECTION_EMAIL_ENABLED:true}\napp.abuse-protection.email.recipient.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_WINDOW:10m}\napp.abuse-protection.email.recipient.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_MAX_ATTEMPTS:10}\napp.abuse-protection.email.recipient.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_BLOCK_DURATION:10m}\napp.abuse-protection.email.recipient-event-type.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_WINDOW:10m}\napp.abuse-protection.email.recipient-event-type.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_MAX_ATTEMPTS:5}\napp.abuse-protection.email.recipient-event-type.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_BLOCK_DURATION:10m}\napp.abuse-protection.email.channel.window=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_WINDOW:10m}\napp.abuse-protection.email.channel.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_MAX_ATTEMPTS:100}\napp.abuse-protection.email.channel.block-duration=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\napp.ai.deepseek.api-key=${DEEPSEEK_API_KEY:}\napp.ai.deepseek.model=${DEEPSEEK_MODEL:deepseek-chat}\napp.ai.deepseek.base-url=${DEEPSEEK_BASE_URL:https://api.deepseek.com/v1}\napp.ai.deepseek.connect-timeout=${DEEPSEEK_CONNECT_TIMEOUT:5s}\napp.ai.deepseek.read-timeout=${DEEPSEEK_READ_TIMEOUT:30s}\napp.ai.deepseek.max-tokens=${DEEPSEEK_MAX_TOKENS:500}\n\n# DeepSeek Configuration\ndeepseek.base-url=https://api.deepseek.com/v1\ndeepseek.api-key=${DEEPSEEK_API_KEY}\ndeepseek.connect-timeout=5\ndeepseek.read-timeout=30\ndeepseek.max-tokens=500\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "ad95411b07b83482e6858760dd69047363772583": {"t": 1785752772.9059253, "n": 8860, "h": "28d6dbdefa8df707", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\napp.abuse-protection.outbox-requeue.enabled=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_ENABLED:true}\napp.abuse-protection.outbox-requeue.window=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_WINDOW:10m}\napp.abuse-protection.outbox-requeue.max-attempts=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_MAX_ATTEMPTS:5}\napp.abuse-protection.outbox-requeue.block-duration=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_BLOCK_DURATION:10m}\napp.abuse-protection.email.enabled=${APP_ABUSE_PROTECTION_EMAIL_ENABLED:true}\napp.abuse-protection.email.recipient.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_WINDOW:10m}\napp.abuse-protection.email.recipient.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_MAX_ATTEMPTS:10}\napp.abuse-protection.email.recipient.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_BLOCK_DURATION:10m}\napp.abuse-protection.email.recipient-event-type.window=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_WINDOW:10m}\napp.abuse-protection.email.recipient-event-type.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_MAX_ATTEMPTS:5}\napp.abuse-protection.email.recipient-event-type.block-duration=${APP_ABUSE_PROTECTION_EMAIL_RECIPIENT_EVENT_TYPE_BLOCK_DURATION:10m}\napp.abuse-protection.email.channel.window=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_WINDOW:10m}\napp.abuse-protection.email.channel.max-attempts=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_MAX_ATTEMPTS:100}\napp.abuse-protection.email.channel.block-duration=${APP_ABUSE_PROTECTION_EMAIL_CHANNEL_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "e293c031b59a96c4b7ac1c47a1a3bff90a960cee": {"t": 1785752774.4474607, "n": 7793, "h": "73f32b9eef5c5722", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\napp.abuse-protection.outbox-requeue.enabled=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_ENABLED:true}\napp.abuse-protection.outbox-requeue.window=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_WINDOW:10m}\napp.abuse-protection.outbox-requeue.max-attempts=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_MAX_ATTEMPTS:5}\napp.abuse-protection.outbox-requeue.block-duration=${APP_ABUSE_PROTECTION_OUTBOX_REQUEUE_BLOCK_DURATION:10m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "8e6226cbe5e7556bd4943dc49fa52390991e1de6": {"t": 1785752776.834952, "n": 7392, "h": "6c8324c9be2f2393", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\napp.abuse-protection.ai-summary.enabled=${APP_ABUSE_PROTECTION_AI_SUMMARY_ENABLED:true}\napp.abuse-protection.ai-summary.window=${APP_ABUSE_PROTECTION_AI_SUMMARY_WINDOW:10m}\napp.abuse-protection.ai-summary.max-attempts=${APP_ABUSE_PROTECTION_AI_SUMMARY_MAX_ATTEMPTS:10}\napp.abuse-protection.ai-summary.block-duration=${APP_ABUSE_PROTECTION_AI_SUMMARY_BLOCK_DURATION:10m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "406b1b03486aecc08fc490eb33f0644e9d8e2b90": {"t": 1785752778.3716495, "n": 7022, "h": "889e7e4d4e7422a5", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\napp.abuse-protection.password-reset.forgot.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_ENABLED:true}\napp.abuse-protection.password-reset.forgot.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_WINDOW:15m}\napp.abuse-protection.password-reset.forgot.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_MAX_ATTEMPTS:3}\napp.abuse-protection.password-reset.forgot.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_FORGOT_BLOCK_DURATION:15m}\napp.abuse-protection.password-reset.reset.enabled=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_ENABLED:true}\napp.abuse-protection.password-reset.reset.window=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_WINDOW:15m}\napp.abuse-protection.password-reset.reset.max-attempts=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_MAX_ATTEMPTS:5}\napp.abuse-protection.password-reset.reset.block-duration=${APP_ABUSE_PROTECTION_PASSWORD_RESET_RESET_BLOCK_DURATION:15m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "e065ab466bfe2fd69524f7b792f3c35513bf0a46": {"t": 1785752780.251751, "n": 6116, "h": "0f29a0057f8b6162", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\napp.notifications.outbox.email.processing-timeout=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSING_TIMEOUT:5m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "8a143828eb017359d47ff05a13e4bff6922a9d71": {"t": 1785752783.7909563, "n": 6010, "h": "84ebe3f021a613e2", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.delivery-mode=${APP_NOTIFICATIONS_EMAIL_DELIVERY_MODE:direct}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "7fe1c4f3f5c0a64bdd39c747bee1a92ae77a2847": {"t": 1785752785.2628288, "n": 5924, "h": "8ef234273d28a07a", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\napp.notifications.outbox.email.processor-enabled=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_ENABLED:false}\napp.notifications.outbox.email.processor-fixed-delay=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_FIXED_DELAY:30s}\napp.notifications.outbox.email.processor-batch-size=${APP_NOTIFICATIONS_OUTBOX_EMAIL_PROCESSOR_BATCH_SIZE:20}\napp.notifications.outbox.email.retry-backoff=${APP_NOTIFICATIONS_OUTBOX_EMAIL_RETRY_BACKOFF:1m}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "a2b04deafd1f50b8b83c056808505b0710c8aedb": {"t": 1785752786.9609818, "n": 5498, "h": "d645b3594d13e459", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.auth.password-reset.cleanup.enabled=${APP_AUTH_PASSWORD_RESET_CLEANUP_ENABLED:true}\napp.auth.password-reset.cleanup.fixed-delay=${APP_AUTH_PASSWORD_RESET_CLEANUP_FIXED_DELAY:30m}\napp.auth.password-reset.cleanup.retention=${APP_AUTH_PASSWORD_RESET_CLEANUP_RETENTION:24h}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "f328ecbe18391f0e9c1b98fc5db3b1755c81a685": {"t": 1785752788.4930105, "n": 5224, "h": "3f9ebc5555c56e78", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\napp.frontend.password-reset-url=${APP_FRONTEND_PASSWORD_RESET_URL:http://localhost:5173/reset-password}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "a4a2f9b8e5670c43eca08ffad0f0fb4596e89749": {"t": 1785752789.8721619, "n": 5120, "h": "e09186c7262a86fa", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\napp.auth.password-reset.token-ttl=${APP_AUTH_PASSWORD_RESET_TOKEN_TTL:15m}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "488a6c4c7feaf389fd0b87d67deeb9cdb524d080": {"t": 1785752791.172921, "n": 5045, "h": "f64f1fc7e1763c4c", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\napp.bootstrap.admin.enabled=${APP_BOOTSTRAP_ADMIN_ENABLED:true}\napp.bootstrap.admin.name=${APP_BOOTSTRAP_ADMIN_NAME:}\napp.bootstrap.admin.email=${APP_BOOTSTRAP_ADMIN_EMAIL:}\napp.bootstrap.admin.password=${APP_BOOTSTRAP_ADMIN_PASSWORD:}\napp.bootstrap.admin.update-existing=${APP_BOOTSTRAP_ADMIN_UPDATE_EXISTING:false}\napp.bootstrap.admin.reset-password=${APP_BOOTSTRAP_ADMIN_RESET_PASSWORD:false}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "97c5ee7436993cab52dd975e78f9bd1720a4e2b2": {"t": 1785752792.5622497, "n": 4649, "h": "9cb2ce8259d2b28d", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.cleanup.enabled=${APP_ABUSE_PROTECTION_CLEANUP_ENABLED:true}\napp.abuse-protection.cleanup.fixed-delay=${APP_ABUSE_PROTECTION_CLEANUP_FIXED_DELAY:30m}\napp.abuse-protection.cleanup.retention=${APP_ABUSE_PROTECTION_CLEANUP_RETENTION:24h}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "437b1a848b777ca8c4569b852dc3051562cc11bf": {"t": 1785752793.8538852, "n": 4393, "h": "556fee61ce9982af", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\napp.device-replay-nonce-cleanup.enabled=${APP_DEVICE_REPLAY_NONCE_CLEANUP_ENABLED:true}\napp.device-replay-nonce-cleanup.fixed-delay=${APP_DEVICE_REPLAY_NONCE_CLEANUP_FIXED_DELAY:10m}\napp.device-replay-nonce-cleanup.retention=${APP_DEVICE_REPLAY_NONCE_CLEANUP_RETENTION:30m}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "4f400b1e04086992dc7662f9ca76500dfe21268a": {"t": 1785752795.1065717, "n": 4119, "h": "44c75ed059752469", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\napp.notifications.email.enabled=${APP_NOTIFICATIONS_EMAIL_ENABLED:false}\napp.notifications.email.provider=${APP_NOTIFICATIONS_EMAIL_PROVIDER:resend}\napp.notifications.email.api-key=${APP_NOTIFICATIONS_EMAIL_API_KEY:}\napp.notifications.email.from=${APP_NOTIFICATIONS_EMAIL_FROM:}\napp.notifications.email.to=${APP_NOTIFICATIONS_EMAIL_TO:}\napp.notifications.email.connect-timeout-ms=${APP_NOTIFICATIONS_EMAIL_CONNECT_TIMEOUT_MS:3000}\napp.notifications.email.read-timeout-ms=${APP_NOTIFICATIONS_EMAIL_READ_TIMEOUT_MS:5000}\napp.notifications.email.base-url=${APP_NOTIFICATIONS_EMAIL_BASE_URL:https://api.resend.com}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "b52ffd57f897f6eafbbf15fc718db12e4e688c77": {"t": 1785752796.7391572, "n": 3508, "h": "bdeecf00235e2002", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\nlogging.level.org.hibernate.SQL=${APP_SQL_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.orm.jdbc.bind=${APP_SQL_BIND_LOG_LEVEL:OFF}\nlogging.level.org.hibernate.type.descriptor.sql.BasicBinder=${APP_SQL_BIND_LOG_LEVEL:OFF}\n\n"}, "2cb132064cc0ba24a90be950268a6775cad35438": {"t": 1785752798.0666087, "n": 3289, "h": "3ce6badfcd1f436a", "c": "spring.application.name=ganaderia4backend\n\nserver.port=${SERVER_PORT:${PORT:8080}}\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "f77a7e97c1cb2d6394f61b5fc99b1ba8de0acc4a": {"t": 1785752799.7251675, "n": 3248, "h": "a3d49c53c5229240", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\napp.ai.enabled=${AI_ENABLED:false}\napp.ai.provider=${AI_PROVIDER:gemini}\napp.ai.gemini-api-key=${GEMINI_API_KEY:}\napp.ai.gemini-model=${GEMINI_MODEL:gemini-2.5-flash}\napp.ai.gemini-base-url=${GEMINI_BASE_URL:https://generativelanguage.googleapis.com/v1beta/models}\napp.ai.gemini-connect-timeout=${GEMINI_CONNECT_TIMEOUT:5s}\napp.ai.gemini-read-timeout=${GEMINI_READ_TIMEOUT:10s}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "5196d12ea50567d5a8aabf77a22c884691ce4ead": {"t": 1785752801.017942, "n": 2869, "h": "5173793406d71752", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jackson.time-zone=UTC\nspring.jpa.properties.hibernate.jdbc.time_zone=UTC\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "968bb44a0e69551f387d8221affa652e7d72cbfa": {"t": 1785752802.5479681, "n": 2789, "h": "9e0082370d327fca", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\napp.notifications.webhook.processor-enabled=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_ENABLED:true}\napp.notifications.webhook.processor-fixed-delay=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_FIXED_DELAY:15s}\napp.notifications.webhook.processor-batch-size=${APP_NOTIFICATIONS_WEBHOOK_PROCESSOR_BATCH_SIZE:20}\napp.notifications.webhook.max-attempts=${APP_NOTIFICATIONS_WEBHOOK_MAX_ATTEMPTS:3}\napp.notifications.webhook.retry-backoff=${APP_NOTIFICATIONS_WEBHOOK_RETRY_BACKOFF:30s}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "162295c2d6af461bf39c13ced7322a1185c8f31a": {"t": 1785752805.1505244, "n": 2320, "h": "c7dbd7cdb2386489", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\napp.abuse-protection.device.enabled=${APP_ABUSE_PROTECTION_DEVICE_ENABLED:true}\napp.abuse-protection.device.window=${APP_ABUSE_PROTECTION_DEVICE_WINDOW:1m}\napp.abuse-protection.device.max-attempts=${APP_ABUSE_PROTECTION_DEVICE_MAX_ATTEMPTS:300}\napp.abuse-protection.device.block-duration=${APP_ABUSE_PROTECTION_DEVICE_BLOCK_DURATION:5m}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "1f3669c07d7b067f6d9d4154e7c2be3ce449d0c5": {"t": 1785752806.4992902, "n": 1983, "h": "afcfbde46d3a47ac", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\n\napp.abuse-protection.enabled=${APP_ABUSE_PROTECTION_ENABLED:true}\napp.abuse-protection.client-ip.trust-forwarded-headers=${APP_ABUSE_PROTECTION_TRUST_FORWARDED_HEADERS:false}\napp.abuse-protection.login.enabled=${APP_ABUSE_PROTECTION_LOGIN_ENABLED:true}\napp.abuse-protection.login.window=${APP_ABUSE_PROTECTION_LOGIN_WINDOW:15m}\napp.abuse-protection.login.max-attempts=${APP_ABUSE_PROTECTION_LOGIN_MAX_ATTEMPTS:5}\napp.abuse-protection.login.block-duration=${APP_ABUSE_PROTECTION_LOGIN_BLOCK_DURATION:15m}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "46029c53189ca6df1ea05775fa9ab8ad1de1058b": {"t": 1785752808.8789756, "n": 1478, "h": "f0ae50dc06d5a6fd", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.default=${SPRING_PROFILES_DEFAULT:local}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\napp.notifications.webhook.enabled=${APP_NOTIFICATIONS_WEBHOOK_ENABLED:false}\napp.notifications.webhook.url=${APP_NOTIFICATIONS_WEBHOOK_URL:}\napp.notifications.webhook.connect-timeout=${APP_NOTIFICATIONS_WEBHOOK_CONNECT_TIMEOUT:5s}\napp.notifications.webhook.read-timeout=${APP_NOTIFICATIONS_WEBHOOK_READ_TIMEOUT:5s}\napp.notifications.webhook.secret=${APP_NOTIFICATIONS_WEBHOOK_SECRET:}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "8f5dbc0ed65c1fdc460b971ae10311c218de8ac2": {"t": 1785752810.1107223, "n": 1089, "h": "0d5082fc47d98bc7", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.active=${SPRING_PROFILES_ACTIVE:prod}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\napp.pagination.default-size=${APP_PAGINATION_DEFAULT_SIZE:20}\napp.pagination.max-size=${APP_PAGINATION_MAX_SIZE:100}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "414cbc76a991bde1ae823fba264632235ba2ecb3": {"t": 1785752812.0317519, "n": 971, "h": "2d9ec6a2ca834d58", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.active=${SPRING_PROFILES_ACTIVE:prod}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\ndevice.auth.secret-master-key=${DEVICE_SECRET_MASTER_KEY:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "671d76a2623871694ea84a09c91c2ce8a610858e": {"t": 1785752814.1516433, "n": 912, "h": "8d2c6728b684a96f", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.active=${SPRING_PROFILES_ACTIVE:prod}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\n\nreports.alerts.csv-max-rows=${REPORT_ALERTS_CSV_MAX_ROWS:5000}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}, "5dcd28c9a669291f6abd0c130a435515f19d893b": {"t": 1785752815.7829757, "n": 848, "h": "aaa43e3f63318b4c", "c": "spring.application.name=ganaderia4backend\n\nspring.profiles.active=${SPRING_PROFILES_ACTIVE:prod}\n\nspring.jpa.open-in-view=false\n\njwt.expiration-ms=${JWT_EXPIRATION_MS:86400000}\n\ndevice.auth.window-seconds=${DEVICE_AUTH_WINDOW_SECONDS:300}\ndevice.auth.hmac-pepper=${DEVICE_HMAC_PEPPER:}\n\nmanagement.endpoints.web.base-path=/actuator\nmanagement.endpoints.web.exposure.include=health,info,metrics,prometheus\nmanagement.endpoint.health.probes.enabled=true\nmanagement.health.livenessstate.enabled=true\nmanagement.health.readinessstate.enabled=true\nmanagement.endpoint.health.show-details=never\nmanagement.endpoint.health.show-components=always\n\ninfo.app.name=Ganaderia 4.0 Backend\ninfo.app.description=Backend del sistema de monitoreo ganadero con geocercas y alertas\ninfo.app.version=0.0.1-SNAPSHOT\n\nlogging.pattern.level=%5p [req:%X{requestId:-N/A}]\n\n"}}, "src/main/java/com/ganaderia4/backend/config/DeepSeekProperties.java": {"284501d8a36bfe223fb7e308de6d09420e10e2e2": {"t": 1785746134.8502553, "n": 1534, "h": "d7a0954b573fe330", "c": "package com.ganaderia4.backend.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\nimport java.time.Duration;\n\n@Component\n@ConfigurationProperties(prefix = \"app.ai.deepseek\")\npublic class DeepSeekProperties {\n\n private String apiKey = \"\";\n private String model = \"deepseek-chat\";\n private String baseUrl = \"https://api.deepseek.com/v1\";\n private Duration connectTimeout = Duration.ofSeconds(5);\n private Duration readTimeout = Duration.ofSeconds(30);\n private int maxTokens = 500;\n\n public String getApiKey() {\n return apiKey;\n }\n\n public void setApiKey(String apiKey) {\n this.apiKey = apiKey;\n }\n\n public String getModel() {\n return model;\n }\n\n public void setModel(String model) {\n this.model = model;\n }\n\n public String getBaseUrl() {\n return baseUrl;\n }\n\n public void setBaseUrl(String baseUrl) {\n this.baseUrl = baseUrl;\n }\n\n public Duration getConnectTimeout() {\n return connectTimeout;\n }\n\n public void setConnectTimeout(Duration connectTimeout) {\n this.connectTimeout = connectTimeout;\n }\n\n public Duration getReadTimeout() {\n return readTimeout;\n }\n\n public void setReadTimeout(Duration readTimeout) {\n this.readTimeout = readTimeout;\n }\n\n public int getMaxTokens() {\n return maxTokens;\n }\n\n public void setMaxTokens(int maxTokens) {\n this.maxTokens = maxTokens;\n }\n}\n"}, "bdbb37f11a54cc86547370c19712d6c16951d531": {"t": 1785752764.5902145, "n": 1534, "h": "d7a0954b573fe330", "c": "package com.ganaderia4.backend.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\nimport java.time.Duration;\n\n@Component\n@ConfigurationProperties(prefix = \"app.ai.deepseek\")\npublic class DeepSeekProperties {\n\n private String apiKey = \"\";\n private String model = \"deepseek-chat\";\n private String baseUrl = \"https://api.deepseek.com/v1\";\n private Duration connectTimeout = Duration.ofSeconds(5);\n private Duration readTimeout = Duration.ofSeconds(30);\n private int maxTokens = 500;\n\n public String getApiKey() {\n return apiKey;\n }\n\n public void setApiKey(String apiKey) {\n this.apiKey = apiKey;\n }\n\n public String getModel() {\n return model;\n }\n\n public void setModel(String model) {\n this.model = model;\n }\n\n public String getBaseUrl() {\n return baseUrl;\n }\n\n public void setBaseUrl(String baseUrl) {\n this.baseUrl = baseUrl;\n }\n\n public Duration getConnectTimeout() {\n return connectTimeout;\n }\n\n public void setConnectTimeout(Duration connectTimeout) {\n this.connectTimeout = connectTimeout;\n }\n\n public Duration getReadTimeout() {\n return readTimeout;\n }\n\n public void setReadTimeout(Duration readTimeout) {\n this.readTimeout = readTimeout;\n }\n\n public int getMaxTokens() {\n return maxTokens;\n }\n\n public void setMaxTokens(int maxTokens) {\n this.maxTokens = maxTokens;\n }\n}\n"}}}}