text:
## 8.0.0-beta.1

* Updates for alpha.9 by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1526
* Finalize the API review by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1528
* Disposing pipeline should not dispose external inner pipeline by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1529
* Clean duplications around disposing the pipelines by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1530

## 8.0.0-alpha.9

* Updates for alpha.8 by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1465
* Fix unstable build by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1466
* Improve samples by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1467
* Specify DebuggerDisplay for ReactiveResilienceStrategyBridge by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1468
* Drop the `Extensions` from `Polly.Extensions` namespace by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1469
* Remove Moq by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1472
* Add new metering tests to cover uncovered lines by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1474
* Default names for individual resilience strategies by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1475
* Introduce `NonReactiveResilienceStrategy` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1476
* Drop `TelemetryResilienceStrategy` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1482
* API Review feedback (1) by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1484
* Rename ResilienceStrategy to ResiliencePipeline by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1483
* API Review Feedback (2) by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1485
* Introduce TelemetryListener by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1486
* Improve documentation by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1487
* Fix metering tests by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1488
* Hide validation APIs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1490
* Logging improvements by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1489
* Hide/drop some unused APIs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1491
* Cleanup internals by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1492
* ResilienceContextPool improvements by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1493
* Hide IsSynchronous property by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1494
* Drop unused ResiliencePipelineRegistry APIs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1495
* `ResiliencePipelineRegistry` is now disposable by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1496
* Move pipeline-related internals into `Pipeline` folder by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1497
* Update benchmarks by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1503
* Minor ResiliencePipelineRegistry cleanup of internals by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1505
* API Review Feedback by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1506
* Minor API cleanup by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1508
* Clenaup rate limiter API by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1509
* Cleanup ResiliencePipelineRegistry internals by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1510
* Allow to dispose linked resources on pipeline disposal by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1511
* Simplify and enhance the pipeline reloads by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1512
* Drop `OutcomeArguments` struct by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1513
* API Review Feedback by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1520
* Got rid of some warnings in the Polly project by [@IgorIgorevich94](https://github.com/IgorIgorevich94) in https://github.com/App-vNext/Polly/pull/1514
* API Review Feedback by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1521
* Cleanup Outcome internals and drop unused hedging and fallbacks APIs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1523
* Improve debugging experience for `ResilienceProperties` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1524
* Protect against retry delay overflows by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1522
* Fix DelayAsync extension by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1525

## 8.0.0-alpha.8

* Updates for 8.0.0-alpha.7 by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1433
* Improve logging messages by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1436
* Rename `BuilderName` to `Name` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1437
* Do not record null tags to meter by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1438
* Fix telemetry test failures by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1439
* Simplify OutcomeResilienceStrategy by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1440
* Drop simple circuit breaker by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1444
* Allow jitter for all backoff types by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1445
* Rename `Attempt` to `AttemptNumber` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1447
* Hide `CircuitBreakerStateProvider.LastHandledOutcome` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1446
* Rename `ResilienceStrategyBuilder` to `CompositeStrategyBuilder` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1448
* Added `readonly` modifier to private fields which are never changed by [@Lehonti](https://github.com/Lehonti) in https://github.com/App-vNext/Polly/pull/1451
* Reduced nesting levels through block-scoped `using`s and the inversion of an `if` block. by [@Lehonti](https://github.com/Lehonti) in https://github.com/App-vNext/Polly/pull/1453
* Simplify file names by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1455
* Improve `MultipleStrategiesBenchmark` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1457
* Elaborate about synchronous vs asynchronous executions by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1456
* Fix some typos in XML docs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1458
* Make `ReactiveResilienceStrategy` public by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1460
* Make the `ReactiveResilienceStrategy` type-safe by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1462
* Use `StrategyHelper` for safe executions and drop redundant methods by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1463
* Drop unnecessary allocation in circuit breaker by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1464

## 8.0.0-alpha.7

* Introduce ResilienceStrategyBuilder.Validator by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1412
* Update docs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1413
* Annotate the library with trimming attributes by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1414
* Update trimming justifications by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1415
* Fix condition by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1416
* API Review Feedback (1) by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1420
* Introduce ResilienceContextPool (ApiReview) by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1421
* Convert records to classes by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1422
* Rename ExecuteCoreAsync to ExecuteCore by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1424
* Benchmark for strategy creation by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1426
* Fix README.md example syntax errors by [@Sensational-Code](https://github.com/Sensational-Code) in https://github.com/App-vNext/Polly/pull/1427
* Improve usability of ResilienceStrategy<T> by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1428
* Cleanup OutcomeResilienceStrategy by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1430
* Drop the ResilienceStrategyBuilder.IsGenericBuilder property by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1431
* Allow isolate CircuitBreakerManualControl using constructor by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1432

## 8.0.0-alpha.6

* Update docs by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1382
* Add support for `PartitionedRateLimiter` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1383
* Fix debugger proxies by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1384
* Allow adding generic strategies to generic builder by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1386
* Add new issue that demonstrates how to use PartitionedRateLimiter by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1385
* Introduce `TelemetryOptions.OnTelemetryEvent` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1387
* `ResilienceStrategyRegistry` API improvements by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1388
* Simplify condition by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1391
* Introduce `ResilienceStrategyBuilder.InstanceName` and use it in telemetry by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1392
* Introduce `Polly.Testing` package by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1394
* Kill mutant by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1395
* Fix unstable test by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1396
* Rename  AddResilienceStrategy to AddResilienceStrategyRegistry by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1397
* Update README.md for Polly.Extensions with telemetry info by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1401
* Kill mutant by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1407
* Assertion failed when running tests in Visual Studio by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1408
* Include PublicApiAnalyzers by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1400
* Kill mutant by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1409
* Demonstrate how to create dynamic strategies with complex keys by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1366

## 8.0.0-alpha.5

* Skip mutation tests for tagged builds by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1354
* Update CHANGELOG by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1353
* Drop TimeProvider.Delay by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1355
* Fix race conditions in tests by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1358
* Simplify the logging by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1359
* Prepare for .NET 8 by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1360
* Introduce ResilienceEventSeverity by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1361
* Upload coverage reports by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1363
* Kill mutant by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1368
* Accelerate build in VS by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1369
* Simplify handling of reloads by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1374
* Allow reusing CircuitBreakerManualControl across multiple CBs by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1375
* PR and issue automation by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1370
* Exclude some labels from stale by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1378
* Debugger proxies for resilience strategies by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1379
* Introduce `ResilienceContext.OperationKey` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1380

## 8.0.0-alpha.4

* Rename FakeTimeProvider by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1349
* Adopt FakeTimeProvider by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1350
* Drop custom validation attributes by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1351
* Drop TimeProvider.CancelAfter by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1352

## 8.0.0-alpha.3

* Update README.md with v8 Alpha v2 release announcement by [@joelhulen](https://github.com/joelhulen) in https://github.com/App-vNext/Polly/pull/1337
* Adopt Alpha 2 in samples by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1338
* Add net6.0 and net7.0 to Polly by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1336
* Sync TimeProvider and cleanup by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1339
* Fix hedging being cancelled too early by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1340
* Fix logging of execution attempt by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1341
* Bump github/codeql-action from 2.20.0 to 2.20.1 by [@dependabot](https://github.com/dependabot) in https://github.com/App-vNext/Polly/pull/1344
* Bump martincostello/update-dotnet-sdk from 2.2.2 to 2.2.3 by [@dependabot](https://github.com/dependabot) in https://github.com/App-vNext/Polly/pull/1345
* Bump StyleCop.Analyzers from 1.2.0-beta.435 to 1.2.0-beta.507 by [@dependabot](https://github.com/dependabot) in https://github.com/App-vNext/Polly/pull/1342
* Bump SonarAnalyzer.CSharp from <IP_ADDRESS>466 to <IP_ADDRESS>892 by [@dependabot](https://github.com/dependabot) in https://github.com/App-vNext/Polly/pull/1343
* Expose Randomizer property and use it in retry strategy by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1346

## 8.0.0-alpha.2

- Drop redundant validation of resilience strategy options by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1299
- Add NuGet configuration file by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1305
- Log unhealthy executions with warning level by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1306
- Add hedging to package tags by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1307
- Bump github/codeql-action from 2.3.6 to 2.20.0 by [@dependabot](https://github.com/dependabot) in https://github.com/App-vNext/Polly/pull/1310
- Bump actions/checkout from 3.5.2 to 3.5.3 by [@dependabot](https://github.com/dependabot) in https://github.com/App-vNext/Polly/pull/1309
- Introduce `samples` folder by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1295
- Update telemetry benchmark by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1311
- Enhance `OnHedgingArguments` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1314
- The options that handle outcomes now have sensible defaults by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1316
- Update README.md with v8 alpha announcement by [@joelhulen](https://github.com/joelhulen) in https://github.com/App-vNext/Polly/pull/1317
- The deafult RateLimiterStrategyOptions instance is now valid by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1315
- Rename `TelemetryResilienceStrategyOptions` to `TelemetryOptions` by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1318
- Alpha fixes and improvements by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1319
- Fix OnHedging not being called by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1320
- Reduce allocations in telemetry by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1321
- Add new issue test that demonstrates library scenario by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1322
- Fix relative links by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1325
- API feedback by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1327
- Introduce ExecutionAttemptArguments by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1326
- Introduce OutcomeResilienceStrategy and drop some internals by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1330
- Introduce Outcome by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1331
- Validate NuGet package signatures by [@martincostello](https://github.com/martincostello) in https://github.com/App-vNext/Polly/pull/1335
- Allow implicit conversion of `PredicateBuilder` to delegates by [@martintmk](https://github.com/martintmk) in https://github.com/App-vNext/Polly/pull/1332

## 8.0.0-alpha.1

- The first public preview of [Polly v8](https://github.com/App-vNext/Polly/issues/1048) with our [new high-performance core API](https://github.com/App-vNext/Polly/blob/main/src/Polly.Core/README.md) and extensions. Feel free to check out the [samples](samples/) to see the new and improved Polly V8 in action.
- The first release of the new NuGet packages:
  - [`Polly.Core`](https://nuget.org/packages/Polly.Core) - This package contains the new Polly V8 API.
  - [`Polly.Extensions`](https://nuget.org/packages/Polly.Extensions) - This package is designed to integrate Polly with dependency injection and enable telemetry.
  - [`Polly.RateLimiting`](https://nuget.org/packages/Polly.RateLimiting) - This package provides an integration between Polly and [`System.Threading.RateLimiting`](https://www.nuget.org/packages/System.Threading.RateLimiting/).

Thanks to:
  - [@adamnova](https://github.com/adamnova)
  - [@andrey-noskov](https://github.com/andrey-noskov)
  - [@joelhulen](https://github.com/joelhulen)
  - [@juraj-blazek](https://github.com/juraj-blazek)
  - [@geeknoid](https://github.com/geeknoid)
  - [@laura-mi](https://github.com/laura-mi)
  - [@martincostello](https://github.com/martincostello)
  - [@martintmk](https://github.com/martintmk)
  - [@SimonCropp](https://github.com/SimonCropp)
  - [@tekian](https://github.com/tekian)
  - [@terrajobst](https://github.com/terrajobst)

## 7.2.4

- Fixed an incorrect exception argument - Thanks to [@FoxTes](https://github.com/FoxTes)
- Upgrade FluentAssertions - Thanks to [@dotnetspark](https://github.com/dotnetspark)
- Upgrade Cake - Thanks to [@eugeneogongo](https://github.com/eugeneogongo)
- Fixed possible NullReferenceException - Thanks to [@FoxTes](https://github.com/FoxTes)
- Migrate build to GitHub Actions - Thanks to [@martincostello](https://github.com/martincostello)
- Authenticode sign the assembly and NuGet package - Thanks to [@martincostello](https://github.com/martincostello) and the .NET Foundation

## 7.2.3

- Add RateLimit policy - Thanks to [@reisenberger](https://github.com/reisenberger)
- Various codebase health updates - Thanks to [@SimonCropp](https://github.com/SimonCropp)
- Add benchmarks project - Thanks to [@martincostello](https://github.com/martincostello)
- Fix broken README image - Thanks to [@GitHubPang](https://github.com/GitHubPang)

## 7.2.2

- Recursively search all `AggregateException` inner exceptions for predicate matches when using `HandleInner()` ([#818](https://github.com/App-vNext/Polly/issues/818)) - Thanks to [@sideproject](https://github.com/sideproject)
- Polly now builds deterministically - Thanks to [@304NotModified](https://github.com/304NotModified)
- Bug fix: the `timeoutStrategy` parameter was not being used by the `TimeoutAsync(Func<TimeSpan>, TimeoutStrategy, Func<Context, TimeSpan, Task, Task>)` method - Thanks to [@martincostello](https://github.com/martincostello)
- Bug fix: the solution can now be built with the .NET 5.0 SDK - Thanks to [@martincostello](https://github.com/martincostello)

## 7.2.1
- Upgrade SourceLink to RTM v1 (fixes building from source for latest .NET Core 3.1.x)
- Bug fix: rare circuit-breaker race condition causing NullReferenceException when circuit throws BrokenCircuitException.

## 7.2.0
- Add test target for netcoreapp3.0.
- Extend PolicyRegistry with concurrent method support, TryAdd, TryRemove, TryUpdate, GetOrAdd, AddOrUpdate; new interface IConcurrentPolicyRegistry
- Improve .NET Framework support: Add explicit targets for .NET Framework 4.6.1 and 4.7.2.
- TimeoutPolicy: if timeout occurs while a user exception is being marshalled (edge case race condition), do not mask user exception (fix issue 620)
- Enhance debugging/stacktrace experience for some contexts: Include pdb symbols in package again.

## 7.1.1
- Bug fix: ensure async retry policies honor continueOnCapturedContext setting (affected v7.1.0 only).
- Remove deprecated cake add-in from build

## 7.1.0
- Add SourceLink debugger support.
- Bug fix: PolicyRegistry with .NET Core services.AddPolicyRegistry() overload (affected Polly v7.0.1-3 only)
- Rationalise solution layout
- Add explicit .NET framework 4.6.2 and 4.7.2 test runs

## 7.0.3
- Bug fix for AdvancedCircuitBreakerAsync<TResult> (issue affecting v7.0.1-2 only)

## 7.0.2
- Bug fix for PolicyRegistry (issue affecting v7.0.1 only)

## 7.0.1
- Clarify separation of sync and async policies (breaking change)
- Enable extensibility by custom policies hosted external to Polly
- Enable collection initialization syntax for PolicyRegistry
- Enable cache policies to cache default(TResult) (breaking change)
- Restore Exception binary serialization for .Net Standard 2.0

## 6.1.2
- Bug Fix: Async continuation control for async executions (issue 540, affected only v6.1.1)

## 6.1.1
- Bug Fix: Context.PolicyKey behaviour in PolicyWrap (issue 510)

## 6.1.0
- Bug Fix: Context.PolicyKey behaviour in PolicyWrap (issue 463)
- Bug Fix: CachePolicy behaviour with non-nullable types (issues 472, 475)
- Enhancement: WaitAnd/RetryForever overloads where onRetry takes the retry number as a parameter (issue 451)
- Enhancement: Overloads where onTimeout takes thrown exception as a parameter (issue 338)
- Enhancement: Improved cache error message (issue 455)

## 6.0.1
- Version 6 RTM, for integration to ASPNET Core 2.1 IHttpClientFactory

## 6.0.0-v6alpha
- Publish as strong-named package only (discontinue non-strong-named versions)
- Add .NetStandard 2.0 tfm
- Provide .NET4.5 support via .NetStandard 1.1 tfm
- Discontinue .NET4.0 support
- Remove methods marked as deprecated in v5.9.0

## 5.9.0
- Allow Timeout.InfiniteTimeSpan (no timeout) for TimeoutPolicy.
- Add .AsPolicy<TResult> and .AsAsyncPolicy<TResult> methods for converting non-generic policies to generic policies.
- Per Semver, indicates deprecation of overloads and properties intended to be removed or renamed in Polly v6.

## 5.8.0
- Add a new onBreak overload that provides the prior state on a transition to an open state
- Bug fix: RelativeTtl in CachePolicy now always returns a ttl relative to time item is cached

## 5.7.0
- Minor cache fixes
- Add ability to calculate cache Ttl based on item to cache
- Allow user-created custom policies

## 5.6.1
- Extend PolicyWrap syntax with interfaces

## 5.6.0
- Add ability to handle inner exceptions natively: .HandleInner<TEx>()
- Allow WaitAndRetry policies to calculate wait based on the handled fault
- Add the ability to access the policies within an IPolicyWrap
- Allow PolicyWrap to configure policies expressed as interfaces
- Bug fix: set context keys for generic execute methods with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
- Multiple build speed improvements

## 5.5.0
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces

## 5.4.0
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.

## 5.3.1
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)

## 5.3.0
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface

## 5.2.0
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.

## 5.1.0
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.

## 5.0.6
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target.  Resolves compatibility for some Xamarin targets.

## 5.0.5
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker.  Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Minor behavioural change: For a circuit which has not handled any faults since initialisation or last reset, make `LastException` property return null rather than a fake exception.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.

## 5.0.4 pre
- Fix Microsoft.Bcl and Nito.AsyncEx dependencies for Polly.Net40Async.

## 5.0.3 RTM
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).

## 5.0.2 alpha

- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target.  PCL259 is supported via .NETStandard1.0 target, going forward.
- Mark Polly.dll as CLSCompliant.
- Tidy build around GitVersionTask and ReferenceGenerator.
- Update FluentAssertions dependency.
- Added Polly.Net40Async specs project.
- Fix issue 179: Make Net4.0 async implementation for Bulkhead truly async.

## 5.0.1 alpha

- Add .NET Standard 1.0 project and target.

## 5.0.0 alpha

A major release, adding significant new resilience policies:

- Timeout policy: allows timing out any execution. Thanks to [@reisenberger](https://github.com/reisenberger).
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures. Thanks to [@reisenberger](https://github.com/reisenberger) and contributions from [@brunolauze](https://github.com/brunolauze).
- Fallback policy: provides for a fallback execution or value, in case of overall failure. Thanks to [@reisenberger](https://github.com/reisenberger)
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy. Thanks to [@reisenberger](https://github.com/reisenberger)

Other changes include:

- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics. Thanks to [@reisenberger](https://github.com/reisenberger)
- Add CancellationToken support to synchronous executions.  Thanks to [@brunolauze](https://github.com/brunolauze) and [@reisenberger](https://github.com/reisenberger)
- Add some missing ExecuteAndCapture/Async overloads. Thanks to [@reisenberger](https://github.com/reisenberger)
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support

## 4.3.0

- Added ability for policies to handle returned results.  Optimised circuit-breaker hot path.  Fixed circuit-breaker threshold bug.  Thanks to [@reisenberger](https://github.com/reisenberger), [@christopherbahr](https://github.com/christopherbahr) and [@Finity](https://github.com/Finity) respectively.

## 4.2.4

- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.  Thanks to [@SteveCote](https://github.com/steveCote)

## 4.2.3

- Updated the Polly.Net40Async NuGet package to enable async via the SUPPORTSASYNC constant. Cleaned up the build scripts in order to ensure unnecessary DLL references are not included within each of the framework targets.  Thanks to [@reisenberger](https://github.com/reisenberger) and [@joelhulen](https://github.com/joelhulen)

## 4.2.2

- Add new Polly.Net40Async project/package supporting async for .NET40 via Microsoft.Bcl.Async.  Thanks to [@Lumirris](https://github.com/Lumirris)

## 4.2.1

- Allowed async onRetry delegates to async retry policies.  Thanks to [@reisenberger](https://github.com/reisenberger)

## 4.2.0

- Add AdvancedCircuitBreaker.  Thanks to [@reisenberger](https://github.com/reisenberger) and [@kristianhald](https://github.com/kristianhald)

## 4.1.2

- Fixed an issue with the onReset delegate of the CircuitBreaker.

## 4.1.1

- Add ExecuteAndCapture support with arbitrary context data - Thanks to [@reisenberger](https://github.com/reisenberger)

## 4.1.0

- Add Wait and retry forever policy - Thanks to [@nedstoyanov](https://github.com/nedstoyanov)
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to [@reisenberger](https://github.com/reisenberger)

## 4.0.0

- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state
- Thanks to [@reisenberger](https://github.com/reisenberger)

## 3.0.0

- Add cancellation support for all async Policy execution - Thanks to [@reisenberger](https://github.com/reisenberger)

## 2.2.7

- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to [@reisenberger](https://github.com/reisenberger)
- Fixes excess line ending issues

## 2.2.6

- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to [@yevhen](https://github.com/yevhen)

## 2.2.5

- Policies with a retry count of zero are now allowed - Thanks to [@nelsonghezzi](https://github.com/nelsonghezzi)

## 2.2.4

- Add .NET Core support

## 2.2.3

- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture` - Thanks to [@ThomasMentzel](https://github.com/ThomasMentzel)

## 2.2.2

- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls - Thanks to [Hacko](https://github.com/hacko-bede)

## 2.2.1

- Replaced non-blocking sleep implementation with a blocking one for PCL

## 2.2.0

- Added Async Support (PCL)
- PCL Profile updated from Profile78 ->  Profile 259
- Added missing WaitAndRetryAsync overload

## 2.1.0

- Added Async Support (.NET Framework 4.5 Only) - Massive thanks to  [@mauricedb](https://github.com/mauricedb) for the implementation

## 2.0.0

- Added Portable Class Library ([Issue #4](https://github.com/michael-wolfenden/Polly/issues/4)) - Thanks to  [@ghuntley](https://github.com/ghuntley) for the implementation
- The `Polly` NuGet package is now no longer strongly named. The strongly named NuGet package is now `Polly-Signed` ([Issue #5](https://github.com/michael-wolfenden/Polly/issues/5))

## 1.1.0

- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution ([Issue #1](https://github.com/michael-wolfenden/Polly/issues/1))

repository: App-vNext/Polly

gha_language: C#

repo_name: App-vNext/Polly


text:
# Manipulate UEFI variables

The first 4 bytes are flags (little-endian),
followed by a null-terminated string in UTF16-le.

## systemd-boot
UUID: Lo4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Variable storing default entry: LoaderEntryDefault
Variable storing nextboot (once): LoaderEntryOneShot

Example path: /sys/firmware/efi/efivars/LoaderEntryOneShot-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

Value is the name of loader entry file without its extension.
e.g. /boot/efi/loader/entries/arch-lts.conf => "arch-lts"

## Read var
raw_val = Path('/sys/firmware/efi/efivars/LoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f').read_bytes()
# flags, = struct.unpack('<L', raw_val[:4])
flags = int.from_bytes(raw_val[:4], byteorder='little')
val = raw_val[4:].decode('utf_16_le')[:-1]

## Common flags

#define EFI_VARIABLE_NON_VOLATILE       0x0000000000000001  # Value is not cleared on reboot/poweroff
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002  # Requirement for EFI_VARIABLE_RUNTIME_ACCESS
#define EFI_VARIABLE_RUNTIME_ACCESS     0x0000000000000004  # Accessible by the booted OS

More variables in [3]
Detailed description in [4]

[1] https://firmware.intel.com/blog/accessing-uefi-variables-linux
[2] https://blog.fpmurphy.com/2012/12/efivars-and-efivarfs.html
[3] https://github.com/torvalds/linux/blob/c4db9c1e8c70bc60e392da8a485bcfb035d559c2/include/linux/efi.h#L1192
[4] http://wiki.phoenix.com/wiki/index.php/EFI_RUNTIME_SERVICES

license: MIT

repository: simonbru/nextboot

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: simonbru/nextboot


text:
## Test environments
* local ubuntu 18.04.2, R 3.6.1
* win-builder (devel)

## R CMD check results
There were no ERRORs or WARNINGs.

There was 1 NOTE:

* checking CRAN incoming feasibility ... NOTE
  Maintainer: ‘Austin Nar<EMAIL_ADDRESS>  New submission

## Downstream dependencies
None (new package)

## Fixes from previous rejected submissions
* Fixed title case in DESCRIPTION file
* Added protocol 'http://' to web link in vignette tabulog.Rmd
* Added 'Value' sections to documentation
* Modified the NOT RUN sections of examples that write to disk by using tempfile()
    - These examples are now run
* Added single quotes to 'Apache' in DESCRIPTION file

repository: austinrwarner/tabulog

repo_name: austinrwarner/tabulog


text:
# Fusicoccum sardoa (Pass.) Vanev SPECIES

#### Status
ACCEPTED

#### According to
Index Fungorum

#### Published in
in van der Aa & Vanev, A Revision of the Species Described in Phyllosticta (Utrecht) 414 (2002)

#### Original name
Phyllosticta sardoa Pass.

### Remarks
null

repository: mdoering/backbone

repo_name: mdoering/backbone


text:
[![Go Report Card](https://goreportcard.com/badge/github.com/shawnps/budget)](https://goreportcard.com/report/github.com/shawnps/budget)

# budget
Simple command-line budget tool.

## How to use
`go get github.com/shawnps/budget`

`mkdir budget`

Filenames must use format `YYYYMM.txt`:

`budget/202105.txt`

Files must be in following format:

```
1000
5.50 sushi
10.50 sushi
15.00 sushi
8.00 book
3.00 coffee
10.00 book
8.00 sushi
4.00 coffee
3.00 coffee
```

The top number is the total you want to spend per month. Each line after is something you bought.

Either call the command from one directory outside of `budget/`, or provide the directory with `-d`.

```
$ budget -m 202105
Total:         1000.00
Remaining:     933.00
Remaining/day: 42.41
Top costs:
    sushi:  39.00
    book:   18.00
    coffee: 10.00
```

## Tags

You can also create tags in a tags.txt file:

```
food: sushi, coffee
books: book
```

then pass the `-short` flag:

```
$ budget -m 202105 -short
Total:         1000.00
Remaining:     933.00
Remaining/day: 42.41
Costs:
    food:  49.00
    books: 18.00
```

## You might also like
[Ledger](http://www.ledger-cli.org/index.html)

[YNAB](https://www.youneedabudget.com/)

[Personal Finance Reddit](http://personalfinance.reddit.com/)

repository: shawnps/budget

gha_language: Go

repo_name: shawnps/budget


text:
# AWS Global and IAM Condition Context Keys

The `Condition` element of an JSON policy in IAM allows you to test the value of keys that are included in the evaluation context of all AWS API requests\. These keys provide information about the request itself, or the resources that the request references\. You can check that keys have specified values before allowing the action requested by the user\. This gives you granular control over when your JSON policy statements match or don't match an incoming API request\. For information about how to use the `Condition` element in an JSON policy, see [IAM JSON Policy Elements: Condition](reference_policies_elements_condition.md)\.

This topic describes the globally available keys \(with an "aws:" prefix\), as well as the keys defined and provided by the IAM service \(with an "iam:" prefix\)\. Several other AWS services also provide service\-specific keys that are relevant to the actions and resources defined by that service\. For more information, see [Actions, Resources, and Condition Keys for AWS Services](reference_policies_actions-resources-contextkeys.md)\. The documentation for a service that supports condition keys often has additional information\. For example, for information about keys that you can use in policies for Amazon S3 resources, see [Amazon S3 Policy Keys](http://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html#AvailableKeys-iamV2) in the *Amazon Simple Storage Service Developer Guide*\.

**Note**
If you use condition keys that are available only in some scenarios \(such as aws:SourceIp and aws:SourceVpc\) you can use the [IfExists](reference_policies_elements_condition_operators.md#Conditions_IfExists) versions of the comparison operators\. If the condition keys are missing from a request context \(and you haven't set IfExists\), the policy engine can fail the evaluation\. For example, if you want to write a policy that restricts access from a particular IP range or from a particular VPC, you can construct the conditions as follows:
`"Condition": {"IpAddressIfExists": {"aws:SourceIp" : ["xxx"] }, "StringEqualsIfExists" : {"aws:SourceVpc" : ["yyy"]} }`
This condition matches \(1\) if the aws:SourceIp context key exists and has the value xxx **or** \(2\) if the aws:SourceVpc context key exists and has the value yyy\. If either or both keys do not exist, the condition still matches\. The test is only made if the specified key exists in the request context\. If it is not there, it is treated as "I don't care"\.

**Topics**
+ [Available Global Condition Keys](#AvailableKeys)
+ [Available Keys for IAM](#available-keys-for-iam)
+ [Available Keys for Web Identity Federation](#condition-keys-wif)
+ [Available Keys for SAML\-Based Federation](#condition-keys-saml)

## Available Global Condition Keys

 AWS provides the following predefined condition keys for all AWS services that support IAM for access control:

**aws:CurrentTime**
Works with [date operators](reference_policies_elements_condition_operators.md#Conditions_Date)\.
The current date and time to check for date/time conditions\.

**aws:EpochTime**
Works with [date operators](reference_policies_elements_condition_operators.md#Conditions_Date)\.
The current date and time in epoch or UNIX time to check for date/time conditions\.

**aws:TokenIssueTime**
Works with [date operators](reference_policies_elements_condition_operators.md#Conditions_Date)\.
Checks the date/time that temporary security credentials were issued\. This key is only present in requests that are signed using temporary security credentials\. For more information about temporary security credentials, see [Temporary Security Credentials](id_credentials_temp.md)\.

**aws:MultiFactorAuthPresent**
Works with [boolean operators](reference_policies_elements_condition_operators.md#Conditions_Boolean)\.
Checks whether multi\-factor authentication \(MFA\) was used to validate the temporary security credentials that made the current request\. This key is present in the request context only when the user uses temporary credentials to call the API\. Such credentials are used with IAM roles, federated users, IAM users with credentials from `sts:GetSessionToken`, and users of the AWS Management Console\. \(The console uses temporary credentials that are generated on the users' behalf in the background\.\) The `aws:MultiFactorAuthPresent` key is never present when an API or CLI command is called with long\-term credentials, such as standard access key pairs\. Therefore we recommend that when you check for this key that you use the `[\.\.\.IfExists](reference_policies_elements_condition_operators.md#Conditions_IfExists)` versions of the condition operators\.
It is important to understand that the following Condition element is ***not*** a reliable way to check for the use of MFA:

```
#####     THIS EXAMPLE DOES NOT WORK      #####

"Condition" : { "Bool" : { "aws:MultiFactorAuthPresent" : false } }
```
This is because when long\-term credentials are used, the `aws:MultiFactorAuthPresent` key is not present in the request and the test *always* fails, resulting in a non\-match\. Instead, we recommend that you use the [`BoolIfExists`](reference_policies_elements_condition_operators.md#Conditions_IfExists) operator to check the value\. For example::

```
    "Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : false } }
```
The `*IfExists` operator indicates that the statement matches either if the value exists and has the value of "false" **or** if the value does not exist\. `*IfExists` means that you only care about the value if it is used\. Use this when you don't want the match to fail when the value is not used\.
***Do not*** use a policy construct similar to the following to check whether the MFA key is present:

```
#####     THIS EXAMPLE DOES NOT WORK      #####

"Action" : "Deny",
"Condition" : { "Null" : { "aws:MultiFactorAuthPresent" : true } }
```
You might expect the previous example to deny access if MFA is not used\. However, when you make an API request with long\-term credentials \(access keys\), the MFA condition context keys are *always* missing\. Consequently, testing for MFA this way always results in denied access to long\-term credentials\.

**aws:MultiFactorAuthAge**
Works with [numeric operators](reference_policies_elements_condition_operators.md#Conditions_Numeric)\.
Checks how long ago \(in seconds\) the MFA\-validated security credentials making the request were issued using multi\-factor authentication \(MFA\)\. If MFA was not used, this key is not present\. See [Using Multi\-Factor Authentication \(MFA\) in AWS](id_credentials_mfa.md)\. Therefore, this is another key with which you should consider using the [\*IfExists](reference_policies_elements_condition_operators.md#Conditions_IfExists) versions of the comparison operators\. This ensures that the results of the comparison are what you expect even when the key is not present in the request context\.

**aws:PrincipalType**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks the type of principal \(user, account, federated user, etc\.\) for the current request\.

**aws:Referer**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks who referred the client browser to the address the request is being sent to\. It is only supported by some services, such as [Amazon S3, as a service that can be directly addressed by a web browser](http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-4)\. The value comes from the referer header in the HTTPS request made to AWS\.
This key should be used carefully: `aws:referer` allows Amazon S3 bucket owners to help prevent their content from being served up by unauthorized third\-party sites to standard web browsers For more information, see the link in the previous paragraph\. Since the `aws:referer` value is provided by the caller in an http header, unauthorized parties can use modified or custom browsers to provide any `aws:referer` value that they choose\. As a result, `aws:referer` should not be used to prevent unauthorized parties from making direct AWS requests\. It is offered only to allow customers to protect their digital content, stored in Amazon S3, from being referenced on unauthorized, third\-party sites\.

**aws:RequestTag/*tag\-key***
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This context key is formatted "aws:RequestTag/*tag\-key*":"*tag\-value*" where *tag\-key* and *tag\-value* are a tag key and value pair\.
Checks a tag and its value in an AWS request\. For example, you could check to see that the request includes the tag key "Dept" and that it has the value "Accounting"\.
This AWS condition key was [introduced for Amazon EC2](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) and is supported by a limited number of additional services\. Check your service to see whether it supports using this condition key\.

**aws:RequestedRegion**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks that an AWS request is made to a specific region\. You can use this global condition key to control which regions your users can make calls to, regardless of whether the AWS service supports region\-level controls\. To view the AWS regions for each service, see [AWS Regions and Endpoints](http://docs.aws.amazon.com/general/latest/gr/rande.html) in the *Amazon Web Services General Reference*\.
You can use this context key to limit access to AWS services within a given set of regions\. For example, to deny access to AWS services that are not in Frankfurt \(eu\-central\-1\) or Ireland \(eu\-west\-1\), use the following policy:

```
{
    "Sid": "Deny_All_Outside_EU",
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {"StringNotEquals": {"aws:RequestedRegion": [
        "eu-central-1",
        "eu-west-1"
    ]}}
}
```
This policy denies access to all actions and resources when the call is submitted to a region other than eu\-central\-1 or eu\-west\-1\. This policy does not grant access and must be used with another policy or statement\.

**aws:SecureTransport**
Works with [boolean operators](reference_policies_elements_condition_operators.md#Conditions_Boolean)\.
Checks whether the request was sent using SSL\.

**aws:SourceAccount**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks that the source of the request comes from a specific account\. For example, if an S3 bucket in your account is configured to deliver object creation events to an SNS topic, use this condition key to check that Amazon S3 is not being used as a confused deputy\. Amazon S3 tells SNS the account that the bucket belongs to\.
This condition key is available for only some services\.

**aws:SourceArn**
Works with [ARN operators](reference_policies_elements_condition_operators.md#Conditions_ARN)\.
Checks the source of the request, using the [Amazon Resource Name \(ARN\)](reference_identifiers.md#identifiers-arns) of the source\.
This condition key is available for only some services\.

**aws:SourceIp**
Works with [IP address operators](reference_policies_elements_condition_operators.md#Conditions_IPAddress)\.
Checks the requester's IP address, see [IP Address Condition Operators](reference_policies_elements_condition_operators.md#Conditions_IPAddress)\.
The `aws:SourceIp` condition key should be used in a JSON policy only for IAM users, groups, roles, or federated users that make API calls from within the specified IP range\. This policy denies access to an AWS service that makes calls on your behalf\. For example, assume that you have a [service role](id_roles_terms-and-concepts.md#iam-term-service-role) that allows AWS CloudFormation to call Amazon EC2 to stop an instance\. In that case, the request is denied because the target service \(EC2\) sees the IP address of the calling service \(AWS CloudFormation\) rather than the IP address of the originating user\. There is no way to pass the originating IP address through a calling service to the target service for evaluation in a JSON policy\.
If the request comes from a host that uses an Amazon VPC endpoint, then the `aws:SourceIp` key is not available\. You should instead use a VPC\-specific key\. For more information, see [VPC Endpoints \- Controlling the Use of Endpoints](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-iam-access) in the *Amazon VPC User Guide*\.

**aws:SourceVpc**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
To restrict access to a specific VPC\. For more information, see [Restricting Access to a Specific VPC](http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-access-vpc) in the *Amazon Simple Storage Service Developer Guide*\. \(This condition key is supported for traffic to an AWS service over a VPC endpoint\.\)

**aws:SourceVpce**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
To restrict access to a specific VPC endpoint\. For more information, see [Restricting Access to a Specific VPC Endpoint](http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-access-vpc-endpoint) in the *Amazon Simple Storage Service Developer Guide*\.

**aws:TagKeys**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This context key is formatted "aws:TagKeys":"*tag\-key*" where *tag\-key* is a list of tag keys without values \(for example, `["Dept","Cost-Center"]`\)\.
Checks the tag keys that are present in an AWS request\. This AWS condition key was [introduced for Amazon EC2](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) and is supported by a limited number of additional services\. Check your service to see whether it supports using this condition key\.

**aws:UserAgent**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks the requester's client application\.

**aws:userid**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks the requester's user ID\.

**aws:username**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
Checks the requester's user name\.

## Available Keys for IAM

You can use the following condition keys in policies that control access to IAM resources:

**iam:PolicyArn**
Works with [ARN operators](reference_policies_elements_condition_operators.md#Conditions_ARN)\.
Checks the Amazon Resource Name \(ARN\) of a managed policy in requests that involve a managed policy\. For more information, see [Controlling Access to Policies](access_controlling.md#access_controlling-policies)\.

## Available Keys for Web Identity Federation

You can use web identity federation to give temporary security credentials to users who have been authenticated using an identity provider \(IdP\) such as Login with Amazon, Amazon Cognito, Google, or Facebook\. In that case, additional condition keys are available when the temporary security credentials are used to make a request\. You can use these keys to write policies that make sure that federated users can get access only to resources that are associated with a specific provider, app, or user\.

**aws:FederatedProvider**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
The FederatedProvider key identifies which of the IdPs was used to authenticate the user\. For example, if the user authenticated using Amazon Cognito, the key would contain `cognito-identity.amazonaws.com`\. Similarly, if the user authenticated using Login with Amazon, the key would contain the value `www.amazon.com`\. You might use the key in a resource policy like the following, which uses the `aws:FederatedProvider` key as a policy variable in the ARN of a resource\. The policy allows any user who has been authenticated using an IdP to get objects out of a folder in an Amazon S3 bucket\. However, the bucket must be specific to the provider that the user authenticates with\.

```
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::BUCKET-NAME/${aws:FederatedProvider}/*"
  }
}
```

**Application ID and User ID**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
You can also use two keys that provide a unique identifier for the user and an identifier for the application or site that the user authenticated with\. These keys have the following IdP\-specific names:
+ For Amazon Cognito users, the keys are `cognito-identity.amazonaws.com:aud` \(for the identity pool ID\) and `cognito-identity.amazonaws.com:sub` \(for the user ID\)\.
+ For Login with Amazon users, the keys are `www.amazon.com:app_id` and `www.amazon.com:user_id`
+ For Facebook users, the keys are `graph.facebook.com:app_id` and `graph.facebook.com:id`
+ For Google users, the keys are `accounts.google.com:aud` \(for the app ID\) and `accounts.google.com:sub` \(for the user ID\)\.

**The amr Key in Amazon Cognito**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
If you are using Amazon Cognito for web identity federation, the `cognito-identity.amazonaws.com:amr` key \(Authentication Methods Reference\) in a trust policy includes login information about the user\. The key is multivalued, meaning that you test it in a policy using [condition set operators](reference_policies_multi-value-conditions.md)\. The key can contain the following values:
+ If the user is unauthenticated, the key contains only `unauthenticated`\.
+ If the user is authenticated, the key contains the value `authenticated` and the name of the login provider used in the call \(`graph.facebook.com`, `accounts.google.com`, or `www.amazon.com`\)\.
As an example, the following condition in the trust policy for an Amazon Cognito role tests whether the user is unauthenticated:

```
"Condition": {
  "StringEquals":
    { "cognito-identity.amazonaws.com:aud": "us-east-2:identity-pool-id" },
  "ForAnyValue:StringLike":
    { "cognito-identity.amazonaws.com:amr": "unauthenticated" }
}
```

**More Information About Web Identity Federation**
For more information about web identity federation, see the following:
+ [Amazon Cognito Overview](http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-auth.html#d0e840) in the *AWS Mobile SDK for Android Developer Guide* guide
+ [Amazon Cognito Overview](http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html#d0e664) in the *AWS Mobile SDK for iOS Developer Guide* guide
+ [About Web Identity Federation](id_roles_providers_oidc.md)

## Available Keys for SAML\-Based Federation

If you are working with [SAML\-based federation](http://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html), you can include additional condition keys in the policy\.

### Trust Policies

In the trust policy of a role, you can include the following keys, which help you establish whether the caller is allowed to assume the role\. Except for `saml:doc`, all the values are derived from the SAML assertion\. Items in the list that are marked with an asterisk \(\*\) are available in the console UI to create conditions\. Items marked with **\[\]** *can* have a value that is a list of the specified type\.

**saml:aud**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
An endpoint URL to which SAML assertions are presented\. The value for this key comes from the SAML Recipient field in the assertion, ***not ***the Audience field\.

**saml:cn**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduOrg` attribute\.

**saml:doc**\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This represents the principal that was used to assume the role\. The format is *account\-ID*/*provider\-friendly\-name*, such as `123456789012/SAMLProviderName`\. The *account\-ID* value refers to the account that owns the [SAML provider](id_roles_providers_create_saml.md)\.

**saml:edupersonaffiliation**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonassurance**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonentitlement**\[\]\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonnickname**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonorgdn**\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonorgunitdn**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonprimaryaffiliation**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonprimaryorgunitdn**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonprincipalname**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersonscopedaffiliation**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:edupersontargetedid**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduPerson` attribute\.

**saml:eduorghomepageuri**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduOrg` attribute\.

**saml:eduorgidentityauthnpolicyuri**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduOrg` attribute\.

**saml:eduorglegalname**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduOrg` attribute\.

**saml:eduorgsuperioruri**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduOrg` attribute\.

**saml:eduorgwhitepagesuri**\[\]
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is an `eduOrg` attribute\.

**saml:namequalifier**\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
A hash value based on the concatenation of the `Issuer` response value \(`saml:iss`\), the `AWS` account ID and the friendly name \(the last part of the ARN\) of the SAML provider in IAM, separated by a '/' character\. The concatenation of the account ID and friendly name of the SAML provider is available to IAM policies as the key `saml:doc`\. For more information, see [Uniquely Identifying Users in SAML\-Based Federation](id_roles_providers_saml.md#CreatingSAML-userid)\.

**saml:iss**\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
The issuer, which is represented by a URN\.

**saml:sub**\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is the subject of the claim, which includes a value that uniquely identifies an individual user within an organization \(for example, `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`\)\.

**saml:sub\_type**\*
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This key can have the value "persistent", "transient", or consist of the full `Format` URI from the `Subject` and `NameID` elements used in your SAML assertion\. A value of "persistent" indicates that the value in `saml:sub` is the same for a user between sessions\. If the value is "transient", the user has a different `saml:sub` value for each session\. For information about the `NameID` element's `Format` attribute, see [Configuring SAML Assertions for the Authentication Response](id_roles_providers_create_saml_assertions.md)\.

For general information about `eduPerson` and `eduOrg` attributes, see the [Internet2 website](https://www.internet2.edu/products-services/trust-identity-middleware/eduperson-eduorg/eduperson-eduorg-documentation/)\. For a list of `eduPerson` attributes, see [eduPerson Object Class Specification \(201203\)](https://www.internet2.edu/media/medialibrary/2013/09/04/internet2-mace-dir-eduperson-201203.html)\.

Condition keys whose type is a list can include multiple values\. To create conditions in the policy for list values, you can use [set operators](reference_policies_multi-value-conditions.md) \(`ForAllValues`, `ForAnyValue`\)\. For example, to allow any user whose affiliation is "faculty", "staff", or "employee" \(but not "student", "alum", or other possible affiliations\), you might use a condition like the following:

```
"Condition": {
   "ForAllValues:StringLike": {
     "saml:edupersonaffiliation":[ "faculty", "staff", "employee" ]
   }
}
```

### Permission \(Access\) Policies

In the permission policy of a role for SAML federation that defines what users are allowed to access in AWS, you can include the following keys:

**saml:namequalifier**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This contains a hash value that represents the combination of the `saml:doc` and `saml:iss` values\. It is used as a namespace qualifier; the combination of `saml:namequalifier` and `saml:sub` uniquely identifies a user\.

**saml:sub**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This is the subject of the claim, which includes a value that uniquely identifies an individual user within an organization \(for example, `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`\)\.

**saml:sub\_type**
Works with [string operators](reference_policies_elements_condition_operators.md#Conditions_String)\.
This key can have the value "persistent", "transient", or consist of the full `Format` URI from the `Subject` and `NameID` elements used in your SAML assertion\. A value of "persistent" indicates that the value in `saml:sub` is the same for a user between sessions\. If the value is "transient", the user has a different `saml:sub` value for each session\. For information about the `NameID` element's `Format` attribute, see [Configuring SAML Assertions for the Authentication Response](id_roles_providers_create_saml_assertions.md)\.

For more information about using these keys, see [About SAML 2\.0\-based Federation](id_roles_providers_saml.md)\.

repository: awsenespanol/iam-user-guide-es

repo_name: awsenespanol/iam-user-guide-es


text:
Symfony Standard Edition - AS docker edition
========================

See [DOCS](https://symfony.com/doc/current/index.html) for more details.

Requirements
---
 * configure Your local [projects enrironment](https://bitbucket.org/as-docker/projects-environment)
 * [optional] install composer globally [global composer command](https://hub.docker.com/r/amsdard/composer/)
 * make sure You have [YAKE](https://yake.amsdard.io/) installed

Create project
---
* git only way
```
git clone git@github.com:amsdard/symfony-standard.git project-name
# cd to project directory
yake composer install
```
* global `composer` way
```
composer create-project amsdard/symfony-standard project-name
```

First project install
---
```
yake configure-docker
# configure each "./docker/*/config.env"
yake up
yake console assetic:watch   # run in background
```
* directory name `project-name` will become Your domain name: `project-name.app` and Your container's image tag namespace
* remove YAKE `configure-docker` task from `Yakefile`
* update `composer.json` by Your project name, description
* do not use `require-dev` in composer.json (keep common vendors)
* if You want to use local composer (based on PHP image) - RECOMMENDED:
```
curl -fsSL 'https://getcomposer.org/composer.phar' -o ./composer.phar
```
and replace YAKE *composer* task by:
```
composer: $BIN php ./composer.phar --optimize-autoloader $CMD
```
* run `yake console assetic:watch` in background to work with assets
* `yake console assetic:dump --env=prod --no-debug` before deploy

Deploy (dev / rancher)
---
```
yake push php
yake push nginx
```
* import `./deploy/rancher/docker-compose.yml` into Rancher + complete ENVs
* make sure `mysql` works on specific host (Scheduling)
* make sure `nginx` has *Health Check* enabled

Deploy (prod)
---
```
yake push php
yake push nginx
```
* import `./deploy/prod/docker-compose.yml` into server + copy ENV files from `docker` directory
* `docker-compose pull --parallel --quiet`
* `docker-compose up -d --force-recreate`

repository: amsdard/symfony-standard

repo_name: amsdard/symfony-standard


text:
### How can I create a new notebook?
Tap on the plus symbol in the top right corner, you will then be able to choose a title and a cover for your notebook.

### How can i copy, paste or delete a notebook?
Make a long tap on the notebook until you feel a vibration, then tap on the notebook again and you will see a menu appear.

### How does the notebook search work?
When you search for a specific keyword all notebooks cantaining the keyword in their title or any of their pages will be shown.

### How do I create a folder?
To create a folder long tap on a notebook until you feel a vibration, then drag two notebooks one over the other and release the dragged notebook.

### How do I take a notebook out of a folder?
To take a notebook out of a folder long tap on a notebook until you feel a vibration, then drag the notebook outside of the folder until the folder is colsed.

### Why am I not allowed to move notebooks?
Make sure you are not filtering the notebooks by searching for a keyword.

### How do I add a new page?
To add a new page tap on the plus sign in the bottom right corner, then select which page type you want to add.

### When importing images or a PDF, do I have to add a title to every page?
No, simply tap on the double arrow on the right and the current title will be used for all upcoming pages.

### How do I choose a custom line or square size/color?
When adding a lined or squared page use the slider to change the size and tap on the page preview to change the line color.

### How do I add an image to a page?
To add an image to a page simply tap on the image button (second from the right) at the bottom on the screen.

### How do I add a text view to a page?
To add a text view to a page simply tap on the text button (third from the right) at the bottom on the screen.

### How do I draw on a page?
To draw on a page simply tap on the pencil button (second from the left) at the bottom on the screen.

### How do I export a notebook or a page?
To draw export the whole notebook or only some selected pages tap on the export button in the bottom left corner of the screen.

### How do I edit the notebook's title or cover?
To edit the notebook's title or cover simply tap on the top right button.

### How do I see all the pages?
To see all the notebook's pages simply tap on the second button from the right at the top of the screen.

### How do I delete, rename, copy or paste one or more pages?
To delete, rename or copy one or more pages simply long tap on any page until you feel a vibration, then select the pages by tapping on them, then long tap on any selected page to see a menu appear.

### How do I move a page?
To move a page simply long tap on any page until you feel a vibration, then long tap on the page you want to move and drag it to the desired position.

### How do I close a notebook?
To close a notebook simply tap on the backwards arrow (top left button).

### Still didn't find a solution?
Contact me at<EMAIL_ADDRESS>

repository: Davaff/OpenNotebooks

branch_name: refs/heads/main

repo_name: Davaff/OpenNotebooks


text:
Before executing the end solution provided for Exercise 1, execute the following steps:

- **Enable SSL** from the properties of the ExpenseReport project.
- Update the **project URL** in the **Web** tab of the ExpenseReport project properties in the _Use Local IIS Web server_ section with the SSL URL obtained from the previous step.
- Update the **App URL** of the configured application in the Microsoft Azure Management Portal with the SSL URL obtained from the first step.
- In the **Web.config** file, update the following sections:

	- The _[APP-ID-URI]_ placeholder from the **audienceUris** in the **system.identityModel** section with your **App ID URI**.
	- The _[APP-ID-URI]_ placeholder from the **realm** attribute from the **federationConfiguration** element in the  **system.identityModel.services** section with your **App ID URI**
	- The _[YOUR-DIRECTORY-NAME]_ placeholder from the **issuer** attribute from the **federationConfiguration** element in the  **system.identityModel.services** section  with your directory name (without spaces)
	- The _[FEDERATION-METADATA-DOCUMENT]_ placeholder for the  **ida:FederationMetadataLocation** key in the **AppSettings**
	- The _[APP-ID-URI]_ placeholder for the  **ida:Realm** key in the **AppSettings**
	- The _[APP-ID-URI]_ placeholder for the  **ida:AudienceUri** key in the **AppSettings**

For more information, check Task 2 and Task 3 from exercise 1 in the HOL.md document.

gha_license_id: NOASSERTION


text:
# Time Cat
Time Cat is a program to add timestamps to text. It is useful for adding timestamps to the logs of long running operations, so that you can easily monitor the progress and time elapsed.

Time Cat has no options or configuration. It simple reads from `stdin` and echoes the input to `stdout` prepended with a timestamp and a single tab character.

```
$ echo "Hello world" | tcat
2014-02-06T21:12:13UTC  Hello world
```

## Usage
The following is the ouput from the `ping` command:
```
$ ping -c 3 github.com
PING github.com (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=49 time=104.271 ms
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=49 time=111.290 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=49 time=117.178 ms

--- github.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 104.271/110.913/117.178/5.276 ms
```
The following is the same command, but this time the output has been piped through `tcat` to add a timestamp to each line.
```
$ ping -c 3 github.com | tcat
2014-02-06T21:11:37UTC  PING github.com (<IP_ADDRESS>): 56 data bytes
2014-02-06T21:11:37UTC  64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=53 time=242.162 ms
2014-02-06T21:11:38UTC  64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=53 time=238.695 ms
2014-02-06T21:11:39UTC  64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=53 time=231.438 ms
2014-02-06T21:11:39UTC
2014-02-06T21:11:39UTC  --- github.com ping statistics ---
2014-02-06T21:11:39UTC  3 packets transmitted, 3 packets received, 0.0% packet loss
2014-02-06T21:11:39UTC  round-trip min/avg/max/stddev = 231.438/237.432/242.162/4.468 ms
```

## Advanced Usage
Time Cat prepends each line of input with a timestamp followed by a single tab character. This means that it is very easy to remove the timestamps again. You can use `cut -f 2`, for example.
```
$ echo foo
foo
$ echo foo | tcat
2014-02-06T21:14:16UTC  foo
$ echo foo | tcat | cut -f 2
foo
```

## License
Time Cat is released under the [MIT License](http://www.opensource.org/licenses/MIT).